[josm] 01/05: New upstream version 0.0.svn12712+dfsg

Bas Couwenberg sebastic at debian.org
Sun Sep 3 09:35:02 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 245a15ca63b0d1cdcbdb7ec00a7dc91db03c7fd8
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Sep 3 10:57:04 2017 +0200

    New upstream version 0.0.svn12712+dfsg
---
 .checkstyle                                        |    1 +
 .classpath                                         |    3 +-
 README                                             |    4 +-
 REVISION                                           |   10 +-
 build.xml                                          |   79 +-
 data/defaultpresets.xml                            |   54 +-
 data/validator/combinations.mapcss                 |    6 +-
 data/validator/geometry.mapcss                     |   33 +-
 data/validator/highway.mapcss                      |    6 +-
 data/validator/ignoretags.cfg                      |    6 +-
 data/validator/territories.mapcss                  |   32 +-
 data_nodist/trans/da.lang                          |  Bin 10485 -> 10915 bytes
 data_nodist/trans/es.lang                          |  Bin 12546 -> 12997 bytes
 data_nodist/trans/fr.lang                          |  Bin 12170 -> 12638 bytes
 data_nodist/trans/hu.lang                          |  Bin 13382 -> 13339 bytes
 data_nodist/trans/it.lang                          |  Bin 10297 -> 10308 bytes
 data_nodist/trans/lt.lang                          |  Bin 2041 -> 2094 bytes
 data_nodist/trans/pl.lang                          |  Bin 2860 -> 5910 bytes
 i18n/po/af.po                                      | 1679 ++++++++--------
 i18n/po/am.po                                      | 1679 ++++++++--------
 i18n/po/ar.po                                      | 1703 ++++++++--------
 i18n/po/ast.po                                     | 1771 ++++++++--------
 i18n/po/az.po                                      | 1679 ++++++++--------
 i18n/po/be.po                                      | 1781 +++++++++--------
 i18n/po/bg.po                                      | 1703 ++++++++--------
 i18n/po/bn.po                                      | 1681 ++++++++--------
 i18n/po/br.po                                      | 1687 ++++++++--------
 i18n/po/bs.po                                      | 1689 ++++++++--------
 i18n/po/ca.po                                      | 1779 +++++++++--------
 i18n/po/ca at valencia.po                             | 1765 ++++++++--------
 i18n/po/cs.po                                      | 1787 +++++++++--------
 i18n/po/cy.po                                      | 1679 ++++++++--------
 i18n/po/da.po                                      | 1915 +++++++++---------
 i18n/po/de.po                                      | 1839 +++++++++--------
 i18n/po/de_DE.po                                   | 1683 ++++++++--------
 i18n/po/el.po                                      | 1749 ++++++++--------
 i18n/po/en_AU.po                                   | 1717 ++++++++--------
 i18n/po/en_CA.po                                   | 1685 ++++++++--------
 i18n/po/en_GB.po                                   | 1757 ++++++++--------
 i18n/po/eo.po                                      | 1675 ++++++++--------
 i18n/po/es.po                                      | 1811 +++++++++--------
 i18n/po/et.po                                      | 1753 ++++++++--------
 i18n/po/eu.po                                      | 1709 ++++++++--------
 i18n/po/fa.po                                      | 1683 ++++++++--------
 i18n/po/fi.po                                      | 1745 ++++++++--------
 i18n/po/fil.po                                     | 1679 ++++++++--------
 i18n/po/fo.po                                      | 1679 ++++++++--------
 i18n/po/fr.po                                      | 1822 +++++++++--------
 i18n/po/ga.po                                      | 1679 ++++++++--------
 i18n/po/gl.po                                      | 1757 ++++++++--------
 i18n/po/he.po                                      | 1685 ++++++++--------
 i18n/po/hi.po                                      | 1679 ++++++++--------
 i18n/po/hr.po                                      | 1689 ++++++++--------
 i18n/po/ht.po                                      | 1679 ++++++++--------
 i18n/po/hu.po                                      | 1803 +++++++++--------
 i18n/po/hy.po                                      | 1679 ++++++++--------
 i18n/po/ia.po                                      | 1679 ++++++++--------
 i18n/po/id.po                                      | 1735 ++++++++--------
 i18n/po/is.po                                      | 1693 ++++++++--------
 i18n/po/it.po                                      | 1799 +++++++++--------
 i18n/po/ja.po                                      | 1802 +++++++++--------
 i18n/po/ka.po                                      | 1687 ++++++++--------
 i18n/po/km.po                                      | 1745 ++++++++--------
 i18n/po/ko.po                                      | 1747 ++++++++--------
 i18n/po/ku.po                                      | 1679 ++++++++--------
 i18n/po/ky.po                                      | 1679 ++++++++--------
 i18n/po/lb.po                                      | 1679 ++++++++--------
 i18n/po/lo.po                                      | 1687 ++++++++--------
 i18n/po/lt.po                                      | 1846 +++++++++--------
 i18n/po/lv.po                                      | 1685 ++++++++--------
 i18n/po/mk.po                                      | 1685 ++++++++--------
 i18n/po/mr.po                                      | 1677 ++++++++--------
 i18n/po/ms.po                                      | 1679 ++++++++--------
 i18n/po/nb.po                                      | 1687 ++++++++--------
 i18n/po/nds.po                                     | 1679 ++++++++--------
 i18n/po/nl.po                                      | 1813 +++++++++--------
 i18n/po/nn.po                                      | 1679 ++++++++--------
 i18n/po/oc.po                                      | 1677 ++++++++--------
 i18n/po/pa.po                                      | 1679 ++++++++--------
 i18n/po/pl.po                                      | 2107 +++++++++++---------
 i18n/po/pt.po                                      | 1809 +++++++++--------
 i18n/po/pt_BR.po                                   | 1789 +++++++++--------
 i18n/po/rm.po                                      | 1679 ++++++++--------
 i18n/po/ro.po                                      | 1685 ++++++++--------
 i18n/po/ru.po                                      | 1809 +++++++++--------
 i18n/po/sk.po                                      | 1813 +++++++++--------
 i18n/po/sl.po                                      | 1757 ++++++++--------
 i18n/po/sq.po                                      | 1679 ++++++++--------
 i18n/po/sr.po                                      | 1679 ++++++++--------
 i18n/po/sv.po                                      | 1713 ++++++++--------
 i18n/po/ta.po                                      | 1677 ++++++++--------
 i18n/po/te.po                                      | 1679 ++++++++--------
 i18n/po/th.po                                      | 1679 ++++++++--------
 i18n/po/tr.po                                      | 1693 ++++++++--------
 i18n/po/ug.po                                      | 1679 ++++++++--------
 i18n/po/uk.po                                      | 1811 +++++++++--------
 i18n/po/ur.po                                      | 1679 ++++++++--------
 i18n/po/vi.po                                      | 1747 ++++++++--------
 i18n/po/wae.po                                     | 1679 ++++++++--------
 i18n/po/zh_CN.po                                   | 1751 ++++++++--------
 i18n/po/zh_TW.po                                   | 1751 ++++++++--------
 images/presets/shop/charity.svg                    |  172 ++
 linux/latest/usr/bin/josm-latest                   |    3 +
 linux/tested/usr/bin/josm                          |    3 +
 netbeans/nbproject/project.properties              |    6 +-
 .../commons/jcs/engine/control/CompositeCache.java |   34 +-
 src/org/openstreetmap/josm/Main.java               |  665 ++----
 .../openstreetmap/josm/actions/AboutAction.java    |    8 +-
 .../josm/actions/AbstractInfoAction.java           |    6 +-
 .../josm/actions/AbstractPasteAction.java          |   16 +-
 .../josm/actions/ActionParameter.java              |   63 +-
 .../josm/actions/AdaptableAction.java              |   12 +-
 .../josm/actions/AddImageryLayerAction.java        |    9 +-
 .../openstreetmap/josm/actions/AddNodeAction.java  |    7 +-
 .../josm/actions/AlignInCircleAction.java          |    4 +-
 .../josm/actions/AlignInLineAction.java            |   79 +-
 .../josm/actions/AutoScaleAction.java              |   47 +-
 .../josm/actions/CloseChangesetAction.java         |   11 +-
 .../josm/actions/CombineWayAction.java             |   10 +-
 src/org/openstreetmap/josm/actions/CopyAction.java |    3 +-
 .../josm/actions/CopyCoordinatesAction.java        |    3 +
 .../josm/actions/CreateCircleAction.java           |    3 +-
 .../josm/actions/CreateMultipolygonAction.java     |   21 +-
 .../openstreetmap/josm/actions/DeleteAction.java   |    8 +-
 .../josm/actions/DeleteLayerAction.java            |    7 +-
 .../josm/actions/DialogsToggleAction.java          |   13 +-
 .../josm/actions/DistributeAction.java             |    7 +-
 .../openstreetmap/josm/actions/DownloadAction.java |   76 +-
 .../josm/actions/DownloadAlongAction.java          |    2 +-
 .../josm/actions/DownloadNotesInViewAction.java    |    7 +-
 .../josm/actions/DownloadOsmInViewAction.java      |    7 +-
 .../josm/actions/DownloadPrimitiveAction.java      |    8 +-
 .../josm/actions/DownloadReferrersAction.java      |    6 +-
 src/org/openstreetmap/josm/actions/ExitAction.java |    4 +-
 .../josm/actions/ExpertToggleAction.java           |    6 +-
 .../josm/actions/ExtensionFileFilter.java          |   48 +-
 .../josm/actions/FollowLineAction.java             |   14 +-
 .../josm/actions/FullscreenToggleAction.java       |    3 +-
 .../josm/actions/GpxExportAction.java              |    9 +-
 .../josm/actions/HistoryInfoAction.java            |    3 +-
 .../josm/actions/ImageryAdjustAction.java          |   60 +-
 src/org/openstreetmap/josm/actions/InfoAction.java |    3 +-
 .../openstreetmap/josm/actions/InfoWebAction.java  |    3 +-
 .../josm/actions/JoinAreasAction.java              |   26 +-
 .../josm/actions/JoinNodeWayAction.java            |   10 +-
 src/org/openstreetmap/josm/actions/JosmAction.java |   18 +-
 .../openstreetmap/josm/actions/JumpToAction.java   |   12 +-
 .../josm/actions/LassoModeAction.java              |   19 +-
 .../josm/actions/MapRectifierWMSmenuAction.java    |   10 +-
 .../josm/actions/MergeLayerAction.java             |   15 +-
 .../josm/actions/MergeNodesAction.java             |   63 +-
 .../openstreetmap/josm/actions/MirrorAction.java   |    4 +-
 src/org/openstreetmap/josm/actions/MoveAction.java |   17 +-
 .../openstreetmap/josm/actions/MoveNodeAction.java |    5 +-
 src/org/openstreetmap/josm/actions/NewAction.java  |    5 +-
 .../openstreetmap/josm/actions/OpenFileAction.java |   22 +-
 .../josm/actions/OpenLocationAction.java           |   12 +-
 .../josm/actions/OrthogonalizeAction.java          |   10 +-
 .../josm/actions/OverpassDownloadAction.java       |  283 ---
 .../josm/actions/ParameterizedAction.java          |   13 +
 .../josm/actions/ParameterizedActionDecorator.java |   13 +
 .../openstreetmap/josm/actions/PasteAction.java    |    4 +-
 .../josm/actions/PreferenceToggleAction.java       |   13 +
 .../openstreetmap/josm/actions/PurgeAction.java    |  154 +-
 src/org/openstreetmap/josm/actions/RedoAction.java |   15 +-
 .../openstreetmap/josm/actions/RestartAction.java  |   27 +-
 .../josm/actions/ReverseWayAction.java             |    6 +-
 .../openstreetmap/josm/actions/SaveActionBase.java |   11 +-
 .../josm/actions/SearchNotesDownloadAction.java    |    3 +-
 .../josm/actions/SelectAllAction.java              |    3 +
 .../josm/actions/SelectByInternalPointAction.java  |   12 +-
 .../SelectNonBranchingWaySequencesAction.java      |   15 +-
 .../josm/actions/SessionLoadAction.java            |   14 +-
 .../josm/actions/SessionSaveAsAction.java          |   16 +-
 .../josm/actions/ShowStatusReportAction.java       |   33 +-
 .../josm/actions/SimplifyWayAction.java            |    3 +-
 .../openstreetmap/josm/actions/SplitWayAction.java |   19 +-
 .../openstreetmap/josm/actions/ToggleAction.java   |    4 +-
 .../openstreetmap/josm/actions/UnGlueAction.java   |   24 +-
 .../josm/actions/UnJoinNodeWayAction.java          |    4 +-
 src/org/openstreetmap/josm/actions/UndoAction.java |   15 +-
 .../josm/actions/UnselectAllAction.java            |    3 +
 .../josm/actions/UpdateDataAction.java             |    8 +-
 .../josm/actions/UpdateSelectionAction.java        |    9 +-
 .../openstreetmap/josm/actions/UploadAction.java   |    9 +-
 .../josm/actions/UploadNotesAction.java            |   12 +-
 .../josm/actions/UploadSelectionAction.java        |    5 +-
 .../openstreetmap/josm/actions/ValidateAction.java |   25 +-
 .../josm/actions/ViewportFollowToggleAction.java   |    3 +-
 .../josm/actions/WireframeToggleAction.java        |    8 +-
 .../openstreetmap/josm/actions/ZoomInAction.java   |   14 +-
 .../openstreetmap/josm/actions/ZoomOutAction.java  |   10 +-
 .../openstreetmap/josm/actions/ZoomToAction.java   |    5 +-
 .../josm/actions/audio/AbstractAudioAction.java    |   44 +
 .../josm/actions/audio/AudioBackAction.java        |    3 +-
 .../josm/actions/audio/AudioFastSlowAction.java    |    3 +-
 .../josm/actions/audio/AudioFwdAction.java         |    3 +-
 .../josm/actions/audio/AudioNextAction.java        |    3 +-
 .../josm/actions/audio/AudioPlayPauseAction.java   |    3 +-
 .../josm/actions/audio/AudioPrevAction.java        |    3 +-
 .../AbstractChangesetDownloadTask.java             |   11 +-
 .../ChangesetContentDownloadTask.java              |    3 +-
 .../actions/downloadtasks/ChangesetQueryTask.java  |    3 +-
 .../actions/downloadtasks/DownloadGpsTask.java     |   64 +-
 .../actions/downloadtasks/DownloadNotesTask.java   |   30 +-
 .../DownloadOsmChangeCompressedTask.java           |    8 +-
 .../downloadtasks/DownloadOsmChangeTask.java       |   13 +-
 .../downloadtasks/DownloadOsmCompressedTask.java   |    4 +-
 .../actions/downloadtasks/DownloadOsmIdTask.java   |    4 +-
 .../actions/downloadtasks/DownloadOsmTask.java     |   43 +-
 .../downloadtasks/DownloadReferrersTask.java       |    7 +-
 .../actions/downloadtasks/DownloadSessionTask.java |    6 +-
 .../josm/actions/downloadtasks/DownloadTask.java   |    2 +-
 .../actions/downloadtasks/DownloadTaskList.java    |   12 +-
 .../actions/downloadtasks/PostDownloadHandler.java |   28 +-
 .../josm/actions/mapmode/AddNoteAction.java        |   23 +-
 .../josm/actions/mapmode/DeleteAction.java         |   44 +-
 .../josm/actions/mapmode/DrawAction.java           |  110 +-
 .../josm/actions/mapmode/DrawSnapHelper.java       |   19 +-
 .../josm/actions/mapmode/ExtrudeAction.java        |   99 +-
 .../actions/mapmode/ImproveWayAccuracyAction.java  |   42 +-
 .../actions/mapmode/ImproveWayAccuracyHelper.java  |    4 +-
 .../josm/actions/mapmode/MapMode.java              |   18 +-
 .../josm/actions/mapmode/ParallelWayAction.java    |   40 +-
 .../josm/actions/mapmode/ParallelWays.java         |    4 +-
 .../josm/actions/mapmode/PlayHeadDragMode.java     |   17 +-
 .../josm/actions/mapmode/SelectAction.java         |  114 +-
 .../josm/actions/mapmode/ZoomAction.java           |   10 +-
 .../actions/relation/AddSelectionToRelations.java  |    6 +-
 .../actions/relation/DeleteRelationsAction.java    |   10 +-
 .../actions/relation/DownloadMembersAction.java    |    5 +-
 .../DownloadSelectedIncompleteMembersAction.java   |    7 +-
 .../actions/relation/DuplicateRelationAction.java  |    4 +-
 .../josm/actions/relation/EditRelationAction.java  |    9 +-
 .../actions/relation/RecentRelationsAction.java    |   16 +-
 .../relation/SelectInRelationListAction.java       |   10 +-
 .../josm/actions/relation/SelectMembersAction.java |    8 +-
 .../actions/relation/SelectRelationAction.java     |    4 +-
 .../openstreetmap/josm/actions/search/InView.java  |   34 +
 .../josm/actions/search/SearchAction.java          |  252 +--
 .../actions/upload/ApiPreconditionCheckerHook.java |   14 +-
 .../josm/actions/upload/DiscardTagsHook.java       |    4 +-
 .../josm/actions/upload/FixDataHook.java           |    3 +-
 .../actions/upload/RelationUploadOrderHook.java    |    3 +-
 .../josm/actions/upload/UploadHook.java            |    5 +
 .../josm/actions/upload/UploadNotesTask.java       |   48 +-
 .../josm/actions/upload/ValidateUploadHook.java    |   19 +-
 src/org/openstreetmap/josm/command/AddCommand.java |    2 +-
 .../openstreetmap/josm/command/ChangeCommand.java  |    2 +-
 .../josm/command/ChangeNodesCommand.java           |    2 +-
 .../josm/command/ChangePropertyCommand.java        |    2 +-
 .../command/ChangeRelationMemberRoleCommand.java   |    2 +-
 src/org/openstreetmap/josm/command/Command.java    |    3 +-
 .../openstreetmap/josm/command/DeleteCommand.java  |    2 +-
 .../openstreetmap/josm/command/PurgeCommand.java   |  144 +-
 .../josm/command/RemoveNodesCommand.java           |    2 +-
 .../openstreetmap/josm/command/ScaleCommand.java   |    4 +
 .../josm/command/conflict/ConflictAddCommand.java  |   26 +-
 .../command/conflict/ConflictResolveCommand.java   |   18 +-
 .../conflict/ModifiedConflictResolveCommand.java   |    2 +-
 .../RelationMemberConflictResolverCommand.java     |   16 +-
 .../conflict/VersionConflictResolveCommand.java    |    2 +-
 .../conflict/WayNodesConflictResolverCommand.java  |    4 +-
 .../josm/corrector/ReverseWayNoTagCorrector.java   |    2 +-
 .../openstreetmap/josm/corrector/TagCorrector.java |    2 +-
 src/org/openstreetmap/josm/data/APIDataSet.java    |    2 +-
 src/org/openstreetmap/josm/data/Preferences.java   |   96 +-
 .../openstreetmap/josm/data/PreferencesUtils.java  |  430 ++++
 .../josm/data/SystemOfMeasurement.java             |   16 +-
 .../openstreetmap/josm/data/UndoRedoHandler.java   |    9 +-
 src/org/openstreetmap/josm/data/Version.java       |   11 +-
 .../josm/data/cache/CacheEntryAttributes.java      |    6 +-
 .../josm/data/cache/HostLimitQueue.java            |   12 +-
 .../josm/data/cache/JCSCacheManager.java           |    9 +-
 .../josm/data/cache/JCSCachedTileLoaderJob.java    |   10 +-
 .../openstreetmap/josm/data/coor/EastNorth.java    |   20 -
 src/org/openstreetmap/josm/data/coor/LatLon.java   |   36 +-
 src/org/openstreetmap/josm/data/gpx/WayPoint.java  |    6 +-
 .../josm/data/imagery/AbstractWMSTileSource.java   |    4 +-
 .../CachedAttributionBingAerialTileSource.java     |    8 +-
 .../josm/data/imagery/CachedTileLoaderFactory.java |    9 +-
 .../josm/data/imagery/CoordinateConversion.java    |   56 +
 .../josm/data/imagery/ImageryInfo.java             |    3 +-
 .../josm/data/imagery/ImageryLayerInfo.java        |   52 +-
 .../josm/data/imagery/OffsetBookmark.java          |    8 +-
 .../josm/data/imagery/TMSCachedTileLoaderJob.java  |    6 +-
 .../josm/data/imagery/WMTSTileSource.java          |   39 +-
 .../oauth}/OAuthAccessTokenHolder.java             |   18 +-
 .../osm}/CyclicUploadDependencyException.java      |    5 +-
 src/org/openstreetmap/josm/data/osm/DataSet.java   |   18 +-
 .../josm/data/osm/DatasetConsistencyTest.java      |    8 +-
 .../{gui => data/osm}/DefaultNameFormatter.java    |   12 +-
 src/org/openstreetmap/josm/data/osm/Filter.java    |    4 +-
 .../openstreetmap/josm/data/osm/FilterMatcher.java |   31 +-
 .../openstreetmap/josm/data/osm/FilterModel.java   |   18 +-
 .../openstreetmap/josm/data/osm/FilterWorker.java  |    6 +-
 .../josm/data/osm/MultipolygonBuilder.java         |    4 +-
 .../josm/{gui => data/osm}/NameFormatterHook.java  |    7 +-
 src/org/openstreetmap/josm/data/osm/NoteData.java  |   37 +-
 .../openstreetmap/josm/data/osm/OsmPrimitive.java  |   13 +-
 .../josm/data/osm/OsmPrimitiveComparator.java      |    1 -
 .../openstreetmap/josm/data/osm/QuadBuckets.java   |    4 +-
 .../openstreetmap/josm/data/osm/TagCollection.java |    6 +-
 src/org/openstreetmap/josm/data/osm/Way.java       |    1 -
 .../josm/data/osm/event/DatasetEventManager.java   |    4 +-
 .../josm/data/osm/event/SelectionEventManager.java |    6 +-
 .../josm/data/osm/history/HistoryDataSet.java      |    8 +-
 .../josm/data/osm/history/HistoryOsmPrimitive.java |    4 +-
 .../osm}/search/PushbackTokenizer.java             |   18 +-
 .../osm}/search/SearchCompiler.java                |  233 +--
 .../josm/data/osm/search/SearchMode.java           |   44 +
 .../josm/data/osm/search/SearchParseError.java     |   39 +
 .../josm/data/osm/search/SearchSetting.java        |  162 ++
 .../josm/data/osm/search/package-info.java         |    6 +
 .../josm/data/osm/visitor/BoundingXYVisitor.java   |    5 +-
 .../osm/visitor/paint/AbstractMapRenderer.java     |    3 +-
 .../data/osm/visitor/paint/MapRendererFactory.java |   20 +-
 .../visitor/paint/RenderBenchmarkCollector.java    |    3 +-
 .../data/osm/visitor/paint/StyledMapRenderer.java  |    8 +-
 .../osm/visitor/paint/relations/Multipolygon.java  |    3 +-
 .../visitor/paint/relations/MultipolygonCache.java |    3 +-
 .../data/preferences/AbstractToStringProperty.java |    4 +-
 .../data/preferences/ParametrizedEnumProperty.java |    3 +-
 .../josm/data/preferences/PreferencesReader.java   |    6 +-
 .../josm/data/preferences/StrokeProperty.java      |    4 +-
 .../preferences/sources/ExtendedSourceEntry.java   |   92 +
 .../preferences/sources/MapPaintPrefHelper.java    |  112 ++
 .../data/preferences/sources/PresetPrefHelper.java |   49 +
 .../preferences/sources}/SourceEntry.java          |    7 +-
 .../data/preferences/sources/SourcePrefHelper.java |  107 +
 .../preferences/sources}/SourceProvider.java       |    3 +-
 .../preferences/sources}/SourceType.java           |    3 +-
 .../preferences/sources/ValidatorPrefHelper.java   |  102 +
 .../data/preferences/sources/package-info.java     |   11 +
 .../josm/data/projection/CustomProjection.java     |    8 +-
 .../josm/data/projection/Projections.java          |    7 +-
 .../data/projection/datum/NTV2GridShiftFile.java   |    4 +-
 .../josm/data/projection/datum/NTV2SubGrid.java    |    4 +-
 .../josm/data/validation/OsmValidator.java         |   50 +-
 .../josm/data/validation/Severity.java             |   28 +-
 .../openstreetmap/josm/data/validation/Test.java   |   18 +-
 .../data/validation/routines/DomainValidator.java  |    7 +-
 .../data/validation/routines/UrlValidator.java     |    4 +-
 .../josm/data/validation/tests/Addresses.java      |    3 +-
 .../data/validation/tests/ConditionalKeys.java     |    4 +-
 .../josm/data/validation/tests/CrossingWays.java   |    4 +-
 .../josm/data/validation/tests/DuplicateNode.java  |    2 +-
 .../josm/data/validation/tests/Lanes.java          |    6 +-
 .../data/validation/tests/MapCSSTagChecker.java    |   48 +-
 .../data/validation/tests/MultipolygonTest.java    |    8 +-
 .../data/validation/tests/OpeningHourTest.java     |    8 +-
 .../josm/data/validation/tests/TagChecker.java     |   27 +-
 .../data/validation/tests/UnconnectedWays.java     |    9 +-
 .../josm/data/validation/tests/UntaggedWay.java    |    2 +-
 .../josm/data/validation/util/NameVisitor.java     |    2 +-
 .../openstreetmap/josm/gui/DownloadParamType.java  |  152 ++
 .../josm/gui/ExceptionDialogUtil.java              |    3 +-
 src/org/openstreetmap/josm/gui/ExtendedDialog.java |   12 +-
 src/org/openstreetmap/josm/gui/GettingStarted.java |    5 +-
 .../josm/gui/HelpAwareOptionPane.java              |   10 +-
 .../openstreetmap/josm/gui/IExtendedDialog.java    |    2 +-
 src/org/openstreetmap/josm/gui/ImageryMenu.java    |   19 +-
 .../josm/gui/JosmUserIdentityManager.java          |    7 +-
 .../openstreetmap/josm/gui/MainApplication.java    |  681 ++++++-
 src/org/openstreetmap/josm/gui/MainFrame.java      |   17 +-
 src/org/openstreetmap/josm/gui/MainMenu.java       |   10 +-
 src/org/openstreetmap/josm/gui/MainPanel.java      |   11 +-
 src/org/openstreetmap/josm/gui/MapFrame.java       |   10 +-
 src/org/openstreetmap/josm/gui/MapMover.java       |    9 +-
 src/org/openstreetmap/josm/gui/MapStatus.java      |   41 +-
 src/org/openstreetmap/josm/gui/MapView.java        |   49 +-
 src/org/openstreetmap/josm/gui/MenuScroller.java   |    7 +-
 .../josm/gui/NavigatableComponent.java             |    9 +-
 src/org/openstreetmap/josm/gui/NoteSortDialog.java |    4 +-
 .../josm/gui/NotificationManager.java              |    9 +-
 .../josm/gui/OsmPrimitivRenderer.java              |    5 +-
 .../openstreetmap/josm/gui/PleaseWaitDialog.java   |    2 +-
 .../openstreetmap/josm/gui/PleaseWaitRunnable.java |    2 +-
 .../openstreetmap/josm/gui/ProgramArguments.java   |    2 +-
 .../openstreetmap/josm/gui/SelectionManager.java   |    9 +-
 src/org/openstreetmap/josm/gui/SideButton.java     |    4 +-
 src/org/openstreetmap/josm/gui/SplashScreen.java   |   15 +-
 .../josm/gui/autofilter/AutoFilterButton.java      |    4 +-
 .../josm/gui/autofilter/AutoFilterManager.java     |   32 +-
 .../josm/gui/bbox/SlippyMapBBoxChooser.java        |    5 +-
 .../openstreetmap/josm/gui/bbox/SourceButton.java  |   16 +
 .../josm/gui/bbox/TileSelectionBBoxChooser.java    |    2 +-
 .../{tools => gui}/bugreport/BugReportDialog.java  |    5 +-
 .../bugreport/BugReportSettingsPanel.java          |    4 +-
 .../{tools => gui}/bugreport/DebugTextDisplay.java |    3 +-
 .../{tools => gui}/bugreport/JosmUpdatePanel.java  |    7 +-
 .../josm/gui/bugreport/package-info.java           |    6 +
 .../gui/conflict/pair/AbstractListMergeModel.java  |    4 +-
 .../josm/gui/conflict/pair/AbstractListMerger.java |    4 +-
 .../conflict/pair/ComparePairListCellRenderer.java |    3 +
 .../josm/gui/conflict/pair/IConflictResolver.java  |    4 +
 .../josm/gui/conflict/pair/MergeDecisionType.java  |    7 +
 .../josm/gui/conflict/pair/PairTable.java          |    3 +
 .../pair/nodes/NodeListTableCellRenderer.java      |    2 +-
 .../conflict/pair/properties/PropertiesMerger.java |    2 +-
 .../relation/RelationMemberTableCellRenderer.java  |    2 +-
 .../pair/tags/MergedTableCellRenderer.java         |    5 +
 .../conflict/pair/tags/MineTableCellRenderer.java  |    5 +
 .../pair/tags/TagMergeTableCellRenderer.java       |    3 +
 .../conflict/pair/tags/TheirTableCellRenderer.java |    5 +
 .../tags/CombinePrimitiveResolverDialog.java       |    4 +-
 .../gui/conflict/tags/MultiValueCellEditor.java    |    4 +-
 .../gui/conflict/tags/MultiValueCellRenderer.java  |    6 +-
 .../tags/PasteTagsConflictResolverDialog.java      |    5 +-
 .../tags/RelationMemberConflictDecision.java       |    3 +
 .../RelationMemberConflictDecisionRenderer.java    |    3 +
 .../tags/RelationMemberConflictDecisionType.java   |    8 +
 .../tags/RelationMemberConflictResolver.java       |    8 +-
 .../RelationMemberConflictResolverColumnModel.java |    4 +
 .../tags/RelationMemberConflictResolverTable.java  |    5 +
 .../conflict/tags/TagConflictResolutionUtil.java   |    3 +-
 .../conflict/tags/TagConflictResolverModel.java    |    3 +
 .../conflict/tags/TagConflictResolverTable.java    |    3 +
 .../gui/correction/RoleCorrectionTableModel.java   |    2 +-
 .../datatransfer/AbstractStackTransferHandler.java |   12 +-
 .../josm/gui/datatransfer/ClipboardUtils.java      |   16 +-
 .../josm/gui/datatransfer/OsmTransferHandler.java  |   13 +-
 .../datatransfer/RelationMemberTransferable.java   |    2 +-
 .../datatransfer/importers/AbstractTagPaster.java  |    4 +-
 .../gui/datatransfer/importers/FilePaster.java     |    4 +-
 .../importers/PrimitiveDataPaster.java             |    3 +-
 .../gui/datatransfer/importers/TextTagPaster.java  |   80 +-
 .../josm/gui/dialogs/ChangesetDialog.java          |   32 +-
 .../josm/gui/dialogs/CommandStackDialog.java       |   22 +-
 .../josm/gui/dialogs/ConflictDialog.java           |   26 +-
 .../josm/gui/dialogs/ConflictResolutionDialog.java |    5 +-
 .../DeleteFromRelationConfirmationDialog.java      |    4 +-
 .../josm/gui/dialogs/FilterDialog.java             |    3 +-
 .../josm/gui/dialogs/FilterTableModel.java         |   11 +-
 .../josm/gui/dialogs/InspectPrimitiveDataText.java |   10 +-
 .../josm/gui/dialogs/InspectPrimitiveDialog.java   |   24 +-
 .../josm/gui/dialogs/LatLonDialog.java             |    7 +-
 .../josm/gui/dialogs/LayerListDialog.java          |   33 +-
 .../josm/gui/dialogs/MapPaintDialog.java           |   21 +-
 .../josm/gui/dialogs/MenuItemSearchDialog.java     |    3 +-
 .../josm/gui/dialogs/MinimapDialog.java            |    8 +-
 .../josm/gui/dialogs/NotesDialog.java              |   19 +-
 .../josm/gui/dialogs/RelationListDialog.java       |   29 +-
 .../josm/gui/dialogs/SelectionListDialog.java      |   33 +-
 .../josm/gui/dialogs/ToggleDialog.java             |   20 +-
 .../josm/gui/dialogs/UserListDialog.java           |   14 +-
 .../josm/gui/dialogs/ValidatorDialog.java          |   38 +-
 .../dialogs/changeset/ChangesetCacheManager.java   |   16 +-
 .../dialogs/changeset/ChangesetContentPanel.java   |   30 +-
 .../dialogs/changeset/ChangesetDetailPanel.java    |   27 +-
 .../changeset/ChangesetDiscussionPanel.java        |    3 +-
 .../changeset/query/BasicChangesetQueryPanel.java  |   15 +-
 .../changeset/query/ChangesetQueryDialog.java      |    6 +-
 .../gui/dialogs/changeset/query/DateValidator.java |    4 +-
 .../gui/dialogs/changeset/query/TimeValidator.java |    4 +-
 .../changeset/query/UrlBasedQueryPanel.java        |    3 +-
 .../josm/gui/dialogs/layer/DuplicateAction.java    |    6 +-
 .../dialogs/layer/LayerListTransferHandler.java    |    6 +-
 .../josm/gui/dialogs/layer/MergeAction.java        |   12 +-
 .../gui/dialogs/properties/PropertiesDialog.java   |   50 +-
 .../dialogs/properties/RecentTagCollection.java    |   12 +-
 .../dialogs/properties/SearchBasedRowFilter.java   |    4 +-
 .../josm/gui/dialogs/properties/TagEditHelper.java |   63 +-
 .../gui/dialogs/relation/ChildRelationBrowser.java |   16 +-
 .../relation/DownloadRelationMemberTask.java       |   11 +-
 .../gui/dialogs/relation/DownloadRelationTask.java |    9 +-
 .../dialogs/relation/GenericRelationEditor.java    |   14 +-
 .../gui/dialogs/relation/IMemberModelListener.java |    7 +
 .../gui/dialogs/relation/MemberRoleCellEditor.java |    4 +
 .../josm/gui/dialogs/relation/MemberTable.java     |   28 +-
 .../dialogs/relation/MemberTableColumnModel.java   |    3 +
 .../relation/MemberTableLinkedCellRenderer.java    |    3 +
 .../relation/MemberTableMemberCellRenderer.java    |    2 +-
 .../gui/dialogs/relation/MemberTableModel.java     |    7 +-
 .../relation/MemberTableRoleCellRenderer.java      |    3 +
 .../dialogs/relation/MemberTransferHandler.java    |    6 +-
 .../relation/ParentRelationLoadingTask.java        |    9 +-
 .../relation/ReferringRelationsBrowser.java        |    6 +-
 .../relation/ReferringRelationsBrowserModel.java   |    5 +
 .../dialogs/relation/RelationDialogManager.java    |    4 +-
 .../josm/gui/dialogs/relation/RelationEditor.java  |    3 +-
 .../josm/gui/dialogs/relation/RelationTree.java    |   16 +-
 .../dialogs/relation/RelationTreeCellRenderer.java |    2 +-
 .../gui/dialogs/relation/SelectionTableModel.java  |   15 +-
 .../actions/AddSelectedAfterSelection.java         |    4 +-
 .../relation/actions/AddSelectedAtEndAction.java   |    4 +-
 .../relation/actions/AddSelectedAtStartAction.java |    4 +-
 .../actions/AddSelectedBeforeSelection.java        |    4 +-
 .../actions/DownloadIncompleteMembersAction.java   |    5 +-
 .../DownloadSelectedIncompleteMembersAction.java   |    3 +-
 .../relation/actions/PasteMembersAction.java       |    6 +-
 .../dialogs/relation/actions/RefreshAction.java    |    3 +-
 .../gui/dialogs/relation/actions/SavingAction.java |   13 +-
 .../dialogs/relation/sort/RelationSortUtils.java   |    3 +
 .../gui/dialogs/relation/sort/RelationSorter.java  |   12 +-
 .../dialogs/relation/sort/WayConnectionType.java   |    6 +-
 .../relation/sort/WayConnectionTypeCalculator.java |    3 +
 .../gui/dialogs/validator/ValidatorTreePanel.java  |   21 +-
 .../gui/download/AbstractDownloadSourcePanel.java  |  124 ++
 .../josm/gui/download/BookmarkList.java            |   12 +-
 .../josm/gui/download/DownloadDialog.java          |  497 +++--
 .../josm/gui/download/DownloadSelection.java       |    5 +
 .../josm/gui/download/DownloadSettings.java        |   56 +
 .../josm/gui/download/DownloadSource.java          |   38 +
 .../gui/download/DownloadSourceSizingPolicy.java   |   94 +
 .../josm/gui/download/OSMDownloadSource.java       |  347 ++++
 .../josm/gui/download/OverpassDownloadSource.java  |  397 ++++
 .../josm/gui/download/OverpassQueryList.java       |  656 ++++++
 .../gui/download/OverpassQueryWizardDialog.java    |  245 +++
 .../josm/gui/download/PlaceSelection.java          |    6 +-
 .../openstreetmap/josm/gui/help/HelpBrowser.java   |   39 +-
 .../josm/gui/help/HelpBrowserHistory.java          |   34 +-
 src/org/openstreetmap/josm/gui/help/HelpUtil.java  |   13 +-
 .../josm/gui/history/HistoryBrowserDialog.java     |    3 +-
 .../gui/history/HistoryBrowserDialogManager.java   |    9 +-
 .../josm/gui/history/HistoryBrowserModel.java      |   14 +-
 .../josm/gui/history/HistoryLoadTask.java          |    2 +-
 .../gui/history/NodeListTableCellRenderer.java     |    6 +
 .../josm/gui/history/NodeListViewer.java           |   12 +-
 .../josm/gui/history/SelectionSynchronizer.java    |   13 +
 .../josm/gui/history/VersionInfoPanel.java         |    3 +-
 .../josm/gui/history/VersionTableModel.java        |    4 +-
 .../josm/gui/io/AbstractPrimitiveTask.java         |    6 +-
 .../josm/gui/io/AbstractUploadTask.java            |   12 +-
 .../josm/gui/io/BasicUploadSettingsPanel.java      |    3 +-
 .../josm/gui/io/ChangesetManagementPanel.java      |    7 +-
 .../josm/gui/io/CloseChangesetDialog.java          |    2 +-
 .../josm/gui/io/CredentialDialog.java              |    5 +-
 .../josm/{data => gui/io}/CustomConfigurator.java  |  449 +----
 .../josm/gui/io/DownloadFileTask.java              |   10 +-
 .../josm/gui/io/DownloadOpenChangesetsTask.java    |    6 +-
 .../io/DownloadPrimitivesWithReferrersTask.java    |    7 +-
 .../openstreetmap/josm/gui/io/IUploadDialog.java   |    2 +
 .../josm/gui/io/RecentlyOpenedFilesMenu.java       |    3 +-
 .../openstreetmap/josm/gui/io/SaveLayerTask.java   |    4 +-
 .../josm/gui/io/SaveLayersDialog.java              |   21 +-
 .../josm/gui/io/TagSettingsPanel.java              |    4 +-
 .../openstreetmap/josm/gui/io/UploadDialog.java    |    4 +-
 .../openstreetmap/josm/gui/io/UploadLayerTask.java |   11 +-
 .../josm/gui/io/UploadParameterSummaryPanel.java   |    1 +
 .../josm/gui/io/UploadPrimitivesTask.java          |   15 +-
 .../josm/gui/io/UploadSelectionDialog.java         |    4 +-
 .../josm/gui/io/UploadStrategySelectionPanel.java  |    6 +-
 .../io/importexport}/AllFormatsImporter.java       |    2 +-
 .../{io => gui/io/importexport}/FileExporter.java  |    2 +-
 .../{io => gui/io/importexport}/FileImporter.java  |   13 +-
 .../io/importexport}/GeoJSONExporter.java          |    3 +-
 .../{io => gui/io/importexport}/GpxExporter.java   |   10 +-
 .../{io => gui/io/importexport}/GpxImporter.java   |   14 +-
 .../{io => gui/io/importexport}/JpgImporter.java   |    3 +-
 .../{io => gui/io/importexport}/NMEAImporter.java  |   10 +-
 .../{io => gui/io/importexport}/NoteExporter.java  |    7 +-
 .../{io => gui/io/importexport}/NoteImporter.java  |   23 +-
 .../io/importexport}/OsmBzip2Exporter.java         |    2 +-
 .../io/importexport}/OsmChangeImporter.java        |   11 +-
 .../{io => gui/io/importexport}/OsmExporter.java   |   10 +-
 .../io/importexport}/OsmGzipExporter.java          |    2 +-
 .../{io => gui/io/importexport}/OsmImporter.java   |   14 +-
 .../io/importexport/ValidatorErrorExporter.java    |   52 +
 .../io/importexport}/WMSLayerExporter.java         |    6 +-
 .../io/importexport}/WMSLayerImporter.java         |    9 +-
 .../josm/gui/io/importexport/package-info.java     |    6 +
 .../gui/layer/AbstractCachedTileSourceLayer.java   |    6 +-
 .../josm/gui/layer/AbstractTileSourceLayer.java    |   95 +-
 .../josm/gui/layer/AlignImageryPanel.java          |   14 +-
 .../josm/{data => gui/layer}/AutosaveTask.java     |   35 +-
 src/org/openstreetmap/josm/gui/layer/GpxLayer.java |    2 +-
 .../openstreetmap/josm/gui/layer/ImageryLayer.java |   13 +-
 .../openstreetmap/josm/gui/layer/LayerManager.java |    4 +-
 .../openstreetmap/josm/gui/layer/NoteLayer.java    |   16 +-
 .../openstreetmap/josm/gui/layer/OsmDataLayer.java |   50 +-
 src/org/openstreetmap/josm/gui/layer/TMSLayer.java |    4 +-
 .../josm/gui/layer/ValidatorLayer.java             |   26 +-
 src/org/openstreetmap/josm/gui/layer/WMSLayer.java |    5 +-
 .../openstreetmap/josm/gui/layer/WMTSLayer.java    |    8 +-
 .../gui/layer/geoimage/CorrelateGpxWithImages.java |   22 +-
 .../josm/gui/layer/geoimage/GeoImageLayer.java     |   54 +-
 .../josm/gui/layer/geoimage/ImageDisplay.java      |    3 +-
 .../josm/gui/layer/geoimage/ImageEntry.java        |   12 +-
 .../josm/gui/layer/geoimage/ImageViewerDialog.java |   30 +-
 .../josm/gui/layer/geoimage/ThumbsLoader.java      |   30 +-
 .../gui/layer/gpx/ChooseTrackVisibilityAction.java |    5 +-
 .../gui/layer/gpx/ConvertToDataLayerAction.java    |   10 +-
 .../josm/gui/layer/gpx/CustomizeDrawingAction.java |    3 +-
 .../gui/layer/gpx/DownloadAlongTrackAction.java    |    4 +-
 .../gui/layer/gpx/DownloadWmsAlongTrackAction.java |    8 +-
 .../josm/gui/layer/gpx/GpxDrawHelper.java          |    7 +-
 .../josm/gui/layer/gpx/ImportAudioAction.java      |    5 +-
 .../josm/gui/layer/gpx/ImportImagesAction.java     |    2 +-
 .../layer/gpx/MarkersFromNamedPointsAction.java    |    4 +-
 .../josm/gui/layer/imagery/ColorfulFilter.java     |   10 +-
 .../gui/layer/imagery/ColorfulImageProcessor.java  |   29 +-
 .../gui/layer/imagery/GammaImageProcessor.java     |   34 +-
 .../josm/gui/layer/imagery/ReprojectionTile.java   |   14 +-
 .../gui/layer/imagery/SharpenImageProcessor.java   |   29 +-
 .../gui/layer/imagery/TileCoordinateConverter.java |   17 +-
 .../layer/imagery/TileSourceDisplaySettings.java   |   17 +-
 .../josm/gui/layer/imagery/ZoomToBestAction.java   |    2 +-
 .../gui/layer/imagery/ZoomToNativeLevelAction.java |    6 +-
 .../josm/gui/layer/markerlayer/AudioMarker.java    |    4 +-
 .../josm/gui/layer/markerlayer/ButtonMarker.java   |    3 +-
 .../layer/markerlayer/DefaultMarkerProducers.java  |    4 +-
 .../josm/gui/layer/markerlayer/Marker.java         |    8 +-
 .../josm/gui/layer/markerlayer/MarkerLayer.java    |   18 +-
 .../josm/gui/layer/markerlayer/PlayHeadMarker.java |   41 +-
 .../josm/gui/layer/markerlayer/WebMarker.java      |    4 +-
 .../openstreetmap/josm/gui/mappaint/Cascade.java   |    8 +-
 .../josm/gui/mappaint/ElemStyles.java              |   24 +-
 .../josm/gui/mappaint/MapPaintMenu.java            |    7 +-
 .../josm/gui/mappaint/MapPaintStyles.java          |  110 +-
 .../josm/gui/mappaint/StyleSetting.java            |    9 +-
 .../josm/gui/mappaint/StyleSource.java             |    2 +-
 .../gui/mappaint/loader/MapPaintStyleLoader.java   |   69 +
 .../josm/gui/mappaint/loader/package-info.java     |    6 +
 .../josm/gui/mappaint/mapcss/ConditionFactory.java |    2 +-
 .../gui/mappaint/mapcss/ExpressionFactory.java     |   26 +-
 .../josm/gui/mappaint/mapcss/MapCSSParser.jj       |   12 +-
 .../gui/mappaint/mapcss/MapCSSStyleSource.java     |   24 +-
 .../josm/gui/mappaint/mapcss/Selector.java         |    6 +-
 .../gui/mappaint/styleelement/LineElement.java     |    4 +-
 .../josm/gui/mappaint/styleelement/MapImage.java   |    8 +-
 .../gui/mappaint/styleelement/NodeElement.java     |    3 +-
 .../josm/gui/oauth/AccessTokenInfoPanel.java       |    2 +-
 .../josm/gui/oauth/AuthorizationProcedure.java     |    3 +
 .../gui/oauth/AuthorizationProcedureComboBox.java  |    3 +
 .../gui/oauth/FullyAutomaticAuthorizationUI.java   |    6 +-
 .../gui/oauth/FullyAutomaticPropertiesPanel.java   |    6 +
 .../josm/gui/oauth/ManualAuthorizationUI.java      |    2 +-
 .../josm/gui/oauth/OAuthAuthorizationWizard.java   |    7 +-
 .../gui/oauth/OsmOAuthAuthorizationClient.java     |   12 +-
 .../josm/gui/oauth/OsmPrivilegesPanel.java         |    4 +
 .../josm/gui/oauth/RetrieveAccessTokenTask.java    |    6 +-
 .../josm/gui/oauth/RetrieveRequestTokenTask.java   |    6 +-
 .../gui/oauth/SemiAutomaticAuthorizationUI.java    |    2 +-
 .../josm/gui/oauth/TestAccessTokenTask.java        |    8 +-
 .../preferences/DefaultTabPreferenceSetting.java   |    4 +-
 .../josm/gui/preferences/PreferenceDialog.java     |    2 +-
 .../josm/gui/preferences/PreferenceTabbedPane.java |   18 +-
 .../josm/gui/preferences/SourceEditor.java         |  200 +-
 .../josm/gui/preferences/ToolbarPreferences.java   |   32 +-
 .../preferences/advanced/AbstractListEditor.java   |    2 +-
 .../preferences/advanced/AdvancedPreference.java   |    9 +-
 .../preferences/advanced/ExportProfileAction.java  |    2 +-
 .../gui/preferences/display/ColorPreference.java   |    3 +-
 .../gui/preferences/display/GPXSettingsPanel.java  |    7 +-
 .../gui/preferences/display/LafPreference.java     |    3 +-
 .../gui/preferences/imagery/AddWMSLayerPanel.java  |    8 +-
 .../preferences/imagery/CacheContentsPanel.java    |    7 +-
 .../gui/preferences/imagery/ImageryPreference.java |   14 +-
 .../josm/gui/preferences/map/BackupPreference.java |    2 +-
 .../gui/preferences/map/MapPaintPreference.java    |  117 +-
 .../preferences/map/TaggingPresetPreference.java   |   64 +-
 .../gui/preferences/plugin/PluginPreference.java   |   20 +-
 .../preferences/plugin/PluginPreferencesModel.java |    3 +-
 .../plugin/PluginUpdatePolicyPanel.java            |    3 +-
 .../projection/CustomProjectionChoice.java         |    3 +-
 .../projection/GaussKruegerProjectionChoice.java   |    4 +-
 .../LambertCC9ZonesProjectionChoice.java           |    6 +-
 .../projection/LambertProjectionChoice.java        |    6 +-
 .../projection/ProjectionPreference.java           |    5 +-
 .../projection/UTMFranceDOMProjectionChoice.java   |    4 +-
 .../projection/UTMProjectionChoice.java            |    6 +-
 .../remotecontrol/RemoteControlPreference.java     |   17 +-
 .../gui/preferences/server/ApiUrlTestTask.java     |    6 +-
 .../server/AuthenticationPreferencesPanel.java     |    4 +-
 .../BasicAuthenticationPreferencesPanel.java       |   14 +-
 .../OAuthAuthenticationPreferencesPanel.java       |    9 +-
 .../preferences/server/OsmApiUrlInputPanel.java    |    8 +-
 .../preferences/server/ProxyPreferencesPanel.java  |    7 +-
 .../josm/gui/preferences/shortcut/PrefJPanel.java  |    6 +-
 .../preferences/validator/ValidatorPreference.java |   28 -
 .../ValidatorTagCheckerRulesPreference.java        |   78 +-
 .../validator/ValidatorTestsPreference.java        |   21 +-
 .../josm/gui/progress/AbstractProgressMonitor.java |   10 +-
 .../josm/gui/progress/NullProgressMonitor.java     |   17 +-
 .../josm/gui/progress/ProgressRenderer.java        |    2 +-
 .../{ => swing}/PleaseWaitProgressMonitor.java     |   37 +-
 .../{ => swing}/ProgressMonitorExecutor.java       |    8 +-
 .../{ => swing}/SwingRenderingProgressMonitor.java |    8 +-
 .../josm/gui/progress/swing/package-info.java      |    6 +
 .../openstreetmap/josm/gui/tagging/TagTable.java   |    6 +-
 .../gui/tagging/ac/AutoCompletingComboBox.java     |   21 +-
 .../gui/tagging/ac/AutoCompletingTextField.java    |    3 +-
 .../josm/gui/tagging/presets/TaggingPreset.java    |   30 +-
 .../gui/tagging/presets/TaggingPresetItem.java     |    6 +-
 .../gui/tagging/presets/TaggingPresetLabel.java    |    6 +
 .../gui/tagging/presets/TaggingPresetMenu.java     |   10 +-
 .../presets/TaggingPresetNameTemplateList.java     |    4 +-
 .../gui/tagging/presets/TaggingPresetReader.java   |   15 +-
 .../tagging/presets/TaggingPresetSearchAction.java |    6 +-
 .../TaggingPresetSearchPrimitiveDialog.java        |    9 +-
 .../gui/tagging/presets/TaggingPresetSelector.java |    9 +-
 .../josm/gui/tagging/presets/TaggingPresets.java   |   14 +-
 .../tagging/presets/items/ComboMultiSelect.java    |   21 +-
 .../josm/gui/tagging/presets/items/Roles.java      |   22 +-
 .../josm/gui/tagging/presets/items/Text.java       |    7 +-
 .../josm/gui/util/AdvancedKeyPressDetector.java    |   29 +-
 src/org/openstreetmap/josm/gui/util/GuiHelper.java |  147 +-
 .../josm/gui/util/HighlightHelper.java             |    6 +-
 .../josm/{tools => gui/util}/WindowGeometry.java   |   11 +-
 .../josm/gui/widgets/AbstractIdTextField.java      |    4 +-
 .../josm/gui/widgets/ChangesetIdTextField.java     |    4 +-
 .../gui/widgets/CompileSearchTextDecorator.java    |    9 +-
 .../DisableShortcutsOnFocusGainedTextField.java    |   12 +-
 .../josm/gui/widgets/JosmHTMLFactory.java          |    4 +-
 .../josm/gui/widgets/JosmImageView.java            |    4 +-
 .../josm/gui/widgets/JosmPasswordField.java        |   18 +-
 .../josm/gui/widgets/JosmTextArea.java             |   13 +-
 .../josm/gui/widgets/JosmTextField.java            |   13 +-
 .../josm/gui/widgets/OsmIdTextField.java           |    6 +-
 .../josm/gui/widgets/OsmPrimitivesTable.java       |   10 +-
 .../josm/gui/widgets/TextContextualPopupMenu.java  |    5 +-
 src/org/openstreetmap/josm/io/AbstractReader.java  |    8 +-
 .../josm/io/BoundingBoxDownloader.java             |    4 +-
 .../openstreetmap/josm/io/CacheCustomContent.java  |    9 +-
 src/org/openstreetmap/josm/io/CachedFile.java      |   20 +-
 src/org/openstreetmap/josm/io/Capabilities.java    |    4 +-
 .../josm/io/CertificateAmendment.java              |   20 +-
 .../josm/io/ChangesetClosedException.java          |    8 +-
 src/org/openstreetmap/josm/io/ChangesetQuery.java  |    6 +-
 .../josm/io/DefaultProxySelector.java              |   24 +-
 src/org/openstreetmap/josm/io/FileWatcher.java     |   27 +-
 src/org/openstreetmap/josm/io/GeoJSONWriter.java   |    6 +-
 src/org/openstreetmap/josm/io/GpxReader.java       |    6 +-
 .../josm/io/InvalidXmlCharacterFilter.java         |    4 +-
 .../io/MaxChangesetSizeExceededPolicy.java         |    3 +-
 src/org/openstreetmap/josm/io/MessageNotifier.java |   11 +-
 .../josm/io/MultiFetchServerObjectReader.java      |   15 +-
 src/org/openstreetmap/josm/io/NameFinder.java      |   25 +-
 src/org/openstreetmap/josm/io/NoteReader.java      |    4 +-
 src/org/openstreetmap/josm/io/OsmApi.java          |   42 +-
 src/org/openstreetmap/josm/io/OsmApiException.java |    6 +-
 .../josm/io/OsmChangesetContentParser.java         |    6 +-
 src/org/openstreetmap/josm/io/OsmConnection.java   |    9 +-
 .../openstreetmap/josm/io/OsmHistoryReader.java    |    4 +-
 src/org/openstreetmap/josm/io/OsmReader.java       |   29 +-
 .../josm/io/OsmServerChangesetReader.java          |   10 +-
 .../josm/io/OsmServerLocationReader.java           |   97 +-
 src/org/openstreetmap/josm/io/OsmServerReader.java |   37 +-
 src/org/openstreetmap/josm/io/OsmServerWriter.java |    1 -
 src/org/openstreetmap/josm/io/OsmWriter.java       |   12 +-
 .../josm/io/OverpassDownloadReader.java            |   20 +-
 .../openstreetmap/josm/io/ProgressInputStream.java |    2 +
 .../josm/io/ProgressOutputStream.java              |   16 +-
 .../josm/{gui => }/io/UploadStrategy.java          |    6 +-
 .../{gui => }/io/UploadStrategySpecification.java  |    3 +-
 .../josm/io/ValidatorErrorWriter.java              |  147 ++
 .../openstreetmap/josm/io/audio/AudioPlayer.java   |   17 +-
 src/org/openstreetmap/josm/io/audio/AudioUtil.java |    5 +-
 .../josm/io/audio/JavaSoundPlayer.java             |    4 +-
 .../josm/io/auth/AbstractCredentialsAgent.java     |    6 +
 .../josm/io/auth/CredentialsAgentException.java    |    7 +
 .../josm/io/auth/CredentialsManager.java           |    4 +-
 .../josm/io/auth/DefaultAuthenticator.java         |    4 +-
 .../josm/io/imagery/ImageryReader.java             |    8 +-
 .../openstreetmap/josm/io/imagery/WMSImagery.java  |   22 +-
 src/org/openstreetmap/josm/io/nmea/NmeaReader.java |   16 +-
 .../josm/io/remotecontrol/AddTagsDialog.java       |    9 +-
 .../josm/io/remotecontrol/RemoteControl.java       |   23 +-
 .../io/remotecontrol/RemoteControlHttpServer.java  |   21 +-
 .../io/remotecontrol/RemoteControlHttpsServer.java |   67 +-
 .../josm/io/remotecontrol/RequestProcessor.java    |   26 +-
 .../io/remotecontrol/handler/AddNodeHandler.java   |   20 +-
 .../io/remotecontrol/handler/AddWayHandler.java    |   17 +-
 .../io/remotecontrol/handler/FeaturesHandler.java  |    4 +-
 .../io/remotecontrol/handler/ImageryHandler.java   |   17 +-
 .../io/remotecontrol/handler/ImportHandler.java    |   12 +-
 .../remotecontrol/handler/LoadAndZoomHandler.java  |   54 +-
 .../io/remotecontrol/handler/LoadDataHandler.java  |    4 +-
 .../remotecontrol/handler/LoadObjectHandler.java   |   13 +-
 .../io/remotecontrol/handler/RequestHandler.java   |    7 +-
 .../josm/io/session/GeoImageSessionExporter.java   |    4 +-
 .../josm/io/session/GeoImageSessionImporter.java   |    4 +-
 .../josm/io/session/GpxTracksSessionImporter.java  |    4 +-
 .../josm/io/session/ImagerySessionExporter.java    |   28 +-
 .../josm/io/session/ImagerySessionImporter.java    |   49 +-
 .../josm/io/session/MarkerSessionExporter.java     |    4 +-
 .../josm/io/session/MarkerSessionImporter.java     |    2 +-
 .../josm/io/session/NoteSessionImporter.java       |    2 +-
 .../josm/io/session/OsmDataSessionImporter.java    |    2 +-
 .../josm/io/session/SessionAwareReadApply.java     |   25 +
 .../josm/io/session/SessionImporter.java           |    6 +-
 .../josm/io/session/SessionReader.java             |   15 +-
 .../josm/io/session/SessionWriter.java             |   10 +-
 src/org/openstreetmap/josm/plugins/Plugin.java     |    2 +-
 .../josm/plugins/PluginDownloadTask.java           |   11 +-
 .../openstreetmap/josm/plugins/PluginHandler.java  |   90 +-
 .../josm/plugins/PluginInformation.java            |   15 +-
 .../josm/plugins/PluginListParser.java             |    4 +-
 .../openstreetmap/josm/plugins/PluginProxy.java    |   22 +-
 .../plugins/ReadLocalPluginInformationTask.java    |   10 +-
 .../plugins/ReadRemotePluginInformationTask.java   |   15 +-
 .../openstreetmap/josm/tools/ExceptionUtil.java    |   57 +-
 src/org/openstreetmap/josm/tools/ExifReader.java   |   19 +-
 .../openstreetmap/josm/tools/GeoUrlToBounds.java   |    7 +-
 src/org/openstreetmap/josm/tools/Geometry.java     |   14 +-
 .../josm/{gui/util => tools}/GuiSizesHelper.java   |    5 +-
 src/org/openstreetmap/josm/tools/HttpClient.java   |   64 +-
 src/org/openstreetmap/josm/tools/I18n.java         |  150 +-
 .../openstreetmap/josm/tools/ImageProvider.java    |   59 +-
 .../openstreetmap/josm/tools/ImageResource.java    |    2 -
 src/org/openstreetmap/josm/tools/ImageWarp.java    |    4 +-
 src/org/openstreetmap/josm/tools/ListenerList.java |   12 +-
 src/org/openstreetmap/josm/tools/Logging.java      |   79 +-
 .../openstreetmap/josm/tools/MemoryManager.java    |    4 +-
 .../josm/tools/MultikeyActionsHandler.java         |   11 +-
 src/org/openstreetmap/josm/tools/OpenBrowser.java  |   12 +-
 .../openstreetmap/josm/tools/OsmUrlToBounds.java   |   19 +-
 .../josm/tools/OverpassTurboQueryWizard.java       |    3 +-
 src/org/openstreetmap/josm/tools/PlatformHook.java |  105 +-
 .../openstreetmap/josm/tools/PlatformHookOsx.java  |   59 +-
 .../josm/tools/PlatformHookUnixoid.java            |   10 +-
 .../josm/tools/PlatformHookWindows.java            |   40 +-
 .../josm/tools/RightAndLefthandTraffic.java        |   16 +-
 src/org/openstreetmap/josm/tools/Shortcut.java     |   12 +-
 src/org/openstreetmap/josm/tools/Territories.java  |    3 +-
 .../openstreetmap/josm/tools/TextTagParser.java    |   88 +-
 src/org/openstreetmap/josm/tools/Utils.java        |   99 +-
 .../openstreetmap/josm/tools/XmlObjectParser.java  |    7 +-
 .../josm/tools/bugreport/BugReport.java            |    2 +-
 .../josm/tools/bugreport/BugReportQueue.java       |    8 +-
 .../josm/tools/bugreport/BugReportSender.java      |    6 +-
 .../josm/tools/bugreport/ReportedException.java    |    4 +-
 .../josm/tools/bugreport/package-info.java         |    2 +-
 .../openstreetmap/josm/tools/date/DateUtils.java   |    5 +-
 .../template_engine/ContextSwitchTemplate.java     |   12 +-
 .../josm/tools/template_engine/ParseError.java     |    3 +-
 .../template_engine/SearchExpressionCondition.java |    2 +-
 .../TemplateEngineDataProvider.java                |    2 +-
 .../josm/tools/template_engine/TemplateParser.java |    9 +-
 styles/standard/elemstyles.mapcss                  |   38 +-
 test/data/__files/README                           |    1 +
 test/data/__files/imagery/maps.xml                 |   92 +
 test/data/__files/imagery/wms-capabilities.xml     |  122 ++
 test/data/__files/nominatim/London.xml             |   65 +
 .../nominatim/foo-bar-baz-does-not-exist.xml       |    6 +
 .../presets/Presets_BicycleJunction-preset.xml     |  120 ++
 test/data/__files/samples/data.gpx                 |   38 +
 test/data/__files/samples/data.osm                 |   70 +
 test/data/__files/samples/data.osn                 |   43 +
 .../openstreetmap/josm/data/BoundariesTestIT.java  |    2 +-
 .../josm/gui/history/HistoryBrowserTestFT.java     |    4 +-
 .../josm/gui/mappaint/MapCSSRendererTest.java      |    2 +-
 .../josm/gui/mappaint/StyleCacheTest.java          |    4 +-
 .../josm/io/MultiFetchServerObjectReaderTest.java  |    2 -
 .../josm/io/OsmServerBackreferenceReaderTest.java  |    4 +-
 .../josm/io/UploadStrategySelectionPanelTest.java  |    4 +-
 .../openstreetmap/josm/tools/HttpClientTest.java   |   22 +-
 .../AbstractMapRendererPerformanceTestParent.java  |   30 +-
 .../gui/mappaint/MapRendererPerformanceTest.java   |   25 +-
 .../mappaint/mapcss/MapCSSPerformanceTest.groovy   |  107 -
 .../gui/mappaint/mapcss/MapCSSPerformanceTest.java |  121 ++
 test/unit/org/openstreetmap/josm/JOSMFixture.java  |   54 +-
 test/unit/org/openstreetmap/josm/MainTest.java     |  144 +-
 .../josm/actions/AddImageryLayerActionTest.java    |   50 +-
 .../josm/actions/AddImageryLayerActionTestIT.java  |   42 -
 .../josm/actions/AlignInLineActionTest.java        |   45 +-
 .../openstreetmap/josm/actions/CopyActionTest.java |    6 +-
 .../josm/actions/CreateCircleActionTest.java       |   12 +-
 .../josm/actions/CreateMultipolygonActionTest.java |    8 +-
 .../josm/actions/DeleteLayerActionTest.java        |    8 +-
 .../josm/actions/FullscreenToggleActionTest.java   |    2 +-
 .../josm/actions/JoinAreasActionTest.java          |   19 +-
 .../josm/actions/MergeLayerActionTest.java         |   26 +-
 .../josm/actions/MergeNodesActionTest.java         |    2 +-
 .../josm/actions/OrthogonalizeActionTest.java      |    6 +-
 .../josm/actions/PurgeActionTest.java              |    8 +-
 .../actions/SelectByInternalPointActionTest.java   |   10 +-
 .../josm/actions/SimplifyWayActionTest.java        |   39 +-
 .../josm/actions/SplitWayActionTest.java           |   33 +-
 .../josm/actions/UnGlueActionTest.java             |   43 +-
 .../josm/actions/UnJoinNodeWayActionTest.java      |    6 +-
 .../AbstractDownloadTaskTestParent.java            |   59 +
 .../actions/downloadtasks/DownloadGpsTaskTest.java |   25 +-
 .../downloadtasks/DownloadNotesTaskTest.java       |   25 +-
 .../actions/downloadtasks/DownloadOsmTaskTest.java |   25 +-
 .../downloadtasks/PostDownloadHandlerTest.java     |   22 +-
 .../josm/actions/mapmode/AddNoteActionTest.java    |   18 +-
 .../josm/actions/mapmode/DeleteActionTest.java     |   18 +-
 .../josm/actions/mapmode/DrawActionTest.java       |   20 +-
 .../josm/actions/mapmode/ExtrudeActionTest.java    |   18 +-
 .../mapmode/ImproveWayAccuracyActionTest.java      |   18 +-
 .../josm/actions/mapmode/MapViewMock.java          |    4 +-
 .../actions/mapmode/ParallelWayActionTest.java     |   20 +-
 .../josm/actions/mapmode/PlayHeadDragModeTest.java |   18 +-
 .../josm/actions/mapmode/SelectActionTest.java     |   16 +-
 .../josm/actions/upload/FixDataHookTest.java       |   14 +-
 .../actions/upload/ValidateUploadHookTest.java     |    6 +-
 .../openstreetmap/josm/command/AddCommandTest.java |   10 +-
 .../josm/command/AddPrimitivesCommandTest.java     |   20 +-
 .../openstreetmap/josm/command/CommandTest.java    |    4 +-
 .../command/conflict/ConflictAddCommandTest.java   |   46 +-
 .../CoordinateConflictResolveCommandTest.java      |   32 +-
 .../josm/data/{osm => }/APIDataSetTest.java        |   11 +-
 .../josm/data/cache/HostLimitQueueTest.java        |    4 +-
 .../data/cache/JCSCachedTileLoaderJobTest.java     |    6 +-
 .../data/imagery/TemplatedWMSTileSourceTest.java   |    6 +-
 .../josm/data/imagery/WMTSTileSourceTest.java      |    8 +-
 .../josm/data/osm/ChangesetDataSetTest.java        |    3 +-
 .../openstreetmap/josm/data/osm/ChangesetTest.java |    7 +-
 .../osm}/DefaultNameFormatterTest.java             |   42 +-
 .../openstreetmap/josm/data/osm/FilterTest.java    |    6 +-
 .../data/osm/event/SelectionEventManagerTest.java  |    8 +-
 .../josm/data/osm/history/HistoryNodeTest.java     |    2 +-
 .../josm/data/osm/history/HistoryRelationTest.java |    2 +-
 .../josm/data/osm/history/HistoryWayTest.java      |    6 +-
 .../osm}/search/PushbackTokenizerTest.java         |    4 +-
 .../osm}/search/SearchCompilerTest.java            |  125 +-
 .../osm/search/SearchModeTest.java}                |    7 +-
 .../validation/routines/DomainValidatorTest.java   |   12 +-
 .../validation/routines/DomainValidatorTestIT.java |    4 +-
 .../validation/routines/RegexValidatorTest.java    |    4 +-
 .../josm/data/validation/tests/CoastlinesTest.java |    2 +-
 .../data/validation/tests/ConditionalKeysTest.java |   15 +-
 .../validation/tests/MapCSSTagCheckerTest.java     |    4 +-
 .../validation/tests/MultipolygonTestTest.java     |    2 +-
 .../validation/tests/SelfIntersectingWayTest.java  |    2 +-
 .../josm/data/validation/tests/TagCheckerTest.java |   15 +-
 .../data/validation/tests/ValidatorTestUtils.java  |    2 +-
 .../josm/gui/MainApplicationTest.java              |  219 +-
 .../org/openstreetmap/josm/gui/MapScalerTest.java  |   19 +-
 .../josm/gui/TableCellRendererTest.java            |   13 +-
 .../pair/nodes/NodeListMergeModelTest.java         |    6 +-
 .../gui/conflict/pair/tags/TagMergeItemTest.java   |    8 +-
 .../gui/datatransfer/OsmTransferHandlerTest.java   |    2 +-
 .../josm/gui/dialogs/CommandStackDialogTest.java   |   26 +-
 .../josm/gui/dialogs/ConflictDialogTest.java       |   10 +-
 .../gui/dialogs/InspectPrimitiveDialogTest.java    |   13 +-
 .../josm/gui/dialogs/MapPaintDialogTest.java       |    9 +-
 .../josm/gui/dialogs/MinimapDialogTest.java        |    2 +-
 .../gui/dialogs/layer/DuplicateActionTest.java     |    8 +-
 .../dialogs/layer/LayerVisibilityActionTest.java   |   18 +-
 .../properties/RecentTagCollectionTest.java        |   10 +-
 .../gui/dialogs/properties/TagEditHelperTest.java  |   68 +
 .../relation/GenericRelationEditorTest.java        |    2 +-
 .../gui/dialogs/relation/SelectionTableTest.java   |    6 +-
 .../actions/RelationEditorActionsTest.java         |    2 +-
 .../{data => gui/io}/CustomConfiguratorTest.java   |    5 +-
 .../josm/gui/io/UploadDialogTest.java              |    1 +
 .../josm/gui/io/UploadPrimitivesTaskTest.java      |    1 +
 .../gui/io/UploadStrategySelectionPanelTest.java   |    2 +
 .../io/importexport}/JpgImporterTest.java          |    2 +-
 .../io/importexport}/NoteImporterTest.java         |    8 +-
 .../gui/layer/AbstractTileSourceLayerTest.java     |    5 +-
 .../josm/{data => gui/layer}/AutosaveTaskTest.java |   15 +-
 .../openstreetmap/josm/gui/layer/GpxLayerTest.java |   23 +-
 .../josm/gui/layer/MarkerLayerTest.java            |   20 +-
 .../josm/gui/layer/OsmDataLayerTest.java           |   12 +-
 .../openstreetmap/josm/gui/layer/TMSLayerTest.java |   19 +-
 .../josm/gui/layer/ValidatorLayerTest.java         |    6 +-
 .../openstreetmap/josm/gui/layer/WMSLayerTest.java |   19 +-
 .../josm/gui/layer/WMTSLayerTest.java              |   13 +-
 .../josm/gui/layer/geoimage/GeoImageLayerTest.java |   10 +-
 .../layer/gpx/ChooseTrackVisibilityActionTest.java |   13 +-
 .../layer/gpx/ConvertToDataLayerActionTest.java    |   13 +-
 .../layer/gpx/DownloadAlongTrackActionTest.java    |    6 +-
 .../layer/gpx/DownloadWmsAlongTrackActionTest.java |   19 +-
 .../josm/gui/layer/gpx/GpxDrawHelperTest.java      |   13 +-
 .../gui/layer/markerlayer/MarkerLayerTest.java     |   21 +-
 .../oauth/FullyAutomaticAuthorizationUITest.java   |    4 +-
 .../josm/gui/oauth/ManualAuthorizationUITest.java  |    4 +-
 .../oauth/SemiAutomaticAuthorizationUITest.java    |    4 +-
 .../preferences/imagery/ImageryPreferenceTest.java |    9 +-
 .../preferences/map/MapPaintPreferenceTestIT.java  |    2 +-
 .../map/TaggingPresetPreferenceTestIT.java         |    9 +-
 .../ValidatorTagCheckerRulesPreferenceTestIT.java  |    2 +-
 .../gui/tagging/presets/items/PresetLinkTest.java  |   15 +-
 .../{tools => gui/util}/WindowGeometryTest.java    |    4 +-
 .../josm/io/OverpassDownloadReaderTest.java        |   39 +-
 .../josm/io/remotecontrol/RemoteControlTest.java   |    3 +-
 .../remotecontrol/handler/AddNodeHandlerTest.java  |   22 +-
 .../remotecontrol/handler/AddWayHandlerTest.java   |   22 +-
 .../remotecontrol/handler/ImageryHandlerTest.java  |   12 +-
 .../remotecontrol/handler/ImportHandlerTest.java   |   18 +-
 .../handler/LoadAndZoomHandlerTest.java            |   12 +-
 .../handler/LoadObjectHandlerTest.java             |   12 +-
 .../remotecontrol/handler/RequestHandlerTest.java  |   11 +
 .../josm/io/session/SessionReaderTest.java         |   21 +-
 .../josm/io/session/SessionWriterTest.java         |   23 +-
 .../josm/plugins/PluginHandlerTestIT.java          |   11 +-
 .../josm/testutils/JOSMTestRules.java              |   59 +-
 .../openstreetmap/josm/tools/ExifReaderTest.java   |    4 +-
 .../org/openstreetmap/josm/tools/GeometryTest.java |    2 +-
 .../josm/tools/OsmUrlToBoundsTest.java             |    3 +-
 .../josm/tools/PlatformHookOsxTest.java            |    4 +-
 .../josm/tools/PlatformHookWindowsTest.java        |   10 +-
 .../josm/tools/RightAndLefthandTrafficTest.java    |    2 +-
 .../org/openstreetmap/josm/tools/UtilsTest.java    |    8 +
 .../bugreport/BugReportSettingsPanelTest.java      |    1 +
 .../josm/tools/bugreport/DebugTextDisplayTest.java |    1 +
 .../tools/template_engine/TemplateParserTest.java  |   21 +-
 tools/checkstyle/.classpath                        |    7 +
 tools/checkstyle/.project                          |   46 +
 .../.settings/org.eclipse.core.resources.prefs     |    2 +
 .../.settings/org.eclipse.jdt.core.prefs           |   11 +
 tools/checkstyle/META-INF/MANIFEST.MF              |   19 +
 tools/checkstyle/build.properties                  |    8 +
 tools/checkstyle/josm_checks.xml                   |   13 +-
 tools/checkstyle/josm_filters.xml                  |    2 +
 tools/checkstyle/plugin.xml                        |   41 +
 tools/checkstyle/src/checkstyle_packages.xml       |   14 +
 .../openstreetmap/josm/TopLevelJavadocCheck.java   |   96 +
 .../josm/checkstyle-metadata.properties            |    4 +
 .../org/openstreetmap/josm/checkstyle-metadata.xml |   14 +
 .../src/org/openstreetmap/josm/messages.properties |    1 +
 1005 files changed, 89987 insertions(+), 74158 deletions(-)

diff --git a/.checkstyle b/.checkstyle
index 7457ef6..a4a09ce 100644
--- a/.checkstyle
+++ b/.checkstyle
@@ -21,6 +21,7 @@
     <filter-data value=".svn"/>
     <filter-data value="data"/>
     <filter-data value="images"/>
+    <filter-data value="javadoc"/>
     <filter-data value="resources"/>
     <filter-data value="styles"/>
     <filter-data value="scripts"/>
diff --git a/.classpath b/.classpath
index bedc33b..cf578e3 100644
--- a/.classpath
+++ b/.classpath
@@ -14,13 +14,14 @@
 	<classpathentry kind="lib" path="test/lib/fest/jcip-annotations-1.0.jar"/>
 	<classpathentry kind="lib" path="test/lib/fest/MRJToolkitStubs-1.0.jar"/>
 	<classpathentry kind="lib" path="test/lib/jfcunit.jar"/>
-	<classpathentry exported="true" kind="lib" path="test/lib/equalsverifier-2.3.1.jar"/>
+	<classpathentry kind="lib" path="test/lib/equalsverifier-2.3.3.jar"/>
 	<classpathentry kind="lib" path="test/lib/reflections/reflections-0.9.10.jar"/>
 	<classpathentry kind="lib" path="test/lib/reflections/guava-21.0.jar"/>
 	<classpathentry kind="lib" path="test/lib/reflections/javassist-3.21.0-GA.jar"/>
 	<classpathentry kind="lib" path="test/lib/system-rules-1.16.1.jar"/>
 	<classpathentry kind="lib" path="test/lib/unitils-core/unitils-core-3.4.6.jar"/>
 	<classpathentry kind="lib" path="test/lib/commons-testing/commons-testing-2.1.0.jar"/>
+	<classpathentry kind="lib" path="test/lib/wiremock-standalone-2.7.1.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
 	<classpathentry kind="lib" path="test/lib/unitils-core/commons-collections-3.2.2.jar"/>
diff --git a/README b/README
index 25baee2..5a63eb0 100644
--- a/README
+++ b/README
@@ -175,8 +175,8 @@ There are some third party libraries which are directly included in the source c
     -> https://github.com/arenn/java-getopt
 * MultiSplitPane: Small lib for GUI layout management
     src/org/openstreetmap/josm/gui/MultiSplitLayout.java, MultiSplitPane.java
-    -> http://today.java.net/pub/a/today/2006/03/23/multi-split-pane.html
+    -> https://github.com/floscher/multi-split
     -> https://community.oracle.com/docs/DOC-983539
 * swinghelper: Class CheckThreadViolationRepaintManager to find classpath violations
     src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
-    -> https://java.net/projects/swinghelper
+    -> https://github.com/floscher/swinghelper
diff --git a/REVISION b/REVISION
index 26d06b1..d65885f 100644
--- a/REVISION
+++ b/REVISION
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <info>
 <entry
-   revision="12545"
-   kind="dir"
-   path="trunk">
+   path="trunk"
+   revision="12712"
+   kind="dir">
 <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="12545">
+   revision="12712">
 <author>Don-vip</author>
-<date>2017-07-30T23:02:55.524183Z</date>
+<date>2017-09-02T12:47:18.517740Z</date>
 </commit>
 </entry>
 </info>
diff --git a/build.xml b/build.xml
index 48b78cb..9810895 100644
--- a/build.xml
+++ b/build.xml
@@ -23,10 +23,14 @@
         <property name="javacc.home" location="${base.dir}/tools"/>
         <property name="mapcss.dir" location="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss"/>
         <property name="proj-build.dir" location="${base.dir}/build2"/>
+        <property name="checkstyle-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.jar"/>
         <property name="error_prone_ant.jar" location="${base.dir}/tools/error_prone_ant.jar"/>
+        <property name="dist.jar" location="${dist.dir}/josm-custom.jar"/>
+        <property name="dist-optimized.jar" location="${dist.dir}/josm-custom-optimized.jar"/>
         <property name="javac.compiler" value="com.google.errorprone.ErrorProneAntCompilerAdapter" />
+        <property name="java.lang.version" value="1.8" />
         <!-- build parameter: compression level (ant -Dclevel=N)
                  N ranges from 0 (no compression) to 9 (maximum compression)
                  default: 9 -->
@@ -41,7 +45,7 @@
             <fileset dir="${test.dir}/lib">
                 <include name="**/*.jar"/>
             </fileset>
-            <pathelement path="${dist.dir}/josm-custom.jar"/>
+            <pathelement path="${dist.jar}"/>
             <pathelement path="${groovy.jar}"/>
             <pathelement path="tools/findbugs/annotations.jar"/>
         </path>
@@ -128,12 +132,12 @@ Build-Date: ${build.tstamp}
     -->
     <target name="dist" depends="compile,create-revision,check-schemas,epsg">
         <echo>Revision ${version.entry.commit.revision}</echo>
-        <copy file="CONTRIBUTION" todir="build"/>
-        <copy file="README" todir="build"/>
-        <copy file="LICENSE" todir="build"/>
+        <copy file="CONTRIBUTION" todir="${build.dir}"/>
+        <copy file="README" todir="${build.dir}"/>
+        <copy file="LICENSE" todir="${build.dir}"/>
         <!-- create josm-custom.jar -->
-        <delete file="${dist.dir}/josm-custom.jar"/>
-        <jar destfile="${dist.dir}/josm-custom.jar" basedir="${build.dir}" level="${clevel}">
+        <delete file="${dist.jar}"/>
+        <jar destfile="${dist.jar}" basedir="${build.dir}" level="${clevel}">
             <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
             <manifest>
                 <attribute name="Main-class" value="org.openstreetmap.josm.gui.MainApplication"/>
@@ -203,14 +207,14 @@ Build-Date: ${build.tstamp}
     <target name="distmac" depends="dist">
         <antcall target="mac">
             <param name="bundle.outdir" value="${dist.dir}"/>
-            <param name="bundle.jar" value="${dist.dir}/josm-custom.jar"/>
+            <param name="bundle.jar" value="${dist.jar}"/>
         </antcall>
     </target>
     <!-- Windows target -->
     <target name="distwin" depends="dist">
         <exec dir="windows" executable="./josm-setup-unix.sh">
             <arg value="${version.entry.commit.revision}"/>
-            <arg value="../dist/josm-custom.jar"/>
+            <arg value="${dist.jar}"/>
         </exec>
     </target>
     <target name="javacc" depends="init" unless="javacc.notRequired">
@@ -219,16 +223,16 @@ Build-Date: ${build.tstamp}
             <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="-JDK_VERSION=${java.lang.version}"/>
             <arg value="-GRAMMAR_ENCODING=UTF-8"/>
             <arg value="-OUTPUT_DIRECTORY=${mapcss.dir}/parsergen"/>
             <arg value="${mapcss.dir}/MapCSSParser.jj"/>
         </java>
     </target>
-    <target name="compile" depends="init,javacc">
+    <target name="compile-cots" depends="init">
         <!-- COTS -->
-        <javac srcdir="${src.dir}" includes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**" nowarn="on" encoding="iso-8859-1"
-            destdir="build" target="1.8" source="1.8" debug="on" includeAntRuntime="false" createMissingPackageInfoClass="false">
+        <javac srcdir="${src.dir}" includes="com/**,javax/**,oauth/**,org/apache/commons/**,org/glassfish/**" nowarn="on" encoding="iso-8859-1"
+            destdir="${build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on" includeAntRuntime="false" createMissingPackageInfoClass="false">
             <!-- get rid of "internal proprietary API" warning -->
             <compilerarg value="-XDignore.symbol.file"/>
             <exclude name="org/apache/commons/compress/PasswordRequiredException.java"/>
@@ -277,10 +281,12 @@ Build-Date: ${build.tstamp}
             <exclude name="org/apache/commons/logging/impl/LogKitLogger.java"/>
             <exclude name="org/apache/commons/logging/impl/ServletContextCleaner.java"/>
         </javac>
+    </target>
+    <target name="compile-jmapviewer" depends="init">
         <!-- JMapViewer -->
         <javac compiler="${javac.compiler}" sourcepath="" srcdir="${src.dir}" 
-            excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java,org/openstreetmap/gui/jmapviewer/JMapViewerTree.java,org/openstreetmap/gui/jmapviewer/checkBoxTree/**,org/openstreetmap/josm/**,gnu/**"
-            destdir="build" target="1.8" source="1.8" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+            excludes="com/**,javax/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java,org/openstreetmap/gui/jmapviewer/JMapViewerTree.java,org/openstreetmap/gui/jmapviewer/checkBoxTree/**,org/openstreetmap/josm/**,gnu/**"
+            destdir="${build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
             <compilerclasspath>
                 <pathelement location="${error_prone_ant.jar}"/>
             </compilerclasspath>
@@ -300,10 +306,12 @@ Build-Date: ${build.tstamp}
             <compilerarg value="-Xep:ReferenceEquality:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
             <compilerarg line="-Xmaxwarns 1000"/>
         </javac>
+    </target>
+    <target name="compile" depends="init,javacc,compile-cots,compile-jmapviewer">
         <!-- JOSM -->
-        <javac compiler="${javac.compiler}" sourcepath="" srcdir="${src.dir}" 
-            excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/**"
-            destdir="build" target="1.8" source="1.8" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+        <javac compiler="${javac.compiler}" sourcepath="" srcdir="${src.dir}"
+            excludes="com/**,javax/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/**"
+            destdir="${build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
             <compilerclasspath>
                 <pathelement location="${error_prone_ant.jar}"/>
             </compilerclasspath>
@@ -365,6 +373,7 @@ Build-Date: ${build.tstamp}
     <target name="clean" depends="init-properties">
         <delete dir="${build.dir}"/>
         <delete dir="${proj-build.dir}"/>
+        <delete dir="${checkstyle-build.dir}"/>
         <delete dir="${dist.dir}"/>
         <delete dir="${mapcss.dir}/parsergen"/>
         <delete file="${src.dir}/org/w3/_2001/xmlschema/Adapter1.java"/>
@@ -407,7 +416,7 @@ Build-Date: ${build.tstamp}
                 <classpath>
                     <cp-elements/>
                 </classpath>
-                <javac target="1.8" source="1.8" debug="on" encoding="UTF-8">
+                <javac target="${java.lang.version}" source="${java.lang.version}" debug="on" encoding="UTF-8">
                     <compilerarg value="-Xlint:all"/>
                     <compilerarg value="-Xlint:-serial"/>
                 </javac>
@@ -526,8 +535,8 @@ Build-Date: ${build.tstamp}
     <target name="dist-optimized" depends="dist" unless="isJava9">
         <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard.jar"/>
         <proguard>
-        -injars dist/josm-custom.jar
-        -outjars dist/josm-custom-optimized.jar
+        -injars ${dist.jar}
+        -outjars ${dist-optimized.jar}
 
         -libraryjars ${java.home}/lib/rt.jar
         -libraryjars ${java.home}/lib/jce.jar
@@ -583,8 +592,8 @@ Build-Date: ${build.tstamp}
             <arg value="--v1=${version.entry.commit.revision}"/>
             <arg value="--v2=${version.entry.commit.revision}-optimized"/>
             <arg value="--report-path=${dist.dir}/compat_report.html"/>
-            <arg value="${dist.dir}/josm-custom.jar"/>
-            <arg value="${dist.dir}/josm-custom-optimized.jar"/>
+            <arg value="${dist.jar}"/>
+            <arg value="${dist-optimized.jar}"/>
         </exec>
     </target>
     <target name="check-plugins" depends="dist-optimized">
@@ -656,7 +665,7 @@ Build-Date: ${build.tstamp}
         <!-- Check plugins -->
         <as:build-signatures destfile="${dir}/api.sig">
             <path>
-                <fileset file="${dist.dir}/josm-custom-optimized.jar"/>
+                <fileset file="${dist-optimized.jar}"/>
                 <fileset file="${java.home}/lib/rt.jar"/>
                 <fileset file="${java.home}/lib/jce.jar"/>
             </path>
@@ -703,7 +712,7 @@ Build-Date: ${build.tstamp}
         <attribute name="output"/>
         <sequential>
             <echo message="Generating Taginfo for type @{type} to @{output}"/>
-            <groovy src="${taginfoextract}" classpath="${dist.dir}/josm-custom.jar:tools/findbugs/annotations.jar">
+            <groovy src="${taginfoextract}" classpath="${dist.jar}:tools/findbugs/annotations.jar">
                 <arg value="-t"/>
                 <arg value="@{type}"/>
                 <arg value="--noexit"/>
@@ -728,7 +737,7 @@ Build-Date: ${build.tstamp}
     <target name="imageryindex" depends="init-properties">
         <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">
+        <groovy src="scripts/SyncEditorLayerIndex.groovy" classpath="${dist.jar}">
                 <arg value="-noeli"/>
                 <arg value="-p"/>
                 <arg value="imagery_eliout.imagery.xml"/>
@@ -759,9 +768,17 @@ Build-Date: ${build.tstamp}
         <antcall target="imageryindex"/>
     </target>
 
-    <target name="checkstyle" depends="init-properties">
+    <target name="checkstyle-compile" depends="init-properties">
+        <mkdir dir="${checkstyle-build.dir}"/>
+        <javac sourcepath="" srcdir="${base.dir}/tools/checkstyle/src" failonerror="true"
+            destdir="${checkstyle-build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on"
+            includeantruntime="false" createMissingPackageInfoClass="false"
+            encoding="UTF-8" classpath="tools/checkstyle/checkstyle-all.jar">
+        </javac>
+    </target>
+    <target name="checkstyle" depends="checkstyle-compile">
         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"
-             classpath="tools/checkstyle/checkstyle-all.jar"/>
+             classpath="tools/checkstyle/checkstyle-all.jar:${checkstyle-build.dir}"/>
         <checkstyle config="tools/checkstyle/josm_checks.xml">
             <fileset dir="${base.dir}/src/org/openstreetmap/josm" includes="**/*.java"
                 excludes="gui/mappaint/mapcss/parsergen/*.java"/>
@@ -788,14 +805,14 @@ Build-Date: ${build.tstamp}
                 reportLevel="low"
                 >
             <sourcePath path="${base.dir}/src" />
-            <class location="${dist.dir}/josm-custom.jar" />
+            <class location="${dist.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" />
+            <sourceLanguage name="java" version="${java.lang.version}" />
             <ruleset>${base.dir}/tools/pmd/josm-ruleset.xml</ruleset>
             <formatter type="text" toConsole="true" />
             <formatter type="xml" toFile="pmd-josm.xml">
@@ -809,7 +826,7 @@ Build-Date: ${build.tstamp}
     </target>
 
     <target name="run" depends="dist">
-        <java jar="${dist.dir}/josm-custom.jar" fork="true">
+        <java jar="${dist.jar}" fork="true">
             <arg value="--set=expert=true"/>
             <arg value="--set=remotecontrol.enabled=true"/>
             <arg value="--set=debug.edt-checker.enable=false"/>
@@ -823,7 +840,7 @@ Build-Date: ${build.tstamp}
         <property name="proj-classpath" location="${build.dir}"/>
         <mkdir dir="${proj-build.dir}"/>
         <javac sourcepath="" srcdir="${base.dir}/scripts" failonerror="true"
-            destdir="${proj-build.dir}" target="1.8" source="1.8" debug="on"
+            destdir="${proj-build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on"
             includeantruntime="false" createMissingPackageInfoClass="false"
             encoding="UTF-8" classpath="${proj-classpath}">
         </javac>
diff --git a/data/defaultpresets.xml b/data/defaultpresets.xml
index caa9c1f..eff67b7 100644
--- a/data/defaultpresets.xml
+++ b/data/defaultpresets.xml
@@ -662,6 +662,7 @@
         <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"
+                  da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=unclassified"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=unclassified"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=unclassified"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=unclassified"
@@ -1246,6 +1247,7 @@
                   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"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=motorway_junction"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA: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"
@@ -1262,6 +1264,7 @@
                   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"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl: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" />
@@ -3178,6 +3181,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car_repair"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=car_repair"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=car_repair"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=car_repair"
@@ -3193,6 +3197,8 @@
             <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"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=car_parts"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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 />
@@ -3206,7 +3212,9 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=tyres"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tyres"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=tyres"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=tyres"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tyres"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=tyres"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=tyres" />
             <space />
             <key key="shop" value="tyres" />
@@ -3270,6 +3278,7 @@
                   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"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=motorcycle"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA: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" />
@@ -3322,6 +3331,7 @@
                   es.href="http://wiki.openstreetmap.org/wiki/ES: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"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=bicycle"
@@ -3646,6 +3656,7 @@
                   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"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=bus_stop"
@@ -3766,6 +3777,7 @@
         <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"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE: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" />
@@ -4116,6 +4128,7 @@
             <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"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES: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"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=food_court"
@@ -5016,7 +5029,8 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=townhall"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA: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" />
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=townhall"
+                  sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:amenity=townhall" />
             <space />
             <key key="amenity" value="townhall" />
             <reference ref="name_oh_wheelchair" />
@@ -5500,6 +5514,22 @@
     </group> <!-- Emergency -->
     <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/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"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:social_facility"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:social_facility"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:social_facility" />
+            <space />
+            <key key="amenity" value="social_facility" />
+            <key key="social_facility" value="nursing_home" />
+            <reference ref="name_operator" />
+            <text key="capacity" text="Capacity" />
+            <reference ref="link_contact_address" />
+        </item> <!-- Nursing Home -->
+        <item name="Nursing Home (Legacy)" 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"
@@ -5511,7 +5541,7 @@
             <reference ref="name_operator" />
             <text key="capacity" text="Capacity" />
             <reference ref="link_contact_address" />
-        </item> <!-- Nursing Home -->
+        </item> <!-- Nursing Home (Legacy)-->
         <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"
@@ -5624,6 +5654,7 @@
                   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"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=shower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=shower" />
             <space />
             <key key="amenity" value="shower" />
@@ -8330,6 +8361,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=electronics"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=electronics"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=electronics"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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" />
@@ -8466,6 +8498,7 @@
             <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"
+                  id.href="http://wiki.openstreetmap.org/wiki/Id: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" />
@@ -8917,6 +8950,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hardware"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=hardware"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=hardware"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT: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" />
@@ -9008,6 +9042,20 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Variety Store -->
+        <item name="Charity" icon="presets/shop/charity.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=charity"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=charity"
+                  da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:shop=charity"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=charity"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=charity"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=charity"
+                  pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=charity"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=charity" />
+            <space />
+            <key key="shop" value="charity" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Charity -->
         <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"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:shop=bookmaker"
@@ -10581,6 +10629,7 @@
         <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"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=common"
                   es.href="http://wiki.openstreetmap.org/wiki/ES: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"
@@ -10713,6 +10762,7 @@
             <space />
             <key key="landuse" value="industrial" />
             <text key="name" text="Name" />
+            <combo key="industrial" text="Type" values="bakery,brewery,brickyard,depot,distributor,factory,grinding_mill,heating_station,machine_shop,mine,oil,port,salt_pond,sawmill,scrap_yard,shipyard,slaughterhouse,warehouse" values_context="industrial" />
         </item> <!-- Industrial -->
         <item name="Garages" icon="presets/landuse/garages.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=garages"
diff --git a/data/validator/combinations.mapcss b/data/validator/combinations.mapcss
index 57016be..3f00f31 100644
--- a/data/validator/combinations.mapcss
+++ b/data/validator/combinations.mapcss
@@ -102,7 +102,6 @@ node[map_type                  ][information!=map],
 *[site_type                    ][historic!=archaeological_site],
 *[artwork_type                 ][tourism!=artwork],
 *[castle_type                  ][historic!=castle],
-*[bridge:movable               ][bridge!=movable],
 *[parking                      ][amenity!~/^(parking|parking_space|parking_entrance|motorcycle_parking)$/],
 way[cutline                    ][man_made!=cutline],
 *[bunker_type                  ][military!=bunker] {
@@ -111,6 +110,7 @@ way[cutline                    ][man_made!=cutline],
 }
 
 /* {0.key} without {1.tag} or {2.tag} */
+*[bridge:movable               ][bridge!=movable][man_made!=bridge],
 *[substation                   ][power!=substation][pipeline!=substation],
 *[reservoir_type               ][landuse!=reservoir][water!=reservoir] {
   throwWarning: tr("{0} without {1} or {2}", "{0.key}", "{1.tag}", "{2.tag}");
@@ -303,8 +303,8 @@ way[highway=footway][cycleway=lane] {
 }
 
 /* {0} on suspicious object */
-*[tunnel  ][!highway][!railway][!waterway][public_transport != platform][man_made != pipeline],
-*[bridge  ][!highway][!railway][!waterway][!piste:type][public_transport != platform][man_made !~ /^(bridge|pipeline)$/][building != bridge],
+*[tunnel  ][!highway][!railway][!waterway][!piste:type][public_transport!=platform][route!=ferry][man_made!=pipeline][man_made!=goods_conveyor],
+*[bridge  ][!highway][!railway][!waterway][!piste:type][public_transport!=platform][route!=ferry][man_made!=pipeline][man_made!=goods_conveyor][man_made!=bridge][building!=bridge],
 *[psv     ][!highway][!railway][!waterway][amenity !~ /^parking.*/],
 *[width   ][!highway][!railway][!waterway][!aeroway][!cycleway][!footway][!barrier][!man_made][!entrance][natural!=stone],
 *[maxspeed][!highway][!railway][traffic_sign !~ /^((.*;)?maxspeed(;.*)?|[A-Z][A-Z]:.+)$/][type != enforcement][waterway !~ /^(river|canal|lock)$/][!traffic_calming][aerialway!=zip_line] {
diff --git a/data/validator/geometry.mapcss b/data/validator/geometry.mapcss
index e7b435d..f55d819 100644
--- a/data/validator/geometry.mapcss
+++ b/data/validator/geometry.mapcss
@@ -93,7 +93,8 @@ way[amenity=vending_machine],
 way[natural=peak],
 way[natural=saddle],
 way[natural=volcano],
-way[natural=tree] {
+way[natural=tree],
+way[highway=motorway_junction] {
   throwWarning: tr("{0} on a way. Should be used on a node.", "{0.tag}"); 
 }
 
@@ -321,4 +322,32 @@ way[highway][area!=yes][!tunnel][!covered] > node {
 }
 way[building][building!=no] > node.node_in_highway!.first_last_node {
   throwWarning: tr("node connects highway and building");
-}
\ No newline at end of file
+}
+
+/* #15035, must not warn for node 3815077900*/
+node[man_made!=monitoring_station][at(0.0,0.0)] {
+  throwError: tr("Object at Position 0.00E 0.00N. There is nothing at this position except an already mapped weather buoy.");
+  fixDeleteObject: this;
+}
+
+/* #15097 */
+way[highway][area!=yes] > node,
+way[man_made=pier] > node {
+  set node_in_highway_pier;
+}
+way[route=ferry][tunnel=yes] > node,
+way[route=ferry][bridge=yes] > node {
+  set node_in_ferry_bridge_tunnel;
+}
+way[route=ferry]!:closed >[index= 1] node!.node_in_highway_pier!.node_in_ferry_bridge_tunnel:in-downloaded-area,
+way[route=ferry]!:closed >[index=-1] node!.node_in_highway_pier!.node_in_ferry_bridge_tunnel:in-downloaded-area { 
+  throwWarning: tr("Ferry route is not connected to the road network or branches.");
+}
+way[amenity=ferry_terminal] > node,
+way[man_made=pier] > node {
+  set node_in_terminal_pier;
+}
+way[route=ferry]!:closed >[index= 1] node[amenity!=ferry_terminal][man_made!=pier]!.node_in_terminal_pier!.node_in_ferry_bridge_tunnel:in-downloaded-area,
+way[route=ferry]!:closed >[index=-1] node[amenity!=ferry_terminal][man_made!=pier]!.node_in_terminal_pier!.node_in_ferry_bridge_tunnel:in-downloaded-area { 
+  throwWarning: tr("Ferry route is not connected to a ferry terminal or branches.");
+}
diff --git a/data/validator/highway.mapcss b/data/validator/highway.mapcss
index 4318fc0..447e624 100644
--- a/data/validator/highway.mapcss
+++ b/data/validator/highway.mapcss
@@ -128,12 +128,14 @@ way[footway][footway!=sidewalk][footway!=crossing]!.fixable_footway!.not_fixable
 
 /* #11270 */
 way[railway =~ /^(light_rail|miniature|narrow_gauge|preserved|rail)$/] > node { set .is_in_railway }
-way[highway =~ /^(bridleway|cycleway|footway|path|steps)$/] > node[railway != crossing].is_in_railway {
+way[highway =~ /^(bridleway|cycleway|footway|path|steps)$/] > node { set .is_in_minor_road }
+way[highway =~ /^(bus_guideway|living_street|motorway|pedestrian|primary|raceway|residential|road|secondary|service|tertiary|track|trunk|unclassified)/] > node { set .is_in_major_road }
+node[railway!=crossing].is_in_railway.is_in_minor_road!.is_in_major_road {
   throwWarning: tr("pedestrian railway crossing without {0}", "{0.tag}");
   group: tr("missing tag");
   fixAdd: "railway=crossing";
 }
-way[highway =~ /^(bus_guideway|living_street|motorway|pedestrian|primary|raceway|residential|road|secondary|service|tertiary|track|trunk|unclassified)/] > node[railway != level_crossing].is_in_railway {
+node[railway!=level_crossing].is_in_railway.is_in_major_road!.is_in_minor_road {
   throwWarning: tr("railway crossing without {0}", "{0.tag}");
   group: tr("missing tag");
   fixAdd: "railway=level_crossing";
diff --git a/data/validator/ignoretags.cfg b/data/validator/ignoretags.cfg
index 75faec2..7c2ba07 100644
--- a/data/validator/ignoretags.cfg
+++ b/data/validator/ignoretags.cfg
@@ -133,6 +133,7 @@ F::conditional
 ; Misc Tags
 ;
 K:type=is_in
+K:noref=yes
 K:bridge=swing
 K:residential=rural
 K:residential=urban
@@ -141,6 +142,7 @@ K:waterway=rapids
 K:bicycle=dismount
 K:wall=no
 K:man_made=petroleum_well
+K:man_made=yes
 K:railway=construction
 K:railway=razed
 K:railway=stop
@@ -153,6 +155,8 @@ K:toilets:wheelchair=yes
 K:toilets:wheelchair=no
 K:locality=townland
 K:place=allotments
+K:place=city_block
+K:place=plot
 K:building=bunker
 K:building=civic
 K:building=houseboat
@@ -169,7 +173,6 @@ K:glacier:type=rock
 K:glacier:type=mountain
 K:glacier:type=ice_tongue
 K:glacier:type=icecap
-K:place=city_block
 K:waterway=drystream
 ;
 ; Highway Key/Value Pairs
@@ -319,4 +322,5 @@ K:type=TMC
 ; see https://josm.openstreetmap.de/ticket/10759
 ;
 K:man_made=mast
+K:amenity=childcare
 K:landuse=logging
diff --git a/data/validator/territories.mapcss b/data/validator/territories.mapcss
index d5510cb..c736566 100644
--- a/data/validator/territories.mapcss
+++ b/data/validator/territories.mapcss
@@ -1,17 +1,17 @@
-/* see ticket #12914 -- Discourage contributors to use operator=ERDF in France. */
-*[operator=ERDF][inside("FR")] {
-  throwWarning: tr("{0} is deprecated", "{0.tag}");
-  suggestAlternative: "operator=Enedis";
-  group: tr("deprecated tagging");
-  fixAdd: "operator=Enedis";
-}
-
-/* #13932 */
-*[addr:street =~ /(?i).*Strasse.*/][inside("DE,AT")],
-*[name =~ /(?i).*Strasse.*/][inside("DE,AT")] {
-  throwError: tr("street name contains ss");
-}
-*[addr:street =~ /(?i).*Straße.*/][inside("LI,CH")],
-*[name =~ /(?i).*Straße.*/][inside("LI,CH")] {
-  throwError: tr("street name contains ß");
+/* see ticket #12914 -- Discourage contributors to use operator=ERDF in France. */
+*[operator=ERDF][inside("FR")] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "operator=Enedis";
+  group: tr("deprecated tagging");
+  fixAdd: "operator=Enedis";
+}
+
+/* #13932 */
+*[addr:street =~ /(?i).*Strasse.*/][inside("DE,AT")],
+*[name =~ /(?i).*Strasse.*/][inside("DE,AT")] {
+  throwError: tr("street name contains ss");
+}
+*[addr:street =~ /(?i).*Straße.*/][inside("LI,CH")],
+*[name =~ /(?i).*Straße.*/][inside("LI,CH")] {
+  throwError: tr("street name contains ß");
 }
\ No newline at end of file
diff --git a/data_nodist/trans/da.lang b/data_nodist/trans/da.lang
index 83dd3a5..17cf73e 100644
Binary files a/data_nodist/trans/da.lang and b/data_nodist/trans/da.lang differ
diff --git a/data_nodist/trans/es.lang b/data_nodist/trans/es.lang
index e346274..73a8efd 100644
Binary files a/data_nodist/trans/es.lang and b/data_nodist/trans/es.lang differ
diff --git a/data_nodist/trans/fr.lang b/data_nodist/trans/fr.lang
index 8882c59..984ad89 100644
Binary files a/data_nodist/trans/fr.lang and b/data_nodist/trans/fr.lang differ
diff --git a/data_nodist/trans/hu.lang b/data_nodist/trans/hu.lang
index 98f5072..4015875 100644
Binary files a/data_nodist/trans/hu.lang and b/data_nodist/trans/hu.lang differ
diff --git a/data_nodist/trans/it.lang b/data_nodist/trans/it.lang
index e4bab45..42bca10 100644
Binary files a/data_nodist/trans/it.lang and b/data_nodist/trans/it.lang differ
diff --git a/data_nodist/trans/lt.lang b/data_nodist/trans/lt.lang
index 2a3168d..7d63130 100644
Binary files a/data_nodist/trans/lt.lang and b/data_nodist/trans/lt.lang differ
diff --git a/data_nodist/trans/pl.lang b/data_nodist/trans/pl.lang
index ac8c232..5845da0 100644
Binary files a/data_nodist/trans/pl.lang and b/data_nodist/trans/pl.lang differ
diff --git a/i18n/po/af.po b/i18n/po/af.po
index 24bafe6..5425320 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:33+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:33+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: af\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Hulp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Waarskuwing"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Waarskuwing"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Hulp"
+
 msgid "History"
 msgstr "Geskiedenis"
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/am.po b/i18n/po/am.po
index ee309bb..938e8c3 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:34+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:34+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: am\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ar.po b/i18n/po/ar.po
index ca38b3e..06ecd6d 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-06-05 02:55+0000\n"
 "Last-Translator: Chdoula <chdoula at gmail.com>\n"
 "Language-Team: Arabic <ar at li.org>\n"
@@ -16,7 +16,7 @@ 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-08-13 04:35+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:34+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ar\n"
 
@@ -56,54 +56,9 @@ msgstr "خلفية شروط الاستخدام"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "فتح الرابط غير معتمد  في المنصة الحالية ('' {0} '')"
 
-msgid "Executing platform startup hook"
-msgstr "المنصة تبدأ تشغيل الربط"
-
-msgid "Building main menu"
-msgstr "بناء القائمة الرئيسية"
-
-msgid "Help"
-msgstr "مساعدة"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "تهيئة OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "تهيئة المدقق"
-
-msgid "Initializing presets"
-msgstr "التهيئة المسبقة"
-
-msgid "Initializing map styles"
-msgstr "تهيئة أنماط الخريطة"
-
-msgid "Loading imagery preferences"
-msgstr "تحميل تفضيلات الصور"
-
-msgid "Updating user interface"
-msgstr "تحديث واجهة المستخدم"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "تجاهل URL سيئة التكوين: \"{0}\""
-
-msgid "Warning"
-msgstr "تحذير"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "تجاهل URL ملف غيرصحيح التكوين: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "المعلم \"تحميل جبس\" لا يقبل إسم الملف أو عناون الملف"
-
 msgid "About"
 msgstr "حول"
 
@@ -182,6 +137,9 @@ msgstr "إلغاء"
 msgid "Click to abort launching external browsers"
 msgstr "أنقر لإلغاء فتح متصفحات الإنترنات الخارجية"
 
+msgid "Warning"
+msgstr "تحذير"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "الرجاء تحديد على الأقل عقدة , وسيلة أو علاقة قد تم تحميلها."
 
@@ -464,13 +422,10 @@ msgstr ""
 "* خط واحد ذاتي التقاطع مع اثنين من عقده على الأكثر؛\n"
 "* ثلاث عقد."
 
-msgid "Download from OSM..."
-msgstr "نزّل من أو.أس.أم ..."
-
-msgid "Download map data from the OSM server."
-msgstr "نزّل معطيات خريطة من الخادم أو.أس.أم"
+msgid "Download data"
+msgstr "بيانات محملة"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -480,9 +435,6 @@ msgstr ""
 "<html>هذا الإجراء سيتطلب {0} طلب <br> تحميل فردي. هل ترغب<br>في "
 "المتابعة؟</html>"
 
-msgid "Download data"
-msgstr "بيانات محملة"
-
 msgid "Download notes in current view"
 msgstr "ملاحظات محملة على العرض الحالي"
 
@@ -549,6 +501,9 @@ msgstr "لا شيء للتصدير. إحصل على بعض المعطيات أو
 msgid "Export GPX file"
 msgstr "تصدير ملف GPX"
 
+msgid "Help"
+msgstr "مساعدة"
+
 msgid "History"
 msgstr "الخط الزمني"
 
@@ -1052,23 +1007,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "ألصِق"
 
@@ -2327,36 +2265,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "بحث..."
 
@@ -2643,86 +2551,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2740,9 +2568,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3090,57 +2915,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3230,6 +3010,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3358,6 +3144,15 @@ msgstr ""
 msgid "Note"
 msgstr "الملاحظة"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3372,6 +3167,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3408,10 +3206,75 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "غير كامل"
+
+msgid "House {0}"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "عقدة"
+msgstr[1] "عقدتين"
+msgstr[2] "عقدات"
+msgstr[3] "عقد"
+msgstr[4] "عقد"
+msgstr[5] "عقد"
+
+msgid "highway"
+msgstr "من النوع طريق"
+
+msgid "railway"
+msgstr "خط سكة حديد"
+
+msgid "waterway"
+msgstr "مجرى مياه"
+
+msgid "landuse"
+msgstr "إستعمال الأرض"
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} عقدة"
+msgstr[1] "{0} عقدتين"
+msgstr[2] "{0} عقدات"
+msgstr[3] "{0} عقد"
+msgstr[4] "{0} عقد"
+msgstr[5] "{0} عقد"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} عضو"
+msgstr[1] "{0} أعضاء"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "علاقة واحدة"
+msgstr[1] "علاقتين"
+msgstr[2] "علاقات"
+msgstr[3] "علاقة"
+msgstr[4] "علاقة"
+msgstr[5] "علاقة"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
 msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
@@ -3442,15 +3305,6 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "عقدة"
-msgstr[1] "عقدتين"
-msgstr[2] "عقدات"
-msgstr[3] "عقد"
-msgstr[4] "عقد"
-msgstr[5] "عقد"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "طريق"
@@ -3460,15 +3314,6 @@ msgstr[3] "طرقات"
 msgstr[4] "طرقات"
 msgstr[5] "طرقات"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "علاقة واحدة"
-msgstr[1] "علاقتين"
-msgstr[2] "علاقات"
-msgstr[3] "علاقة"
-msgstr[4] "علاقة"
-msgstr[5] "علاقة"
-
 msgid "closedway"
 msgstr "طريق مغلقة الدوران"
 
@@ -3502,6 +3347,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3579,6 +3534,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "عناوين"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "الديانة"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "العلاقات"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3763,9 +3833,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "عناوين"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3950,9 +4017,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4491,9 +4555,6 @@ msgstr "نوع مجرى الماء {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4608,49 +4669,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "غير كامل"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "من النوع طريق"
-
-msgid "railway"
-msgstr "خط سكة حديد"
-
-msgid "waterway"
-msgstr "مجرى مياه"
-
-msgid "landuse"
-msgstr "إستعمال الأرض"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} عقدة"
-msgstr[1] "{0} عقدتين"
-msgstr[2] "{0} عقدات"
-msgstr[3] "{0} عقد"
-msgstr[4] "{0} عقد"
-msgstr[5] "{0} عقد"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} عضو"
-msgstr[1] "{0} أعضاء"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "تجاهل URL سيئة التكوين: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "تجاهل URL ملف غيرصحيح التكوين: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "المعلم \"تحميل جبس\" لا يقبل إسم الملف أو عناون الملف"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4739,6 +4765,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "المنصة تبدأ تشغيل الربط"
+
+msgid "Building main menu"
+msgstr "بناء القائمة الرئيسية"
+
+msgid "Updating user interface"
+msgstr "تحديث واجهة المستخدم"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "تهيئة OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "تهيئة المدقق"
+
+msgid "Initializing presets"
+msgstr "التهيئة المسبقة"
+
+msgid "Initializing map styles"
+msgstr "تهيئة أنماط الخريطة"
+
+msgid "Loading imagery preferences"
+msgstr "تحميل تفضيلات الصور"
+
 msgid "usage"
 msgstr "الإستعمال"
 
@@ -5200,6 +5286,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "بلّغ عن علّة"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5898,6 +6057,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6454,9 +6627,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6567,9 +6737,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "العلاقات"
-
 msgid "Open a list of all relations."
 msgstr "إفتح لائحة بكل العلاقات."
 
@@ -7962,24 +8129,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr ""
-
-msgid "OpenStreetMap data"
-msgstr "معطيات OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "المعطيات الخام لجهاز نظام تحديد المواقع العالمي"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "نزّل كطبقة جديدة"
 
@@ -8007,6 +8156,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
+msgstr "بدأ التنزيل"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr "معطيات OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "المعطيات الخام لجهاز نظام تحديد المواقع العالمي"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8016,38 +8221,49 @@ msgstr "المساحة المطلوبة ضخمة جداً، إحتمال أن ت
 msgid "Download area ok, size probably acceptable to server"
 msgstr "هذه المساحة ممكن تنزيلها، القياس مقبول من الخادم"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
-msgstr "بدأ التنزيل"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "التاريخ"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8090,9 +8306,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8631,6 +8844,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9108,9 +9333,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9189,6 +9411,180 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr "وصف أثر جهاز تحديد المواقع العالمي"
+
+msgid "Add author information"
+msgstr "أضف معلومات عن المؤلف"
+
+msgid "Real name"
+msgstr "الإسم الحقيقي"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "حقوق المؤلف (URL)"
+
+msgid "Predefined"
+msgstr "مسبق التعريف"
+
+msgid "Copyright year"
+msgstr "تاريخ حقوق المؤلف"
+
+msgid "Keywords"
+msgstr "كلمات البحث"
+
+msgid "Export options"
+msgstr "خيارات التصدير"
+
+msgid "Export and Save"
+msgstr "صدّر ثم إحفظ"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"خطأ خلال تصدير {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "إختر رخصة معرفة سابقاً"
+
+msgid "GPX Files"
+msgstr "ملفات GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "ملفات NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "فشل إستيراد NMEA !"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "ملفات الخادم أو.أس.أم"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9296,6 +9692,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "خصّص اللون"
 
@@ -9399,6 +9822,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "خارج عن المنطقة المنزلة"
 
@@ -9472,6 +9898,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10045,9 +10474,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10057,6 +10483,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10473,53 +10902,32 @@ msgstr ""
 msgid ""
 "<html>The test failed because the server responded with an internal "
 "error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-"يجب عليك إعادة بدء تشغيل ج.أو.أس.أم كي تُأخذ بعض التغييرات بعين الإعتبار."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
+"يجب عليك إعادة بدء تشغيل ج.أو.أس.أم كي تُأخذ بعض التغييرات بعين الإعتبار."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11606,19 +12014,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "إعدادات الخريطة"
 
@@ -11698,12 +12093,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12169,9 +12558,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12189,12 +12575,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12375,69 +12755,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "الديانة"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12685,6 +13002,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12797,9 +13137,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr "جاري تحميل النقاط {0} إلى {1}..."
 
@@ -12902,88 +13239,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr "وصف أثر جهاز تحديد المواقع العالمي"
-
-msgid "Add author information"
-msgstr "أضف معلومات عن المؤلف"
-
-msgid "Real name"
-msgstr "الإسم الحقيقي"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "حقوق المؤلف (URL)"
-
-msgid "Predefined"
-msgstr "مسبق التعريف"
-
-msgid "Copyright year"
-msgstr "تاريخ حقوق المؤلف"
-
-msgid "Keywords"
-msgstr "كلمات البحث"
-
-msgid "Export options"
-msgstr "خيارات التصدير"
-
-msgid "Export and Save"
-msgstr "صدّر ثم إحفظ"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"خطأ خلال تصدير {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "إختر رخصة معرفة سابقاً"
-
-msgid "GPX Files"
-msgstr "ملفات GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12993,18 +13248,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13056,36 +13299,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "ملفات NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "فشل إستيراد NMEA !"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13173,27 +13389,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13239,35 +13440,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "ملفات الخادم أو.أس.أم"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13399,6 +13574,9 @@ msgstr "جاري الإتصال بالخادم"
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "إستحالة الإتصال بالخادم أو.أس.أم. الرجاء فحص إتصالات الإنترنت."
@@ -13456,13 +13634,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14398,33 +14570,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14483,20 +14628,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14520,109 +14651,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "بلّغ عن علّة"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18335,9 +18370,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "التاريخ"
-
 msgid "nature"
 msgstr "الطبيعة"
 
@@ -18917,6 +18949,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21357,6 +21392,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22217,6 +22255,78 @@ msgstr "تجاري"
 msgid "Industrial"
 msgstr "صناعي"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22912,6 +23022,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23664,6 +23777,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23774,15 +23890,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31634,13 +31741,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32138,6 +32251,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32146,6 +32262,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ast.po b/i18n/po/ast.po
index ab3af31..9550496 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-04 07:51+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Asturian <ast at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:35+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:35+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ast\n"
 
@@ -55,54 +55,9 @@ msgstr "Condiciones d''usu del fondu"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Nun hai sofitu p''abrir l''enllaz na plataforma actual (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Executando l''enganche d''aniciu de la plataforma"
-
-msgid "Building main menu"
-msgstr "Construyendo''l menú principal"
-
-msgid "Help"
-msgstr "Ayuda"
-
-msgid "Initializing internal boundaries data"
-msgstr "Aniciando datos internos de llendes"
-
-msgid "Initializing OSM API"
-msgstr "Aniciando API d''OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Aniciando datos internos de tráficu"
-
-msgid "Initializing validator"
-msgstr "Aniciando validador"
-
-msgid "Initializing presets"
-msgstr "Aniciando predefinios"
-
-msgid "Initializing map styles"
-msgstr "Aniciando estilos de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "Cargando les preferencies d''imaxes"
-
-msgid "Updating user interface"
-msgstr "Anovando interfaz d''usuariu"
-
 msgid "Failed to save default preferences."
 msgstr "Nun pudieron guardase les preferencies predeterminaes."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Inorando URL mal formada: \"{0}\""
-
-msgid "Warning"
-msgstr "Avisu"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Inorando URL de ficheru mal formada: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "El parámetru \"downloadgps\" nun aceuta nomes o URLs de ficheros"
-
 msgid "About"
 msgstr "Tocante a"
 
@@ -184,6 +139,9 @@ msgstr "Encaboxar"
 msgid "Click to abort launching external browsers"
 msgstr "Calca pa encaboxar el llanzamientu de restoladores esternos"
 
+msgid "Warning"
+msgstr "Avisu"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Esbilla polo menos un nudu, vía o rellación yá xubíu."
 
@@ -475,14 +433,11 @@ msgstr ""
 "muncho;\n"
 "* Tres nudos."
 
-msgid "Download from OSM..."
-msgstr "Descargar d''OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Descargar datos del mapa del sirvidor OSM."
+msgid "Download data"
+msgstr "Descargar datos"
 
-msgid "Please select a download area first."
-msgstr "Por favor, escueya primero una área pa descargar."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -491,9 +446,6 @@ msgstr ""
 "<html>Esta acción rique {0} pidimientos<br>individuales de "
 "descarga.<br¿Deseya siguir?</html>"
 
-msgid "Download data"
-msgstr "Descargar datos"
-
 msgid "Download notes in current view"
 msgstr "Baxa les notes de la vista actual"
 
@@ -561,6 +513,9 @@ msgstr "Nun hai qué esportar. Paña dellos datos primero."
 msgid "Export GPX file"
 msgstr "Esportar ficheru GPX"
 
+msgid "Help"
+msgstr "Ayuda"
+
 msgid "History"
 msgstr "Historial"
 
@@ -1124,23 +1079,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Por favor, seleiciona víes con ángulos de aproximadamente 90 y 180 graos."
 
-msgid "Download from Overpass API ..."
-msgstr "Descargando dende la API Overpass..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Descargar datos del mapa dende''l servidor API Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Apegar"
 
@@ -2505,36 +2443,6 @@ msgstr "Escueya la relación (añedir)"
 msgid "Select relation"
 msgstr "Escoyer relación"
 
-msgid "<not>"
-msgstr "<non>"
-
-msgid "<or>"
-msgstr "<o>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<padre izquierdu>"
-
-msgid "<right parent>"
-msgstr "<padre drechu>"
-
-msgid "<colon>"
-msgstr "<dos puntos>"
-
-msgid "<equals>"
-msgstr "<igual a>"
-
-msgid "<key>"
-msgstr "<clave>"
-
-msgid "<question mark>"
-msgstr "<signu d''interrogación>"
-
-msgid "<end-of-file>"
-msgstr "<fin-de-ficheru>"
-
 msgid "Search..."
 msgstr "Guetar..."
 
@@ -2837,98 +2745,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Buscando en {0} oxetu"
 msgstr[1] "Buscando en {0} oxetos"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"La espresión regular \"{0}\" presenta un erru na posición {1}, error "
-"completu:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"La espresión regular \"{0}\" tuvo un erru d`analís sintácticu, error "
-"completu:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Nun puede analizase la marca de tiempu ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Esperábase {0} después de {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Rangu de ids primitivos esperáu"
-
-msgid "Range of changeset ids expected"
-msgstr "Rangu de ids de conxuntos de cambeos esperáu"
-
-msgid "Range of versions expected"
-msgstr "Rangu de versiones esperaos"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La clave nun puede tar vacida cuando s''usa l''operador d''etiqueta. Exemplu "
-"d''usu: clave=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipu de primitiva desconocíu: {0}. Los valores permitíos son nudu, vía o "
-"rellación"
-
-msgid "Positive integer expected"
-msgstr "Enteru positivu esperáu"
-
-msgid "Range of numbers expected"
-msgstr "S''esperaba un rangu de númberos"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Elementu ensin esperar. Esperábase {0} pero atopóse {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Nun pudo analizase’l selector de MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Credencial d`autentificación inesperada: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Falta un parámetru pal ''OR''"
-
-msgid "Missing parameter for XOR"
-msgstr "Falta parámetru pa XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Falta un operador pa «NOT»"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Atayar automáticamente el valor de la etiqueta ''{0}'' nel oxetu esaniciáu "
@@ -2950,9 +2766,6 @@ msgstr "{0} nudos na vía {1} pasa del númberu máximu de nudos permitíu {2}"
 msgid "API Capabilities Violation"
 msgstr "Violación de les capacidaes de la API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependencia cíclica ente les rellaciones:"
-
 msgid "Removed obsolete tags"
 msgstr "Esaniciar etiquetes obsoletes"
 
@@ -3334,62 +3147,12 @@ msgstr "Roles nes rellaciones que refieren a"
 msgid "Automatic tag correction"
 msgstr "Correición automática d''etiquetes"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Nun se pue crear el directoriu {0}. Va evacuase''l guardáu automáticu."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Imposible crear l`arquivu {0}, va utilizase otru nome d''arquivu"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError creando l`arquivu. Nun se va guardar automáticamente: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Non pudo borrase l`anterior arquivu de copia de seguridá {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "El so trabayu guardóse automáticamente."
-
-msgid "Restoring files"
-msgstr "Restaurando ficheros"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valor de llatitú illegal \"{0}\""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valor de llonxitú illegal \"{0}\""
 
-msgid "Question"
-msgstr "Entruga"
-
-msgid "Message"
-msgstr "Mensax"
-
-msgid "Enter text"
-msgstr "Introducir testu"
-
-msgid "Installing plugins"
-msgstr "Instalando  complementos"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html> L`arquivu de configuración pide añedir les preferencies a <b> {0} </ "
-"b><br/> pero`l so valor por omisión ye desconocíu nesti momentu. <br/> Por "
-"favor, active la función correspondiente de forma manual y vuelva intentar "
-"la importación."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Erru al crear el directoriu de caxé faltante: {0}"
 
@@ -3501,6 +3264,16 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "La opción de configuración {0} foi desaniciada porque yá nun s`usa."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html> L`arquivu de configuración pide añedir les preferencies a <b> {0} </ "
+"b><br/> pero`l so valor por omisión ye desconocíu nesti momentu. <br/> Por "
+"favor, active la función correspondiente de forma manual y vuelva intentar "
+"la importación."
+
 msgid "Metric"
 msgstr "Métricu"
 
@@ -3638,6 +3411,18 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Erru al recuperar el Token d''Accesu OAuth dende l''alministrador de "
+"credenciales"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "L´alministrador de credenciales actual ye ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Erru almacenando''l Token d''Accesu OAuth nel alministrador de credenciales"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Esperábase un ID >0. Obteníu {0}"
 
@@ -3654,6 +3439,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "una primitiva con id=0 nun pue ser invisible"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependencia cíclica ente les rellaciones:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3696,6 +3484,59 @@ msgstr "Fundiendo datos..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test \"{0}\" completáu en {1}"
 
+msgid "incomplete"
+msgstr "incompletu"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Númberu de portal {0} en {1}"
+
+msgid "House number {0}"
+msgstr "Númberu de casa {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nudu"
+msgstr[1] "nudos"
+
+msgid "highway"
+msgstr "vía"
+
+msgid "railway"
+msgstr "fierrocarril"
+
+msgid "waterway"
+msgstr "vía fluvial"
+
+msgid "landuse"
+msgstr "usu del suelu"
+
+msgid "building"
+msgstr "edificiu"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nudu"
+msgstr[1] "{0} nudos"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "miembru {0}"
+msgstr[1] "miembros {0}"
+
+msgid "public transport"
+msgstr "tresporte públicu"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relación"
+msgstr[1] "relaciones"
+
+msgid "Changeset {0}"
+msgstr "Conxuntu de cambeos {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Error nel filtru <code>{0}</code>:<br>{1}"
 
@@ -3734,21 +3575,11 @@ msgstr ""
 "Non pueden xunise primitives con ids distintes. Esti id ye {0} y l`otru ye "
 "{1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nudu"
-msgstr[1] "nudos"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vía"
 msgstr[1] "víes"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relación"
-msgstr[1] "relaciones"
-
 msgid "closedway"
 msgstr "vía ensin salida"
 
@@ -3786,6 +3617,128 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "el parámetru {0} nun tá nel intervalu 0..{1}, algamóse {2}"
 
+msgid "<not>"
+msgstr "<non>"
+
+msgid "<or>"
+msgstr "<o>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<padre izquierdu>"
+
+msgid "<right parent>"
+msgstr "<padre drechu>"
+
+msgid "<colon>"
+msgstr "<dos puntos>"
+
+msgid "<equals>"
+msgstr "<igual a>"
+
+msgid "<key>"
+msgstr "<clave>"
+
+msgid "<question mark>"
+msgstr "<signu d''interrogación>"
+
+msgid "<end-of-file>"
+msgstr "<fin-de-ficheru>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"La espresión regular \"{0}\" presenta un erru na posición {1}, error "
+"completu:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"La espresión regular \"{0}\" tuvo un erru d`analís sintácticu, error "
+"completu:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Nun puede analizase la marca de tiempu ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Esperábase {0} después de {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Rangu de ids primitivos esperáu"
+
+msgid "Range of changeset ids expected"
+msgstr "Rangu de ids de conxuntos de cambeos esperáu"
+
+msgid "Range of versions expected"
+msgstr "Rangu de versiones esperaos"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La clave nun puede tar vacida cuando s''usa l''operador d''etiqueta. Exemplu "
+"d''usu: clave=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipu de primitiva desconocíu: {0}. Los valores permitíos son nudu, vía o "
+"rellación"
+
+msgid "Positive integer expected"
+msgstr "Enteru positivu esperáu"
+
+msgid "Range of numbers expected"
+msgstr "S''esperaba un rangu de númberos"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Nun pudo analizase’l selector de MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Credencial d`autentificación inesperada: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Falta un parámetru pal ''OR''"
+
+msgid "Missing parameter for XOR"
+msgstr "Falta parámetru pa XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Falta un operador pa «NOT»"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Elementu ensin esperar. Esperábase {0} pero atopóse {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Erru al cargar la clas de renderizáu de mapa ''{0}''. Non s`atopó la clas."
@@ -3872,6 +3825,123 @@ msgstr ""
 msgid "value expected"
 msgstr "valor esperáu"
 
+msgid "Short Description:"
+msgstr "Descripción curtia:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor/a:"
+
+msgid "Webpage:"
+msgstr "Páxina Web:"
+
+msgid "Description:"
+msgstr "Descripción:"
+
+msgid "Version:"
+msgstr "Versión:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versión Mínima de JOSM:"
+
+msgid "by {0}"
+msgstr "Por {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM por defectu (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estilu internu a usase pa estilos intercambiables en tiempu d''execución"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "estilu principal de Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Axuste predetermináu internu"
+
+msgid "The default preset for JOSM"
+msgstr "L''axuste predetermináu de JOSM"
+
+msgid "Addresses"
+msgstr "Direiciones"
+
+msgid "Checks for errors on addresses"
+msgstr "Comprueba si hai erros nes direcciones"
+
+msgid "Tag combinations"
+msgstr "Combinaciones d''etiquetes"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+"Verifica que nun esistan etiquetes faltantes o combinaciones sospechoses"
+
+msgid "Deprecated features"
+msgstr "Característiques en deshuso"
+
+msgid "Checks for deprecated features"
+msgstr "Verifica la esistencia de característiques en desusu"
+
+msgid "Geometry"
+msgstr "Xeometría"
+
+msgid "Checks for geometry errors"
+msgstr "Verifica la esistencia d''erros de xeometría"
+
+msgid "Highways"
+msgstr "Viales"
+
+msgid "Checks for errors on highways"
+msgstr "Verifica la esistencia d''erros nos caminos"
+
+msgid "Multiple values"
+msgstr "Valores múltiples"
+
+msgid "Checks for wrong multiple values"
+msgstr "Comprueba si hai valores múltiples erróneos"
+
+msgid "Numeric values"
+msgstr "Valores numbéricos"
+
+msgid "Checks for wrong numeric values"
+msgstr "Verifica que nun haya valores numbéricos incorrectos"
+
+msgid "Religion"
+msgstr "Relixón"
+
+msgid "Checks for errors on religious objects"
+msgstr "Verifica que nun haya erros n''oxetos relixosos"
+
+msgid "Relations"
+msgstr "Rellaciones"
+
+msgid "Checks for errors on relations"
+msgstr "Verifica que nun haya erros nes relaciones"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Etiquetes innecesaries"
+
+msgid "Checks for unnecessary tags"
+msgstr "Verifica la esistencia d''etiquetes innecesaries"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Verifica la esistencia d''etiquetes wikipedia incorrectes"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "La proyeición UTM (''+proj=utm'') rique’l parámetru ''+zone=...''."
 
@@ -4066,9 +4136,6 @@ msgstr "La URL contien un fragmentu inválidu: {0}"
 msgid "URL validator"
 msgstr "Validador d’URL"
 
-msgid "Addresses"
-msgstr "Direiciones"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Verifique erros nes direcciones y les relaciones de cai acomuñaes"
 
@@ -4262,9 +4329,6 @@ msgstr "Nudos de vía duplicaos"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Busca víes con nudos consecutivos idénticos"
 
-msgid "Highways"
-msgstr "Viales"
-
 msgid "Performs semantic checks on highways."
 msgstr "Executa verificaciones semántiques so los caminos."
 
@@ -4839,9 +4903,6 @@ msgstr "tipu de vía fluvial {0}"
 msgid "boundary type {0}"
 msgstr "tipu de llende {0}"
 
-msgid "building"
-msgstr "edificiu"
-
 msgid "area"
 msgstr "área"
 
@@ -4960,45 +5021,14 @@ msgstr "Nun amosar de nuevu (esta sesión)"
 msgid "Do not show again (remembers choice)"
 msgstr "Nun amosar otra vegada (esta operación)"
 
-msgid "incomplete"
-msgstr "incompletu"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Númberu de portal {0} en {1}"
-
-msgid "House number {0}"
-msgstr "Númberu de casa {0}"
-
-msgid "highway"
-msgstr "vía"
-
-msgid "railway"
-msgstr "fierrocarril"
-
-msgid "waterway"
-msgstr "vía fluvial"
-
-msgid "landuse"
-msgstr "usu del suelu"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nudu"
-msgstr[1] "{0} nudos"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "miembru {0}"
-msgstr[1] "miembros {0}"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Inorando URL mal formada: \"{0}\""
 
-msgid "public transport"
-msgstr "tresporte públicu"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Inorando URL de ficheru mal formada: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conxuntu de cambeos {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "El parámetru \"downloadgps\" nun aceuta nomes o URLs de ficheros"
 
 msgid "Precondition violation"
 msgstr "Violación de condición previa"
@@ -5089,6 +5119,69 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "Esperáu un valor non-vacíu pal parámetru ''{0}'', suministráu ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Versión desactualizada de Java"
+
+msgid "Update Java"
+msgstr "Actualizar Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Ta executando la versión {0} de Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Esta versión yá nun soporta {0} dende {1} y nun s´encamienta´l so usu."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"En poco tiempu JOSM va dexar de trabayar con esta versión; encamentámos-y "
+"qu´actualice a Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "¿Deseya actualizar agora?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Executando l''enganche d''aniciu de la plataforma"
+
+msgid "Building main menu"
+msgstr "Construyendo''l menú principal"
+
+msgid "Updating user interface"
+msgstr "Anovando interfaz d''usuariu"
+
+msgid "Initializing internal boundaries data"
+msgstr "Aniciando datos internos de llendes"
+
+msgid "Initializing OSM API"
+msgstr "Aniciando API d''OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Aniciando datos internos de tráficu"
+
+msgid "Initializing validator"
+msgstr "Aniciando validador"
+
+msgid "Initializing presets"
+msgstr "Aniciando predefinios"
+
+msgid "Initializing map styles"
+msgstr "Aniciando estilos de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "Cargando les preferencies d''imaxes"
+
 msgid "usage"
 msgstr "usu"
 
@@ -5590,6 +5683,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "El valor actual non ye un índice de tesela válidu pal nivel de zoom dáu"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Atopó un erru en JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Informar de fallu"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Suprimir otros mensaxes d''erru mientres esta sesión."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Actualizar JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflicu de fondu: non hai conflictu"
 
@@ -6368,6 +6534,22 @@ msgstr ""
 "incompletos se desanicien. ¿Quies pegar los datos ensin los oxetos "
 "incompletos?"
 
+msgid "Do you want to paste these tags?"
+msgstr "¿Deseya pegar estes etiquetes?"
+
+msgid "Clear buffer"
+msgstr "Llimpiar búfer"
+
+msgid "Ignore warnings"
+msgstr "Ignorar alvertencies"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Sentir, ye imposible pegar etiquetes dende la memoria. Nun contien "
+"nengún oxetu de JOSM o un testu fayadizu. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Namá pa oxetos escoyíos"
 
@@ -6956,9 +7138,6 @@ msgstr "Fonte"
 msgid "Title:"
 msgstr "Títulu:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Estilu predefiníu, ruta interna:"
 
@@ -7075,9 +7254,6 @@ msgstr ""
 "Especificóse una llista de ID incorreuta\n"
 "Non se pue siguir."
 
-msgid "Relations"
-msgstr "Rellaciones"
-
 msgid "Open a list of all relations."
 msgstr "Abrir una llista de toes les relaciones."
 
@@ -8586,24 +8762,6 @@ msgstr "Pa la llatitú ríquese un valor nel rangu [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Pa la llonxitú ríquese un valor nel rangu [-90,90]."
 
-msgid "Data Sources and Types:"
-msgstr "Fontes y tipos de datos:"
-
-msgid "OpenStreetMap data"
-msgstr "Datos OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Escueya descargar datos OSM na área de descarga escoyida."
-
-msgid "Raw GPS data"
-msgstr "Datos GPS en brutu"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Escueya pa descargar traces GPS de la área de descarga escoyida."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Seleiciona baxar les notes del área descargada."
-
 msgid "Download as new layer"
 msgstr "Descargar como nueva capa"
 
@@ -8639,33 +8797,12 @@ msgstr ""
 "botón derechu del mure pa movese, y la rueda del mure o les tecles +/- pal "
 "zoom."
 
-msgid "No area selected yet"
-msgstr "Nun hai nenguna área escoyida entá"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Área a descargar demasiao grande; probablemente va ser refugáu pol servidor"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Área a descargar correuta, el tamañu probablemente va ser aceptáu pol "
-"servidor"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Faiga clic pa pesllar la caxa de diálogu y albortar la descarga"
 
 msgid "Click to download the currently selected area"
 msgstr "Faiga click pa descargar l''área anguaño escoyida"
 
-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>Nun tan activaos nin <strong>{0}</strong>, nin <strong>{1}</strong> "
-"nin <strong>{2}</strong>.<br>Escueye si descargar datos d’OSM, o GPX, o "
-"Notes, o toos ellos.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Descargar referencies (rellaciones padre)"
 
@@ -8689,6 +8826,94 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr "Descargar referencies (víes y rellaciones padre)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Fontes y tipos de datos:"
+
+msgid "OpenStreetMap data"
+msgstr "Datos OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Escueya descargar datos OSM na área de descarga escoyida."
+
+msgid "Raw GPS data"
+msgstr "Datos GPS en brutu"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Escueya pa descargar traces GPS de la área de descarga escoyida."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Seleiciona baxar les notes del área descargada."
+
+msgid "Please select a download area first."
+msgstr "Por favor, escueya primero una área pa descargar."
+
+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>Nun tan activaos nin <strong>{0}</strong>, nin <strong>{1}</strong> "
+"nin <strong>{2}</strong>.<br>Escueye si descargar datos d’OSM, o GPX, o "
+"Notes, o toos ellos.</html>"
+
+msgid "No area selected yet"
+msgstr "Nun hai nenguna área escoyida entá"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Área a descargar demasiao grande; probablemente va ser refugáu pol servidor"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Área a descargar correuta, el tamañu probablemente va ser aceptáu pol "
+"servidor"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "hestoria"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8731,9 +8956,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Fallu d''análisis"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9342,6 +9564,18 @@ msgstr "Autentificase col nome d''usuario y contraseña suministraos"
 msgid "Cancel authentication"
 msgstr "Atayar autentificación"
 
+msgid "Question"
+msgstr "Entruga"
+
+msgid "Message"
+msgstr "Mensax"
+
+msgid "Enter text"
+msgstr "Introducir testu"
+
+msgid "Installing plugins"
+msgstr "Instalando  complementos"
+
 msgid "Downloading file"
 msgstr "Descargando arquivu"
 
@@ -9913,10 +10147,6 @@ msgstr "Escoyer oxetos a xubir"
 msgid "Cancel uploading"
 msgstr "Atayar xubida"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valor ensin esperar pa la clave ''{0}'' nes preferencies, tien ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Enllenar un conxuntu de cambeos y volver al diálogu de xubida"
 
@@ -10003,6 +10233,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} oxetu pa esaniciar:"
 msgstr[1] "{0} oxetos pa esaniciar:"
 
+msgid "All Formats"
+msgstr "Tolos formatos"
+
+msgid "Could not export ''{0}''."
+msgstr "Non pudo esportase ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Non pudo importase ''{0}''."
+
+msgid "Could not import files."
+msgstr "Non pudieron importase arquivos."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Non pudo lleese el ficheru ''{0}''.<br>L´erru ye:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Non pudieron lleese los arquivos.<br>L´erru ye:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Arquivos GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Capa ''{0}'' non soportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: GPL nun ye compatible cola llicencia de OSM. Nun xubas traces con "
+"llicencia GPL."
+
+msgid "GPS track description"
+msgstr "Descripción de traza GPS"
+
+msgid "Add author information"
+msgstr "Amestar información de l''autor"
+
+msgid "Real name"
+msgstr "Nome real"
+
+msgid "E-Mail"
+msgstr "Corréu electrónicu"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Establecío"
+
+msgid "Copyright year"
+msgstr "Añu del copyright"
+
+msgid "Keywords"
+msgstr "Pallabres clave"
+
+msgid "Export options"
+msgstr "Opciones d''esportación"
+
+msgid "Export and Save"
+msgstr "Esportar y guardar"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Erru mientres s´esportaba {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escoyer una llicencia predefinía"
+
+msgid "GPX Files"
+msgstr "Arquivos GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Falló l´analís de los datos de la capa ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Asocedió un erru al analizar datos gpx de la capa ''{0}''. Namá va tar "
+"disponible una parte del arquivu."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Asocedió un erru al analizar l´arquivu gpx ''{0}''. Namá va tar disponible "
+"una parte del arquivu."
+
+msgid "Image Files"
+msgstr "Arquivos d''imaxe"
+
+msgid "folder"
+msgstr "carpeta"
+
+msgid "Looking for image files"
+msgstr "Buscando arquivos d''imaxes"
+
+msgid "No image files found."
+msgstr "Nun s''atoparon arquivos d''imaxes"
+
+msgid "NMEA-0183 Files"
+msgstr "Arquivos NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenaes importaes: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Frases malformadas: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Erros de chequeo: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Frases desconocíes: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Coordenaes nules: {0}"
+
+msgid "NMEA import success:"
+msgstr "Ésitu na importación NMEA:"
+
+msgid "NMEA import failure!"
+msgstr "¡Fallu na importación NMEA!"
+
+msgid "Note Files"
+msgstr "Arquivos de Notes"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Arquivu estruyíos en bzip2 del Servidor OSM"
+
+msgid "OsmChange File"
+msgstr "Arquivu OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "L´arquivu ''{0}'' nun esiste."
+
+msgid "No data found in file {0}."
+msgstr "Nun s´atoparon datos nel arquivu {0}."
+
+msgid "Open OsmChange file"
+msgstr "Abrir arquivu OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Arquivos del servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Asocedió un erru al guardar.<br>L´erru ye:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Un erru asocedió cuando se restablecía arquivu de copia de "
+"seguridá.<br>L´erru ye:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Arquivos del servidor OSM estruyíos con gzip"
+
+msgid "Invalid dataset"
+msgstr "Conxuntu de datos non válidu"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nun s´atoparon datos pa la capa ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nun s´atoparon datos nel arquivu ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Abrir arquivu OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Arquivos WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versión d´arquivu WMS non soportada; atopada {0}, esperada {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10110,6 +10523,34 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Despintar esti mensaxe y nun volver amosalu de nuevu"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Nun se pue crear el directoriu {0}. Va evacuase''l guardáu automáticu."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Imposible crear l`arquivu {0}, va utilizase otru nome d''arquivu"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError creando l`arquivu. Nun se va guardar automáticamente: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Non pudo borrase l`anterior arquivu de copia de seguridá {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "El so trabayu guardóse automáticamente."
+
+msgid "Restoring files"
+msgstr "Restaurando ficheros"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Personaliza la color"
 
@@ -10213,6 +10654,9 @@ msgstr "Notes totales:"
 msgid "Changes need uploading?"
 msgstr "¿Fae falta xubir los cambeos?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fora de la área descargada"
 
@@ -10288,6 +10732,9 @@ msgstr "Erros de validación"
 msgid "No validation errors"
 msgstr "Ensin erros de validación"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Afitar marcador WMS"
 
@@ -10914,9 +11361,6 @@ msgstr "(La URL yera: "
 msgid "Select the map painting styles"
 msgstr "Seleciones Estilu de Mapa de imagenes"
 
-msgid "loading style ''{0}''..."
-msgstr "cargando estilu ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10930,6 +11374,9 @@ msgstr[1] ""
 "Atopáronse {0} erros al tratar de cargar esti estilu. Pulsie ''Info'' nel "
 "menú emerxente al pulsiar col botón derechu del mure pa más detalles."
 
+msgid "loading style ''{0}''..."
+msgstr "cargando estilu ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Erru al cargar los estilos Mappaint dende ''{0}''. La esceición foi: {1}"
@@ -11472,27 +11919,6 @@ msgstr "Descargar complementos"
 msgid "Icon paths:"
 msgstr "Ruta de los iconos:"
 
-msgid "Short Description:"
-msgstr "Descripción curtia:"
-
-msgid "Author:"
-msgstr "Autor/a:"
-
-msgid "Webpage:"
-msgstr "Páxina Web:"
-
-msgid "Description:"
-msgstr "Descripción:"
-
-msgid "Version:"
-msgstr "Versión:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versión Mínima de JOSM:"
-
-msgid "by {0}"
-msgstr "Por {0}"
-
 msgid "Name (optional):"
 msgstr "Nome (opcional):"
 
@@ -12675,20 +13101,6 @@ msgstr ""
 "Alvertencia: formatu illegal d''entrada na llista d''estilu ''{0}''. "
 "Llogróse ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM por defectu (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estilu internu a usase pa estilos intercambiables en tiempu d''execución"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "estilu principal de Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Axustes del mapa"
 
@@ -12787,12 +13199,6 @@ msgstr ""
 "Atención: formatu illegal d´entrada na llista de predeterminaos ''{0}''. "
 "Llogróse ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Axuste predetermináu internu"
-
-msgid "The default preset for JOSM"
-msgstr "L''axuste predetermináu de JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "El complementu {0} inda ye riquíu por esti complementu:"
@@ -13296,9 +13702,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Erru al recuperar les credenciales d''alministrador de credenciales de OSM."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "L´alministrador de credenciales actual ye ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Erru al guardar les credenciales de OSM nel alministrador de credenciales."
@@ -13317,15 +13720,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Erru al recuperar el Token d''Accesu OAuth dende l''alministrador de "
-"credenciales"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Erru almacenando''l Token d''Accesu OAuth nel alministrador de credenciales"
-
 msgid "Save to preferences"
 msgstr "Guardar preferencies"
 
@@ -13530,70 +13924,6 @@ msgstr ""
 "Alvertencia: formatu inválidu d´entrada na llista de riegles ''{0}''. "
 "Llogróse ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Comprueba si hai erros nes direcciones"
-
-msgid "Tag combinations"
-msgstr "Combinaciones d''etiquetes"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-"Verifica que nun esistan etiquetes faltantes o combinaciones sospechoses"
-
-msgid "Deprecated features"
-msgstr "Característiques en deshuso"
-
-msgid "Checks for deprecated features"
-msgstr "Verifica la esistencia de característiques en desusu"
-
-msgid "Geometry"
-msgstr "Xeometría"
-
-msgid "Checks for geometry errors"
-msgstr "Verifica la esistencia d''erros de xeometría"
-
-msgid "Checks for errors on highways"
-msgstr "Verifica la esistencia d''erros nos caminos"
-
-msgid "Multiple values"
-msgstr "Valores múltiples"
-
-msgid "Checks for wrong multiple values"
-msgstr "Comprueba si hai valores múltiples erróneos"
-
-msgid "Numeric values"
-msgstr "Valores numbéricos"
-
-msgid "Checks for wrong numeric values"
-msgstr "Verifica que nun haya valores numbéricos incorrectos"
-
-msgid "Religion"
-msgstr "Relixón"
-
-msgid "Checks for errors on religious objects"
-msgstr "Verifica que nun haya erros n''oxetos relixosos"
-
-msgid "Checks for errors on relations"
-msgstr "Verifica que nun haya erros nes relaciones"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Etiquetes innecesaries"
-
-msgid "Checks for unnecessary tags"
-msgstr "Verifica la esistencia d''etiquetes innecesaries"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Verifica la esistencia d''etiquetes wikipedia incorrectes"
-
 msgid "Tag checker rules"
 msgstr "Riegles del Validador d''etiquetes"
 
@@ -13854,6 +14184,39 @@ msgstr "Tolos arquivos (*.*)"
 msgid "Received error page:"
 msgstr "Recibióse una páxina d''erru"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La preferencia con llave ''{0}'' nun inclúi ''{1}''. Non puede restaurase la "
+"xeometría de la ventana a partir de les preferencies."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La preferencia con llave ''{0}'' nun aprove un valor enteru pa ''{1}''. "
+"Llogróse {2}. Non puede restaurase la xeometría de la ventana a partir de "
+"les preferencies"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Fallu al interpretar el campu ''{1}'' na preferencia cola llave ''{0}''. La "
+"esceición foi: {2}. Non puede restaurase la xeometría de la ventana a partir "
+"de les preferencies."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La preferencia cola llave ''{0}'' nun esiste. Non puede restaurase la "
+"xeometría de la ventana a partir de les preferencies."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorando xeometría mal formada: {0}"
+
 msgid "Min. latitude"
 msgstr "Llatitú min."
 
@@ -13987,9 +14350,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "El miembru esaniciáu {0} usar na relación {1}"
 
-msgid "All Formats"
-msgstr "Tolos formatos"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Baxando puntos {0} a {1}..."
 
@@ -14118,95 +14478,6 @@ msgstr "Revisando respuesta del servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Elementu XML con nome ''{0}'' inesperáu"
 
-msgid "Could not export ''{0}''."
-msgstr "Non pudo esportase ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Non pudo importase ''{0}''."
-
-msgid "Could not import files."
-msgstr "Non pudieron importase arquivos."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Non pudo lleese el ficheru ''{0}''.<br>L´erru ye:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Non pudieron lleese los arquivos.<br>L´erru ye:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Arquivos GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Capa ''{0}'' non soportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: GPL nun ye compatible cola llicencia de OSM. Nun xubas traces con "
-"llicencia GPL."
-
-msgid "GPS track description"
-msgstr "Descripción de traza GPS"
-
-msgid "Add author information"
-msgstr "Amestar información de l''autor"
-
-msgid "Real name"
-msgstr "Nome real"
-
-msgid "E-Mail"
-msgstr "Corréu electrónicu"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Establecío"
-
-msgid "Copyright year"
-msgstr "Añu del copyright"
-
-msgid "Keywords"
-msgstr "Pallabres clave"
-
-msgid "Export options"
-msgstr "Opciones d''esportación"
-
-msgid "Export and Save"
-msgstr "Esportar y guardar"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Erru mientres s´esportaba {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escoyer una llicencia predefinía"
-
-msgid "GPX Files"
-msgstr "Arquivos GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Falló l´analís de los datos de la capa ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Asocedió un erru al analizar datos gpx de la capa ''{0}''. Namá va tar "
-"disponible una parte del arquivu."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Asocedió un erru al analizar l´arquivu gpx ''{0}''. Namá va tar disponible "
-"una parte del arquivu."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 "Erru nel analís sintácticu: estructura de documentu inválida pa un documentu "
@@ -14218,18 +14489,6 @@ msgstr "(na llínea {0}, columna {1})"
 msgid "Unknown mode {0}."
 msgstr "mou desconocíu {0}."
 
-msgid "Image Files"
-msgstr "Arquivos d''imaxe"
-
-msgid "folder"
-msgstr "carpeta"
-
-msgid "Looking for image files"
-msgstr "Buscando arquivos d''imaxes"
-
-msgid "No image files found."
-msgstr "Nun s''atoparon arquivos d''imaxes"
-
 msgid "get number of unread messages"
 msgstr "Llograr el númberu de mensaxes ensin lleer"
 
@@ -14283,36 +14542,9 @@ msgstr "Llogrando relación con ID {0} de ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "El servidor respondió con códigu 404 pal ID {0}. Omitiéndolo."
 
-msgid "NMEA-0183 Files"
-msgstr "Arquivos NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenaes importaes: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Frases malformadas: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Erros de chequeo: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Frases desconocíes: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Coordenaes nules: {0}"
-
-msgid "NMEA import success:"
-msgstr "Ésitu na importación NMEA:"
-
-msgid "NMEA import failure!"
-msgstr "¡Fallu na importación NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Esceición de punteru nula, posiblemente dalguna etiqueta tea perdida"
 
-msgid "Note Files"
-msgstr "Arquivos de Notes"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14408,9 +14640,6 @@ msgstr "(Códigu={0})"
 msgid "The server replied an error with code {0}."
 msgstr "El servidor respuende con un erru con códigu {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Arquivu estruyíos en bzip2 del Servidor OSM"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "El Prolog del documentu OsmChange yá s''escribió. Por favor, escriba "
@@ -14421,18 +14650,6 @@ msgstr ""
 "El Prolog del documentu OsmChange inda nun s''escribió. Por favor, escríbalo "
 "primeru."
 
-msgid "OsmChange File"
-msgstr "Arquivu OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "L´arquivu ''{0}'' nun esiste."
-
-msgid "No data found in file {0}."
-msgstr "Nun s´atoparon datos nel arquivu {0}."
-
-msgid "Open OsmChange file"
-msgstr "Abrir arquivu OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versión ensin soportar: {0}"
 
@@ -14486,37 +14703,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor pa la preferencia ''{0}'' non esperáu. Llogróse ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Arquivos del servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Asocedió un erru al guardar.<br>L´erru ye:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Un erru asocedió cuando se restablecía arquivu de copia de "
-"seguridá.<br>L´erru ye:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Arquivos del servidor OSM estruyíos con gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Analizando datos del historial de OSM..."
 
-msgid "Invalid dataset"
-msgstr "Conxuntu de datos non válidu"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nun s´atoparon datos pa la capa ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nun s´atoparon datos nel arquivu ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Abrir arquivu OSM"
-
 msgid "Reading was canceled"
 msgstr "La llectura foi atayada"
 
@@ -14660,6 +14849,9 @@ msgstr "Contautando col Sirvidor..."
 msgid "Downloading OSM notes..."
 msgstr "Descarga de notes OSM..."
 
+msgid "Downloading data..."
+msgstr "Descargando datos..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14720,14 +14912,9 @@ msgstr "Atopóse un ID 0 inesperáu pa la primitiva osm"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Descargando datos..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Arquivos WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versión d´arquivu WMS non soportada; atopada {0}, esperada {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Valor ensin esperar pa la clave ''{0}'' nes preferencies, tien ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -15870,36 +16057,6 @@ msgstr "Abriendo URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "La URL nun contien {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versión desactualizada de Java"
-
-msgid "Update Java"
-msgstr "Actualizar Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Ta executando la versión {0} de Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Esta versión yá nun soporta {0} dende {1} y nun s´encamienta´l so usu."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"En poco tiempu JOSM va dexar de trabayar con esta versión; encamentámos-y "
-"qu´actualice a Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "¿Deseya actualizar agora?"
-
 msgid "reserved"
 msgstr "reserváu"
 
@@ -15972,22 +16129,6 @@ msgstr "Calteres sospechosos na clave:"
 msgid "Value is too long (max {0} characters):"
 msgstr "El valor ye demasiáu llargu (máximu {0} calteres):"
 
-msgid "Do you want to paste these tags?"
-msgstr "¿Deseya pegar estes etiquetes?"
-
-msgid "Clear buffer"
-msgstr "Llimpiar búfer"
-
-msgid "Ignore warnings"
-msgstr "Ignorar alvertencies"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Sentir, ye imposible pegar etiquetes dende la memoria. Nun contien "
-"nengún oxetu de JOSM o un testu fayadizu. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -16011,119 +16152,13 @@ msgid_plural "days"
 msgstr[0] "día"
 msgstr[1] "díes"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La preferencia con llave ''{0}'' nun inclúi ''{1}''. Non puede restaurase la "
-"xeometría de la ventana a partir de les preferencies."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La preferencia con llave ''{0}'' nun aprove un valor enteru pa ''{1}''. "
-"Llogróse {2}. Non puede restaurase la xeometría de la ventana a partir de "
-"les preferencies"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Fallu al interpretar el campu ''{1}'' na preferencia cola llave ''{0}''. La "
-"esceición foi: {2}. Non puede restaurase la xeometría de la ventana a partir "
-"de les preferencies."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La preferencia cola llave ''{0}'' nun esiste. Non puede restaurase la "
-"xeometría de la ventana a partir de les preferencies."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorando xeometría mal formada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Erru al cargar l''esquema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Atopó un erru en JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Informar de fallu"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Suprimir otros mensaxes d''erru mientres esta sesión."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Actualizar JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19874,9 +19909,6 @@ msgstr "Tablón d''anuncios"
 msgid "notice"
 msgstr "avisu"
 
-msgid "history"
-msgstr "hestoria"
-
 msgid "nature"
 msgstr "natura"
 
@@ -20458,6 +20490,9 @@ msgstr ""
 "Residencia de persones dependientes (vieyos, discapacitaos físicos o "
 "psíquicos, etc)"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22900,6 +22935,9 @@ msgstr "Regalo/alcordanza"
 msgid "Variety Store"
 msgstr "Tienda de variedaes o bazar"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Encuadernador"
 
@@ -23784,6 +23822,78 @@ msgstr "De negocios"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Talleres"
 
@@ -24479,6 +24589,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25231,6 +25344,9 @@ msgstr "Catastru"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -25344,15 +25460,6 @@ msgstr "Mapa vieyu de Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -33737,15 +33844,21 @@ msgstr "Al valor anterior (nun se camuda mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Plugin pa geolocalización de fotografíes"
 
-msgid "Writing position information to image files..."
-msgstr "Escribiendo información de posición a ficheros d''imaxes..."
-
 msgid "Could not read mtime."
 msgstr "Non pudo lleese mtime."
 
 msgid "Could not write mtime."
 msgstr "Non pudo escribise mtime"
 
+msgid "Writing position information to image files..."
+msgstr "Escribiendo información de posición a ficheros d''imaxes..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "¡Non pudo desaniciar el ficheru!"
 
@@ -34253,6 +34366,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34261,6 +34377,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/az.po b/i18n/po/az.po
index 1871035..5848c04 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:36+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:35+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Kömək"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "OSM API-nin inisalizasiyası"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -179,6 +134,9 @@ msgstr "İmtina"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Kömək"
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "OSM API-nin inisalizasiyası"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/be.po b/i18n/po/be.po
index a9cd735..727c0ff 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +19,7 @@ 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-08-13 04:37+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:36+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: be\n"
 
@@ -59,54 +59,9 @@ msgstr "Умовы выкарыстання падкладкі"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Пераход па спасылцы не падтрымліваецца на гэтай платформе (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Выкананне стартавых працэдур"
-
-msgid "Building main menu"
-msgstr "Стварэнне асноўнага меню"
-
-msgid "Help"
-msgstr "Даведка"
-
-msgid "Initializing internal boundaries data"
-msgstr "Ініцыялізацыя ўнутраных даных пра межы"
-
-msgid "Initializing OSM API"
-msgstr "Ініцыялізацыя OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "Ініцыялізацыя ўнутраных даных пра дарожны рух"
-
-msgid "Initializing validator"
-msgstr "Iніцыялізацыя валідатара"
-
-msgid "Initializing presets"
-msgstr "Iніцыялізацыя нарыхтовак"
-
-msgid "Initializing map styles"
-msgstr "Ініцыялізацыя стыляў карты"
-
-msgid "Loading imagery preferences"
-msgstr "Пампоўка ўсталёвак падкладак"
-
-msgid "Updating user interface"
-msgstr "Абнаўленне інтэрфейсу карыстальніка"
-
 msgid "Failed to save default preferences."
 msgstr "Не атрымалася захаваць налады па змаўчанні."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Неадпаведны URL - ігнаруецца: \"{0}\""
-
-msgid "Warning"
-msgstr "Папярэджанне"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Неадпаведны URL да файла - ігнаруецца: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Параметр \"downloadgps\" не падтрымлівае імёны файлаў ці URLы"
-
 msgid "About"
 msgstr "Аб праграме"
 
@@ -192,6 +147,9 @@ msgstr "Скасаваць"
 msgid "Click to abort launching external browsers"
 msgstr "Клікніце каб спыніць запуск знешніх браузэраў"
 
+msgid "Warning"
+msgstr "Папярэджанне"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Выберыце як-меней адзін ужо адасланы пункт, лінію альбо дачыненне."
 
@@ -479,14 +437,11 @@ msgstr ""
 "* Адну лінію без самаперасячэнняў з  не больш чым дзвюма яе пунктамі;\n"
 "* Тры пункты."
 
-msgid "Download from OSM..."
-msgstr "Запампоўка з OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Запампоўка карты з сервера OSM."
+msgid "Download data"
+msgstr "Запампоўка дадзеных"
 
-msgid "Please select a download area first."
-msgstr "Калі ласка, абярыце спачатку вобласць для спампоўкі."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -495,9 +450,6 @@ msgstr ""
 "<html>Гэта дзеянне запатрабуе {0} асобных<br>запытаў на спампоўку. "
 "Працягнуць?</html>"
 
-msgid "Download data"
-msgstr "Запампоўка дадзеных"
-
 msgid "Download notes in current view"
 msgstr "Запампаваць нататкі для бачнай вобласці"
 
@@ -566,6 +518,9 @@ msgstr "Няма чаго экспартаваць. Спачатку штось
 msgid "Export GPX file"
 msgstr "Экспартаваць GPX файл"
 
+msgid "Help"
+msgstr "Даведка"
+
 msgid "History"
 msgstr "Гісторыя"
 
@@ -1132,23 +1087,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Выберыце лініі з вугламі падобнымі на 90 альбо 180 градусаў"
 
-msgid "Download from Overpass API ..."
-msgstr "Загрузіць з Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Загрузіць картаграфічныя дадзеныя з сервера Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Уклеіць"
 
@@ -2540,36 +2478,6 @@ msgstr "Абраць дачыненне (дадаць)"
 msgid "Select relation"
 msgstr "Абраць дачыненне"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Шукаць..."
 
@@ -2870,94 +2778,6 @@ msgstr[0] "Пошук у {0} аб''екце"
 msgstr[1] "Пошук у {0} аб''ектах"
 msgstr[2] "Пошук у {0} аб''ектах"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Памылка ў рэгулярным выразе \"{0}\" на пазіцыі {1}, поўны тэкст памылкі:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Памылка сінтаксічнага разбору рэгулярнага выраза \"{0}\":\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Не атрымалася выканаць разбор пазнакі часу ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Чакалася {0} пасля {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Чакаецца дыяпазон ID аб’ектаў"
-
-msgid "Range of changeset ids expected"
-msgstr "Чакаецца дыяпазон ID пакетаў правак"
-
-msgid "Range of versions expected"
-msgstr "Чакаецца дыяпазон версій"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Ключ не можа быць пустым пры выкарыстанні тэга аператара. Прыклад "
-"выкарыстання: ключ=значэнне"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Невядомы тып элемента: {0}. Дазволеныя значэнні: пункт, лінія або дачыненне"
-
-msgid "Positive integer expected"
-msgstr "Чакаўся дадатны цэлы лік"
-
-msgid "Range of numbers expected"
-msgstr "Чакалася паслядоўнасць лікаў"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Нечаканы маркер. Чакалася {0}, знойдзена {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Не атрымалася разабраць MapCSS-селектар"
-
-msgid "Unexpected token: {0}"
-msgstr "Нечаканая лексема: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Прапушчаны параметр для OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Адсутнічаюць параметры для XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Прапушчаны аператар для NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Аўтаматычна адкідаць значэнне тэга ''{0}'' на выдаленым аб’екце {1}"
 
@@ -2979,9 +2799,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Парушэнне магчымасцяў API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Цыклічныя залежнасці паміж дачыненнямі:"
-
 msgid "Removed obsolete tags"
 msgstr "Выдалены састарэлыя тэгі"
 
@@ -3389,61 +3206,12 @@ msgstr "Ролі ў дачыненнях, якія адносяцца да"
 msgid "Automatic tag correction"
 msgstr "Аўтаматычна выпраўляць тэгі"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Немагчыма стварыць каталог {0}! Аўтазахаванне будзе адключана"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Немагчыма стварыць файл {0}, будзе скарыстана іншае імя файла"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Памылка ўводу-вываду пры стварэнні файла. Аўтазахаванне прапушчана: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Немагчыма выдаліць стары бэкап файл {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Вынікі вашай працы былі захаваны аўтаматычна."
-
-msgid "Restoring files"
-msgstr "Аднаўленне файлаў"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Не атрымалася выдаліць файл рэзервовай копіі {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Не атрымалася выдаліць PID-файл {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Не атрымалася выдаліць змешчаны ў архіў файл рэзервовай копіі {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Няправільнае значэнне шыраты ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Няправільнае значэнне даўгаты ''{0}''"
 
-msgid "Question"
-msgstr "Пытанне"
-
-msgid "Message"
-msgstr "Паведамленне"
-
-msgid "Enter text"
-msgstr "Увядзіце тэкст"
-
-msgid "Installing plugins"
-msgstr "Усталёўка модуляў"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Файл налад спрабуе дадаць параметры ў <b>{0}</b>,<br/> але яго "
-"значэнне па змаўчанні ў дадзены момант невядома.<br/>Калі ласка, актывуйце "
-"адпаведную функцыю ўручную і паўтарыце імпарт."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Не атрымалася стварыць адсутны каталог кэша: {0}"
 
@@ -3549,6 +3317,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Налада {0}  была выдалена, бо яна больш не выкарыстоўваецца."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Файл налад спрабуе дадаць параметры ў <b>{0}</b>,<br/> але яго "
+"значэнне па змаўчанні ў дадзены момант невядома.<br/>Калі ласка, актывуйце "
+"адпаведную функцыю ўручную і паўтарыце імпарт."
+
 msgid "Metric"
 msgstr "Метрычная сістэма"
 
@@ -3685,6 +3462,17 @@ msgstr ""
 msgid "Note"
 msgstr "Нататка"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Не атрымалася атрымаць токен доступу OAuth з мэнэджара ўліковых дадзеных"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Бягучы мэнэджар уліковых дадзеных мае тып ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Не атрымалася захаваць токен доступу OAuth у мэнэджару ўліковых дадзеных"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "выяўлена id > 0. Атрымана {0}"
 
@@ -3701,6 +3489,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Элемент з id=0 не можа быць нябачным"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Цыклічныя залежнасці паміж дачыненнямі:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3743,6 +3534,63 @@ msgstr "Аб’яднанне дадзеных..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Тэст ''{0}'' завершаны за {1}"
 
+msgid "incomplete"
+msgstr "няпоўны"
+
+msgid "House {0}"
+msgstr "Хата {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Хата нумар {0} на {1}"
+
+msgid "House number {0}"
+msgstr "Хата нумар {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "пункт"
+msgstr[1] "пункты"
+msgstr[2] "пунктаў"
+
+msgid "highway"
+msgstr "дарога"
+
+msgid "railway"
+msgstr "чыгунка"
+
+msgid "waterway"
+msgstr "вадаём"
+
+msgid "landuse"
+msgstr "землекарыстанне"
+
+msgid "building"
+msgstr "будынак"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} пункт"
+msgstr[1] "{0} пункты"
+msgstr[2] "{0} пунктаў"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} удзельнік"
+msgstr[1] "{0} удзельніка"
+msgstr[2] "{0} удзельнікаў"
+
+msgid "public transport"
+msgstr "грамадскі транспарт"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "дачыненне"
+msgstr[1] "дачыненні"
+msgstr[2] "дачыненняў"
+
+msgid "Changeset {0}"
+msgstr "Пакет правак {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Памылка ў фільтры <code>{0}</code>:<br>{1}"
 
@@ -3779,24 +3627,12 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr "Зліццё элементаў з рознымі id немагчыма. Гэты id: {0}, іншы ж: {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "пункт"
-msgstr[1] "пункты"
-msgstr[2] "пунктаў"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "лінія"
 msgstr[1] "лініі"
 msgstr[2] "ліній"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "дачыненне"
-msgstr[1] "дачыненні"
-msgstr[2] "дачыненняў"
-
 msgid "closedway"
 msgstr "замкнёная лінія"
 
@@ -3832,6 +3668,124 @@ msgstr "Немагчыма параўнаць элемент з  ID ''{0}'' і 
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "параметр {0} не ў інтэрвале 0..{1}, бягучае значэнне {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Памылка ў рэгулярным выразе \"{0}\" на пазіцыі {1}, поўны тэкст памылкі:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Памылка сінтаксічнага разбору рэгулярнага выраза \"{0}\":\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Не атрымалася выканаць разбор пазнакі часу ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Чакалася {0} пасля {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Чакаецца дыяпазон ID аб’ектаў"
+
+msgid "Range of changeset ids expected"
+msgstr "Чакаецца дыяпазон ID пакетаў правак"
+
+msgid "Range of versions expected"
+msgstr "Чакаецца дыяпазон версій"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Ключ не можа быць пустым пры выкарыстанні тэга аператара. Прыклад "
+"выкарыстання: ключ=значэнне"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Невядомы тып элемента: {0}. Дазволеныя значэнні: пункт, лінія або дачыненне"
+
+msgid "Positive integer expected"
+msgstr "Чакаўся дадатны цэлы лік"
+
+msgid "Range of numbers expected"
+msgstr "Чакалася паслядоўнасць лікаў"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Не атрымалася разабраць MapCSS-селектар"
+
+msgid "Unexpected token: {0}"
+msgstr "Нечаканая лексема: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Прапушчаны параметр для OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Адсутнічаюць параметры для XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Прапушчаны аператар для NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Нечаканы маркер. Чакалася {0}, знойдзена {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Не атрымалася загрузіць клас адмалёўшчыка карты ''{0}''. Клас не знойдзены."
@@ -3914,6 +3868,122 @@ msgstr "Чакаўся элемент ''{0}'', а атрыманы ''{1}''"
 msgid "value expected"
 msgstr "чакалася значэнне"
 
+msgid "Short Description:"
+msgstr "Кароткае апісанне:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Аўтар:"
+
+msgid "Webpage:"
+msgstr "Вэб-старонка:"
+
+msgid "Description:"
+msgstr "Апісанне:"
+
+msgid "Version:"
+msgstr "Версія:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Мінімальная версія JOSM:"
+
+msgid "by {0}"
+msgstr "{0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "Стандартны JOSM (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Убудаваны стыль, які выкарыстоўваецца як базавы для падлучальных стыляў"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "Асноўны стыль Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Убудаваная нарыхтоўка"
+
+msgid "The default preset for JOSM"
+msgstr "Нарыхтоўка па змаўчанні для JOSM"
+
+msgid "Addresses"
+msgstr "Адрасы"
+
+msgid "Checks for errors on addresses"
+msgstr "Праверка памылак у адрасах"
+
+msgid "Tag combinations"
+msgstr "Камбінацыя тэгаў"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Праверка на адсутнасць ці сумніўныя камбінацыі тэгаў"
+
+msgid "Deprecated features"
+msgstr "Састарэлыя тэгі"
+
+msgid "Checks for deprecated features"
+msgstr "Праверка на наяўнасць састарэлых тэгаў"
+
+msgid "Geometry"
+msgstr "Геаметрыя"
+
+msgid "Checks for geometry errors"
+msgstr "Праверка на памылкі геаметрыі"
+
+msgid "Highways"
+msgstr "Дарогі"
+
+msgid "Checks for errors on highways"
+msgstr "Праверка на памылкі дарог"
+
+msgid "Multiple values"
+msgstr "Множныя значэнні"
+
+msgid "Checks for wrong multiple values"
+msgstr "Праверка на хібнае прысваенне некалькіх значэнняў аднаму ключу"
+
+msgid "Numeric values"
+msgstr "Лікавыя значэнні"
+
+msgid "Checks for wrong numeric values"
+msgstr "Праверка на няправільныя лікавыя значэнні"
+
+msgid "Religion"
+msgstr "Рэлігія"
+
+msgid "Checks for errors on religious objects"
+msgstr "Праверка на памылкі рэлігійных аб’ектаў"
+
+msgid "Relations"
+msgstr "Дачыненні"
+
+msgid "Checks for errors on relations"
+msgstr "Праверка памылак у дачыненнях"
+
+msgid "Territories"
+msgstr "Тэрыторыі"
+
+msgid "Checks for territories-specific features"
+msgstr "Праверка на ўласцівасці, спецыфічныя для асобных тэрыторый"
+
+msgid "Unnecessary tags"
+msgstr "Непатрэбныя тэгі"
+
+msgid "Checks for unnecessary tags"
+msgstr "Праверка наяўнасці непатрэбных тэгаў"
+
+msgid "Wikipedia"
+msgstr "Вікіпедыя"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Праверка няправільных тэгаў Вікіпедыі"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Праекцыя UTM (''+proj=utm'') патрабуе параметр ''+zone=...''."
 
@@ -4104,9 +4174,6 @@ msgstr "URL утрымоўвае недапушчальны фрагмент: {0
 msgid "URL validator"
 msgstr "Праверка карэктнасці адрасоў ў Інтэрнэт"
 
-msgid "Addresses"
-msgstr "Адрасы"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Правярае памылкі ў адрасах і дачыненнях associatedStreet."
 
@@ -4299,9 +4366,6 @@ msgstr "Дубляваныя пункты на лініі"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Правярае лініі на наяўнасць аднолькавых паслядоўных пунктаў"
 
-msgid "Highways"
-msgstr "Дарогі"
-
 msgid "Performs semantic checks on highways."
 msgstr "Семантычная праверка тэгаў на дарогах"
 
@@ -4867,9 +4931,6 @@ msgstr "тып вадаёма: {0}"
 msgid "boundary type {0}"
 msgstr "тып мяжы {0}"
 
-msgid "building"
-msgstr "будынак"
-
 msgid "area"
 msgstr "палігон"
 
@@ -4989,47 +5050,14 @@ msgstr "Не паказваць ізноў (у гэтым сеансе)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не паказваць ізноў (запомніць выбар)"
 
-msgid "incomplete"
-msgstr "няпоўны"
-
-msgid "House {0}"
-msgstr "Хата {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Хата нумар {0} на {1}"
-
-msgid "House number {0}"
-msgstr "Хата нумар {0}"
-
-msgid "highway"
-msgstr "дарога"
-
-msgid "railway"
-msgstr "чыгунка"
-
-msgid "waterway"
-msgstr "вадаём"
-
-msgid "landuse"
-msgstr "землекарыстанне"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} пункт"
-msgstr[1] "{0} пункты"
-msgstr[2] "{0} пунктаў"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} удзельнік"
-msgstr[1] "{0} удзельніка"
-msgstr[2] "{0} удзельнікаў"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Неадпаведны URL - ігнаруецца: \"{0}\""
 
-msgid "public transport"
-msgstr "грамадскі транспарт"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Неадпаведны URL да файла - ігнаруецца: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Пакет правак {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Параметр \"downloadgps\" не падтрымлівае імёны файлаў ці URLы"
 
 msgid "Precondition violation"
 msgstr "Парушэнне папярэдняй умовы"
@@ -5120,6 +5148,70 @@ msgstr "Зрушэнне"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Чакалася непустое значэнне для параметру ''{0}'', атрымана ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Састарэлая версія Java"
+
+msgid "Update Java"
+msgstr "Абнавіць Java"
+
+msgid "You are running version {0} of Java."
+msgstr "У вас версія Java {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Гэта версія больш не падтрымліваецца {0} з {1} і не рэкамендуецца для "
+"выкарыстання."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM хутка перастане працаваць з гэтай версіяй. Мы настойліва раім выканаць "
+"абнаўленне да Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Жадаеце выканаць абнаўленне цяпер?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Выкананне стартавых працэдур"
+
+msgid "Building main menu"
+msgstr "Стварэнне асноўнага меню"
+
+msgid "Updating user interface"
+msgstr "Абнаўленне інтэрфейсу карыстальніка"
+
+msgid "Initializing internal boundaries data"
+msgstr "Ініцыялізацыя ўнутраных даных пра межы"
+
+msgid "Initializing OSM API"
+msgstr "Ініцыялізацыя OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "Ініцыялізацыя ўнутраных даных пра дарожны рух"
+
+msgid "Initializing validator"
+msgstr "Iніцыялізацыя валідатара"
+
+msgid "Initializing presets"
+msgstr "Iніцыялізацыя нарыхтовак"
+
+msgid "Initializing map styles"
+msgstr "Ініцыялізацыя стыляў карты"
+
+msgid "Loading imagery preferences"
+msgstr "Пампоўка ўсталёвак падкладак"
+
 msgid "usage"
 msgstr "выкарыстанне"
 
@@ -5627,6 +5719,90 @@ msgstr ""
 "Бягучае значэнне не з’яўляецца правільным індэксам квадрата для дадзенага "
 "ўзроўня маштабавання"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Вы сутыкнуліся з памылкай у JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Паўстала непрадбачаная выключная сітуацыя.\n"
+"Гэта заўсёды памылка праграмавання. Калі ў вас самая новая версія JOSM, "
+"адпраўце, калі ласка, справаздачу аб гэтай памылцы."
+
+msgid "Debug information"
+msgstr "Адладкавыя інфармацыя"
+
+msgid "Manually report at:"
+msgstr "Адаслаць справаздачу ўручную на:"
+
+msgid "Is JOSM up to date?"
+msgstr "У вас апошняя версія JOSM?"
+
+msgid "Send bug report"
+msgstr "Адаслаць справаздачу пра памылку"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Калі ў вас найноўшая версія JOSM і модуляў, адпраўце, калі ласка, "
+"справаздачу пра памылку ў нашу сістэму асочвання памылак.\n"
+"Некаторая інфармацыя пра памылку павінна быць улучана ў справаздачу "
+"аўтаматычна. Дадайце звесткі пра тое, як узнавіць памылку і паспрабуйце "
+"зазначыць як мага больш падрабязнасцяў."
+
+msgid "Report Bug"
+msgstr "Паведаміць пра памылку"
+
+msgid "Suppress this error for this session."
+msgstr "Не паказваць больш гэтую памылку ў гэтым сеансе"
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Больш не паказваць памылкі ў гэтай сесіі"
+
+msgid "Ignore this error."
+msgstr "Ігнараваць гэту памылку."
+
+msgid "Include the system status report."
+msgstr "Уключыць справаздачу пра стан сістэмы."
+
+msgid "Include information about the data you were working on."
+msgstr "Уключыць інфармацыю пра даныя, з якімі вы працавалі."
+
+msgid "Include all stack traces."
+msgstr "Уключыць усе трасіроўкі стэка."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша бягучая версія JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM выконвае пошук абнаўленняў..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+"Адбылася памылка пры праверцы актуальнасці версіі вашага экзэмпляра JOSM."
+
+msgid "JOSM is up to date."
+msgstr "У вас найноўшая версія JOSM."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM састарэў. Бягучая версія — {0}. Паспрабуйце абнавіць JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Перад адпраўкай справаздачы пра памылку пераканаецеся, што вы абнавілі JOSM "
+"да найноўшай версіі, тут:"
+
+msgid "Update JOSM"
+msgstr "Абнавіць JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Фон канфлікту: няма канфлікту"
 
@@ -6412,6 +6588,22 @@ msgstr ""
 "Капіяваныя дадзеныя ўтрымліваюць няпоўныя аб’екты. Пры ўстаўцы яны будуць "
 "выдаленыя. Вы хочаце ўставіць дадзеныя без няпоўных аб’ектаў?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Уставіць гэтыя тэгі?"
+
+msgid "Clear buffer"
+msgstr "Ачысціць буфер"
+
+msgid "Ignore warnings"
+msgstr "Ігнараваць папярэджанні"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p>На жаль, немагчыма ўставіць тэгі з буфера абмену. Ён не ўтрымлівае "
+"аб`ектаў JOSM або адпаведнага тэксту.</p></html>"
+
 msgid "For selected objects only"
 msgstr "Толькі для абраных аб’ектаў"
 
@@ -7015,9 +7207,6 @@ msgstr "Крыніца"
 msgid "Title:"
 msgstr "Назва:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Убудаваны стыль, унутраны шлях:"
 
@@ -7133,9 +7322,6 @@ msgstr ""
 "Паказаны няслушны спіс ID\n"
 "Працягнуць немагчыма."
 
-msgid "Relations"
-msgstr "Дачыненні"
-
 msgid "Open a list of all relations."
 msgstr "Паказаць спіс усіх дачыненняў."
 
@@ -8653,25 +8839,6 @@ msgstr "Значэнне шыраты павінна быць у межах [-90
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Значэнне даўгаты павінна быць у межах  [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Крыніцы і тыпы дадзеных:"
-
-msgid "OpenStreetMap data"
-msgstr "Дадзеныя OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Пазначце, каб запампаваць з сервера ДАДЗЕНЫЯ OSM для абранай вобласці."
-
-msgid "Raw GPS data"
-msgstr "Дадзеныя GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Пазначце, каб запампаваць з сервера ТРЭКІ GPS для абранай вобласці."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Адзначце для загрузкі нататак для вылучанага ўчастка."
-
 msgid "Download as new layer"
 msgstr "Запампаваць як новы пласт"
 
@@ -8705,32 +8872,12 @@ msgstr ""
 "Націсніце левую кнопку мышы і пацягніце — для вылучэння вобласці, стрэлкі ці "
 "правая кнопка мышы — для пракручвання карты, колца ці +/- — для маштабавання."
 
-msgid "No area selected yet"
-msgstr "Вобласць яшчэ не абрана"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Вобласць для спампоўкі занадта вялікая. Верагодна, сервер адмовіцца "
-"апрацаваць запыт."
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Плошча ўчастка для загрузкі прымальная для сервера"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Націсніце, каб зачыніць дыялог і перапыніць спампоўку з сервера"
 
 msgid "Click to download the currently selected area"
 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 "Спампаваць спасылаюшчых на аб’ект (бацькоўскія дачыненні)"
 
@@ -8753,6 +8900,94 @@ msgstr "Адзначце, калі павінны быць запампаван
 msgid "Download referrers (parent relations and ways)"
 msgstr "Спампаваць аб’екты, якія спасылаюцца (бацькоўскія дачыненні і лініі)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Крыніцы і тыпы дадзеных:"
+
+msgid "OpenStreetMap data"
+msgstr "Дадзеныя OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Пазначце, каб запампаваць з сервера ДАДЗЕНЫЯ OSM для абранай вобласці."
+
+msgid "Raw GPS data"
+msgstr "Дадзеныя GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Пазначце, каб запампаваць з сервера ТРЭКІ GPS для абранай вобласці."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Адзначце для загрузкі нататак для вылучанага ўчастка."
+
+msgid "Please select a download area first."
+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 "No area selected yet"
+msgstr "Вобласць яшчэ не абрана"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Вобласць для спампоўкі занадта вялікая. Верагодна, сервер адмовіцца "
+"апрацаваць запыт."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Плошча ўчастка для загрузкі прымальная для сервера"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "гісторыя"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8795,9 +9030,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Памылка разбору"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9408,6 +9640,18 @@ msgstr "Аўтэнтыфікацыя з дадзенымі імем карыст
 msgid "Cancel authentication"
 msgstr "Адмяніць аўтэнтыфікацыю"
 
+msgid "Question"
+msgstr "Пытанне"
+
+msgid "Message"
+msgstr "Паведамленне"
+
+msgid "Enter text"
+msgstr "Увядзіце тэкст"
+
+msgid "Installing plugins"
+msgstr "Усталёўка модуляў"
+
 msgid "Downloading file"
 msgstr "Спампоўка файла"
 
@@ -10006,9 +10250,6 @@ msgstr "Выбар аб’ектаў для перадачы на сервер"
 msgid "Cancel uploading"
 msgstr "Адмяніць перадачу на сервер"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Неспадзяванае значэнне для ключа ''{0}'' у наладах, атрымана ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 "Запоўніць адзін пакет правак і вярнуцца да Дыялогу перадачы на сервер"
@@ -10098,6 +10339,188 @@ msgstr[0] "Выдаліць {0} аб’ект:"
 msgstr[1] "Выдаліць {0} аб’екта:"
 msgstr[2] "Выдаліць {0} аб’ектаў:"
 
+msgid "All Formats"
+msgstr "Усе фарматы"
+
+msgid "Could not export ''{0}''."
+msgstr "Немагчыма экспартаваць ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Немагчыма імпартаваць ''{0}''."
+
+msgid "Could not import files."
+msgstr "Немагчыма імпартаваць файлы."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Немагчыма прачытаць файл ''{0}''.<br>Памылка:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Немагчыма прачытаць файлы.<br>Памылка:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Файлы GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Пласт «{0}» не падтрымліваецца"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Увага: GPL несумяшчальная з ліцэнзіяй OSM. Не перадавайце на сервер трэкі, "
+"ліцэнзаваныя пад GPL"
+
+msgid "GPS track description"
+msgstr "апісанне трэка GPS"
+
+msgid "Add author information"
+msgstr "Дадаць інфармацыю пра аўтара"
+
+msgid "Real name"
+msgstr "Сапраўднае імя"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Аўтарскія правы (спасылка)"
+
+msgid "Predefined"
+msgstr "Прадвызначаны"
+
+msgid "Copyright year"
+msgstr "Аўтарскія правы (год)"
+
+msgid "Keywords"
+msgstr "Ключавыя словы"
+
+msgid "Export options"
+msgstr "Опцыі экспарту"
+
+msgid "Export and Save"
+msgstr "Экспартаваць і захаваць"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Памылка пры экспарце {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Абярыце ліцэнзію з набору"
+
+msgid "GPX Files"
+msgstr "Файлы GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Збой апрацоўкі дадзеных пласта ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Адбылася памылка пры аналізе дадзеных gpx для пласта «{0}». Будзе даступная "
+"толькі частка файла."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Адбылася памылка пры апрацоўцы gpx файла ''{0}''. Файл будзе даступны "
+"часткова."
+
+msgid "Image Files"
+msgstr "Файлы малюнкаў"
+
+msgid "folder"
+msgstr "каталог"
+
+msgid "Looking for image files"
+msgstr "Пошук файлаў малюнкаў"
+
+msgid "No image files found."
+msgstr "Файлы малюнкаў не знойдзены"
+
+msgid "NMEA-0183 Files"
+msgstr "Файлы NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Імпартавана каардынат: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Няслушны запыт: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Памылак праверкі кантрольнай сумы: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Невядомы выраз: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Нулявых каардынат: {0}"
+
+msgid "NMEA import success:"
+msgstr "Паспяховы імпарт NMEA дадзеных:"
+
+msgid "NMEA import failure!"
+msgstr "Збой пры імпарце NMEA!"
+
+msgid "Note Files"
+msgstr "Файлы нататак"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Файлы сервера OSM сціснуты з дапамогай bzip2"
+
+msgid "OsmChange File"
+msgstr "Файл OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Файл \"{0}\" не існуе"
+
+msgid "No data found in file {0}."
+msgstr "Не знойдзены дадзеныя ў файле {0}."
+
+msgid "Open OsmChange file"
+msgstr "Адкрыць файл OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Файлы сервера OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Адбылася памылка пры захаванні.<br>Памылка: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Адбылася памылка пры аднаўленні рэзервовай копіі файла.<br>Памылка: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Файлы сервера OSM сціснуты з дапамогай gzip"
+
+msgid "Invalid dataset"
+msgstr "Няслушны набор дадзеных"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Няма дадзеных для пласта ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Няма дадзеных у файле ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Адкрыць файл OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Файлы WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Непадтрымоўваны фармат версіі WMS файла; выяўлена {0}, чакалася {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10208,6 +10631,34 @@ msgstr "Больш не паказваць гэтае паведамленне"
 msgid "Hide this message and never show it again"
 msgstr "Схаваць гэта паведамленне і больш не паказваць"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Немагчыма стварыць каталог {0}! Аўтазахаванне будзе адключана"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Немагчыма стварыць файл {0}, будзе скарыстана іншае імя файла"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Памылка ўводу-вываду пры стварэнні файла. Аўтазахаванне прапушчана: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Немагчыма выдаліць стары бэкап файл {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Вынікі вашай працы былі захаваны аўтаматычна."
+
+msgid "Restoring files"
+msgstr "Аднаўленне файлаў"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Не атрымалася выдаліць файл рэзервовай копіі {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Не атрымалася выдаліць PID-файл {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Не атрымалася выдаліць змешчаны ў архіў файл рэзервовай копіі {0}"
+
 msgid "Customize Color"
 msgstr "Абраць колер"
 
@@ -10316,6 +10767,9 @@ msgstr "Усяго нататак:"
 msgid "Changes need uploading?"
 msgstr "Трэба перадаць змены на сервер?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "па-за запампаванай вобласцю"
 
@@ -10392,6 +10846,9 @@ msgstr "Памылкі пры праверцы"
 msgid "No validation errors"
 msgstr "Праверка не выявіла памылак"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Усталяваць закладку WMS"
 
@@ -11019,9 +11476,6 @@ msgstr "(па спасылцы: "
 msgid "Select the map painting styles"
 msgstr "Абярыце стылі адмалёўкі карты"
 
-msgid "loading style ''{0}''..."
-msgstr "загрузка стылю ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11038,6 +11492,9 @@ msgstr[2] ""
 "Адбылося {0} памылак пры загрузцы стылю. Падрабязнасці глядзіце ў пункце "
 "\"Інфармацыя\" з кантэкстнага меню."
 
+msgid "loading style ''{0}''..."
+msgstr "загрузка стылю ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Не атрымалася загрузіць стылі Mappaint з ''{0}''. Памылка: {1}"
 
@@ -11570,27 +12027,6 @@ msgstr "Запампаваць модулі"
 msgid "Icon paths:"
 msgstr "Шлях да значкоў:"
 
-msgid "Short Description:"
-msgstr "Кароткае апісанне:"
-
-msgid "Author:"
-msgstr "Аўтар:"
-
-msgid "Webpage:"
-msgstr "Вэб-старонка:"
-
-msgid "Description:"
-msgstr "Апісанне:"
-
-msgid "Version:"
-msgstr "Версія:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Мінімальная версія JOSM:"
-
-msgid "by {0}"
-msgstr "{0}"
-
 msgid "Name (optional):"
 msgstr "Назва (неабавязкова):"
 
@@ -12752,20 +13188,6 @@ msgstr ""
 "Папярэджанне: няслушны фармат ці запіс у спісе стыляў ''{0}''. Атрымана "
 "''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "Стандартны JOSM (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Убудаваны стыль, які выкарыстоўваецца як базавы для падлучальных стыляў"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "Асноўны стыль Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Налады карты"
 
@@ -12863,12 +13285,6 @@ msgstr ""
 "Папярэджанне: няправільны фармат пункта ў спісе нарыхтовак ''{0}''. Атрымана "
 "''{1}''"
 
-msgid "Internal Preset"
-msgstr "Убудаваная нарыхтоўка"
-
-msgid "The default preset for JOSM"
-msgstr "Нарыхтоўка па змаўчанні для JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Модуль  {0} выкарыстоўваецца гэтым {1} модулем:"
@@ -13381,9 +13797,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Не атрымалася атрымаць уліковыя дадзеныя OSM з мэнэджара ўліковых дадзеных."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Бягучы мэнэджар уліковых дадзеных мае тып ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Не атрымалася захаваць уліковыя дадзеныя OSM у мэнэджару ўліковых дадзеных."
@@ -13404,14 +13817,6 @@ msgstr ""
 "Паказвае, колькі дзён павінна прайсці пасля зачынення нататкі, каб яна больш "
 "не спампоўвалася"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Не атрымалася атрымаць токен доступу OAuth з мэнэджара ўліковых дадзеных"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Не атрымалася захаваць токен доступу OAuth у мэнэджару ўліковых дадзеных"
-
 msgid "Save to preferences"
 msgstr "Захаваць у наладах"
 
@@ -13613,69 +14018,6 @@ msgstr ""
 "Папярэджанне: недапушчальны фармат запісу ў спісе правіл ''{0}''. Атрымана "
 "''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Праверка памылак у адрасах"
-
-msgid "Tag combinations"
-msgstr "Камбінацыя тэгаў"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Праверка на адсутнасць ці сумніўныя камбінацыі тэгаў"
-
-msgid "Deprecated features"
-msgstr "Састарэлыя тэгі"
-
-msgid "Checks for deprecated features"
-msgstr "Праверка на наяўнасць састарэлых тэгаў"
-
-msgid "Geometry"
-msgstr "Геаметрыя"
-
-msgid "Checks for geometry errors"
-msgstr "Праверка на памылкі геаметрыі"
-
-msgid "Checks for errors on highways"
-msgstr "Праверка на памылкі дарог"
-
-msgid "Multiple values"
-msgstr "Множныя значэнні"
-
-msgid "Checks for wrong multiple values"
-msgstr "Праверка на хібнае прысваенне некалькіх значэнняў аднаму ключу"
-
-msgid "Numeric values"
-msgstr "Лікавыя значэнні"
-
-msgid "Checks for wrong numeric values"
-msgstr "Праверка на няправільныя лікавыя значэнні"
-
-msgid "Religion"
-msgstr "Рэлігія"
-
-msgid "Checks for errors on religious objects"
-msgstr "Праверка на памылкі рэлігійных аб’ектаў"
-
-msgid "Checks for errors on relations"
-msgstr "Праверка памылак у дачыненнях"
-
-msgid "Territories"
-msgstr "Тэрыторыі"
-
-msgid "Checks for territories-specific features"
-msgstr "Праверка на ўласцівасці, спецыфічныя для асобных тэрыторый"
-
-msgid "Unnecessary tags"
-msgstr "Непатрэбныя тэгі"
-
-msgid "Checks for unnecessary tags"
-msgstr "Праверка наяўнасці непатрэбных тэгаў"
-
-msgid "Wikipedia"
-msgstr "Вікіпедыя"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Праверка няправільных тэгаў Вікіпедыі"
-
 msgid "Tag checker rules"
 msgstr "Правілы праверкі тэгаў"
 
@@ -13935,6 +14277,37 @@ msgstr "Усе файлы (*.*)"
 msgid "Received error page:"
 msgstr "Атрыманая старонка паведамлення пра памылку:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Налада з ключом ''{0}'' не ўтрымоўвае ''{1}''. Немагчыма аднавіць геаметрыю "
+"акна з налад."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Налада з ключом ''{0}'' не ўтрымоўвае цэлае (int) значэнне для ''{1}''. "
+"Атрымана {2}. Немагчыма аднавіць геаметрыю акна з дапамогай параметраў."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Памылка пры аналізе поля ''{1}'' у наладзе з ключом ''{0}''. Тэкст памылкі: "
+"{2}. Немагчыма аднавіць геаметрыю акна ў адпаведнасці з наладамі."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Налада з ключом ''{0}'' не існуе. Немагчыма аднавіць геаметрыю акна ў "
+"адпаведнасці з наладамі."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ігнараванне скажонай геаметрыі: {0}"
+
 msgid "Min. latitude"
 msgstr "Мін. шырата"
 
@@ -14068,9 +14441,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Выключаны член {0} ўваходзіць у склад дачынення {1}"
 
-msgid "All Formats"
-msgstr "Усе фарматы"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Спампоўка пунктаў з {0} да {1}..."
 
@@ -14197,94 +14567,6 @@ msgstr "Разбор адказу сервера..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Нечаканы элемент XML з імем ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Немагчыма экспартаваць ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Немагчыма імпартаваць ''{0}''."
-
-msgid "Could not import files."
-msgstr "Немагчыма імпартаваць файлы."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Немагчыма прачытаць файл ''{0}''.<br>Памылка:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Немагчыма прачытаць файлы.<br>Памылка:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Файлы GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Пласт «{0}» не падтрымліваецца"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Увага: GPL несумяшчальная з ліцэнзіяй OSM. Не перадавайце на сервер трэкі, "
-"ліцэнзаваныя пад GPL"
-
-msgid "GPS track description"
-msgstr "апісанне трэка GPS"
-
-msgid "Add author information"
-msgstr "Дадаць інфармацыю пра аўтара"
-
-msgid "Real name"
-msgstr "Сапраўднае імя"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Аўтарскія правы (спасылка)"
-
-msgid "Predefined"
-msgstr "Прадвызначаны"
-
-msgid "Copyright year"
-msgstr "Аўтарскія правы (год)"
-
-msgid "Keywords"
-msgstr "Ключавыя словы"
-
-msgid "Export options"
-msgstr "Опцыі экспарту"
-
-msgid "Export and Save"
-msgstr "Экспартаваць і захаваць"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Памылка пры экспарце {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Абярыце ліцэнзію з набору"
-
-msgid "GPX Files"
-msgstr "Файлы GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Збой апрацоўкі дадзеных пласта ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Адбылася памылка пры аналізе дадзеных gpx для пласта «{0}». Будзе даступная "
-"толькі частка файла."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Адбылася памылка пры апрацоўцы gpx файла ''{0}''. Файл будзе даступны "
-"часткова."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Памылка разбору: няправільная структура дакумента gpx"
 
@@ -14294,18 +14576,6 @@ msgstr "(радок {0}, слупок {1})"
 msgid "Unknown mode {0}."
 msgstr "Невядомы рэжым {0}."
 
-msgid "Image Files"
-msgstr "Файлы малюнкаў"
-
-msgid "folder"
-msgstr "каталог"
-
-msgid "Looking for image files"
-msgstr "Пошук файлаў малюнкаў"
-
-msgid "No image files found."
-msgstr "Файлы малюнкаў не знойдзены"
-
 msgid "get number of unread messages"
 msgstr "атрымаць лік непрачытаных паведамленняў"
 
@@ -14361,36 +14631,9 @@ msgstr "Выбарка дачынення з id {0} з '' {1} ''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Сервер выдаў памылку 404 для id {0}. Прапускаем."
 
-msgid "NMEA-0183 Files"
-msgstr "Файлы NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Імпартавана каардынат: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Няслушны запыт: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Памылак праверкі кантрольнай сумы: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Невядомы выраз: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Нулявых каардынат: {0}"
-
-msgid "NMEA import success:"
-msgstr "Паспяховы імпарт NMEA дадзеных:"
-
-msgid "NMEA import failure!"
-msgstr "Збой пры імпарце NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Пусты паказальнік памылкі, магчыма, ёсць адсутныя тэгі"
 
-msgid "Note Files"
-msgstr "Файлы нататак"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14483,9 +14726,6 @@ msgstr "(Код={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Сервер вярнуў памылку з кодам {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Файлы сервера OSM сціснуты з дапамогай bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Пралог дакумента OsmChange ужо запісаны. Калі ласка, запісвайце толькі адзін "
@@ -14495,18 +14735,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Пралог дакумента OsmChange яшчэ не напісаны. Калі ласка, будзьце першымі."
 
-msgid "OsmChange File"
-msgstr "Файл OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Файл \"{0}\" не існуе"
-
-msgid "No data found in file {0}."
-msgstr "Не знойдзены дадзеныя ў файле {0}."
-
-msgid "Open OsmChange file"
-msgstr "Адкрыць файл OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Непадтрымоўваная версія: {0}"
 
@@ -14561,37 +14789,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Неспадзяванае значэнне параметру ''{0}'', роўнае ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Файлы сервера OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Адбылася памылка пры захаванні.<br>Памылка: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Адбылася памылка пры аднаўленні рэзервовай копіі файла.<br>Памылка: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Файлы сервера OSM сціснуты з дапамогай gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Разбор дадзеных гісторыі OSM..."
 
-msgid "Invalid dataset"
-msgstr "Няслушны набор дадзеных"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Няма дадзеных для пласта ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Няма дадзеных у файле ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Адкрыць файл OSM"
-
 msgid "Reading was canceled"
 msgstr "Чытанне было адменена"
 
@@ -14735,6 +14935,9 @@ msgstr "Злучэнне з серверам..."
 msgid "Downloading OSM notes..."
 msgstr "Загрузка нататак OSM..."
 
+msgid "Downloading data..."
+msgstr "Спампоўка дадзеных..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14798,14 +15001,8 @@ msgstr "Выяўлены нечаканы id 0 для элемента osm"
 msgid "Failed to evaluate {0}"
 msgstr "Не атрымалася выканаць {0}"
 
-msgid "Downloading data..."
-msgstr "Спампоўка дадзеных..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Файлы WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Непадтрымоўваны фармат версіі WMS файла; выяўлена {0}, чакалася {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Неспадзяванае значэнне для ключа ''{0}'' у наладах, атрымана ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} байт прачытана"
@@ -15999,37 +16196,6 @@ msgstr "Адкрыццё URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не ўтрымоўвае {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Састарэлая версія Java"
-
-msgid "Update Java"
-msgstr "Абнавіць Java"
-
-msgid "You are running version {0} of Java."
-msgstr "У вас версія Java {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Гэта версія больш не падтрымліваецца {0} з {1} і не рэкамендуецца для "
-"выкарыстання."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM хутка перастане працаваць з гэтай версіяй. Мы настойліва раім выканаць "
-"абнаўленне да Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Жадаеце выканаць абнаўленне цяпер?"
-
 msgid "reserved"
 msgstr "зарэзервавана"
 
@@ -16101,22 +16267,6 @@ msgstr "Падазроныя знакі ў ключы:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Занадта доўгае значэнне (максімум {0} знакаў):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Уставіць гэтыя тэгі?"
-
-msgid "Clear buffer"
-msgstr "Ачысціць буфер"
-
-msgid "Ignore warnings"
-msgstr "Ігнараваць папярэджанні"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p>На жаль, немагчыма ўставіць тэгі з буфера абмену. Ён не ўтрымлівае "
-"аб`ектаў JOSM або адпаведнага тэксту.</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Не атрымалася выдаліць файл {0}"
 
@@ -16141,130 +16291,15 @@ msgstr[0] "дзень"
 msgstr[1] "дня"
 msgstr[2] "дзён"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Налада з ключом ''{0}'' не ўтрымоўвае ''{1}''. Немагчыма аднавіць геаметрыю "
-"акна з налад."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Налада з ключом ''{0}'' не ўтрымоўвае цэлае (int) значэнне для ''{1}''. "
-"Атрымана {2}. Немагчыма аднавіць геаметрыю акна з дапамогай параметраў."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Памылка пры аналізе поля ''{1}'' у наладзе з ключом ''{0}''. Тэкст памылкі: "
-"{2}. Немагчыма аднавіць геаметрыю акна ў адпаведнасці з наладамі."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Налада з ключом ''{0}'' не існуе. Немагчыма аднавіць геаметрыю акна ў "
-"адпаведнасці з наладамі."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ігнараванне скажонай геаметрыі: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Немагчыма загрузіць XML схему."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Вы сутыкнуліся з памылкай у JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Паўстала непрадбачаная выключная сітуацыя.\n"
-"Гэта заўсёды памылка праграмавання. Калі ў вас самая новая версія JOSM, "
-"адпраўце, калі ласка, справаздачу аб гэтай памылцы."
-
-msgid "Debug information"
-msgstr "Адладкавыя інфармацыя"
-
-msgid "Manually report at:"
-msgstr "Адаслаць справаздачу ўручную на:"
-
-msgid "Is JOSM up to date?"
-msgstr "У вас апошняя версія JOSM?"
-
-msgid "Send bug report"
-msgstr "Адаслаць справаздачу пра памылку"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Калі ў вас найноўшая версія JOSM і модуляў, адпраўце, калі ласка, "
-"справаздачу пра памылку ў нашу сістэму асочвання памылак.\n"
-"Некаторая інфармацыя пра памылку павінна быць улучана ў справаздачу "
-"аўтаматычна. Дадайце звесткі пра тое, як узнавіць памылку і паспрабуйце "
-"зазначыць як мага больш падрабязнасцяў."
-
-msgid "Report Bug"
-msgstr "Паведаміць пра памылку"
-
-msgid "Suppress this error for this session."
-msgstr "Не паказваць больш гэтую памылку ў гэтым сеансе"
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Больш не паказваць памылкі ў гэтай сесіі"
-
-msgid "Ignore this error."
-msgstr "Ігнараваць гэту памылку."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Не атрымалася адкрыць справаздачу пра памылку. Калі ласка, паведаміце пра яе "
 "ўручную на гэтым вэб-сайце:"
 
-msgid "Include the system status report."
-msgstr "Уключыць справаздачу пра стан сістэмы."
-
-msgid "Include information about the data you were working on."
-msgstr "Уключыць інфармацыю пра даныя, з якімі вы працавалі."
-
-msgid "Include all stack traces."
-msgstr "Уключыць усе трасіроўкі стэка."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Ваша бягучая версія JOSM: {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM выконвае пошук абнаўленняў..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-"Адбылася памылка пры праверцы актуальнасці версіі вашага экзэмпляра JOSM."
-
-msgid "JOSM is up to date."
-msgstr "У вас найноўшая версія JOSM."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM састарэў. Бягучая версія — {0}. Паспрабуйце абнавіць JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Перад адпраўкай справаздачы пра памылку пераканаецеся, што вы абнавілі JOSM "
-"да найноўшай версіі, тут:"
-
-msgid "Update JOSM"
-msgstr "Абнавіць JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20022,9 +20057,6 @@ msgstr "Змест паказальніка"
 msgid "notice"
 msgstr "аб''явы"
 
-msgid "history"
-msgstr "гісторыя"
-
 msgid "nature"
 msgstr "прырода"
 
@@ -20604,6 +20636,9 @@ msgstr "Сацыяльныя паслугі"
 msgid "Nursing Home"
 msgstr "Дом састарэлых (састарэлы тэг)"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Установа групавога пражывання"
 
@@ -23046,6 +23081,9 @@ msgstr "Падарункі і сувеніры"
 msgid "Variety Store"
 msgstr "Універсальная крама"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Букмекерская кантора"
 
@@ -23921,6 +23959,78 @@ msgstr "Дзелавыя раёны"
 msgid "Industrial"
 msgstr "Прамысловая тэрыторыя"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Гаражы"
 
@@ -24620,6 +24730,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25374,6 +25487,9 @@ msgstr "Кадастр"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Овернь 2013 - 25 см"
 
@@ -25484,15 +25600,6 @@ msgstr "Старая карта Пегау - TK25 Messtischblatt (4839; 1909; PR
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: лічбавая базавая карта 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Тапаграфічная карта 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Агламерацыя Рур: Аэрафотаздымкі (10 см)"
 
@@ -33944,15 +34051,21 @@ msgstr "на папярэдняе значэнне (не змененае mtime)
 msgid "Photo Geotagging Plugin"
 msgstr "Модуль геапазнакі фатаграфіі"
 
-msgid "Writing position information to image files..."
-msgstr "Запіс інфармацыі пра месцазнаходжанне ў файлы малюнкаў..."
-
 msgid "Could not read mtime."
 msgstr "Немагчыма прачытаць mtime."
 
 msgid "Could not write mtime."
 msgstr "Немагчыма запісаць mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Запіс інфармацыі пра месцазнаходжанне ў файлы малюнкаў..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Файл не можа быць выдалены!"
 
@@ -34467,6 +34580,9 @@ msgstr "Выправіць памылку"
 msgid "PT: dummy test warning"
 msgstr "ГТ: фіктыўнае папярэджанне"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "ГТ: Маршрут утрымлівае разрыў, які можа быць ліквідаваны сартаваннем"
 
@@ -34475,6 +34591,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/bg.po b/i18n/po/bg.po
index d58adda..9978e5d 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-15 21:07+0000\n"
 "Last-Translator: pl <Unknown>\n"
 "Language-Team: Bulgarian <bg at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:38+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:38+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: bg\n"
 
@@ -56,55 +56,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Отварянето на връзката не се поддържа на текущата платформа (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Стартиране"
-
-msgid "Building main menu"
-msgstr "Изчертаване на главното меню"
-
-msgid "Help"
-msgstr "Помощ"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Инициализиране на OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Инициализиране на програмата за проверки"
-
-msgid "Initializing presets"
-msgstr "Инициализиране на шаблоните"
-
-msgid "Initializing map styles"
-msgstr "Инициализиране на картните стилове"
-
-msgid "Loading imagery preferences"
-msgstr "Зареждане на предпочитанията за сателитни снимки"
-
-msgid "Updating user interface"
-msgstr "Обновяване на интерфейса"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Игнориране на неправилна препратка: \"{0}\""
-
-msgid "Warning"
-msgstr "Внимание"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Игнориране неправилен адрес на файл: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Параметърът \"downloadgps\" не възприема имена на файлове или файлови URL."
-
 msgid "About"
 msgstr "За програмата"
 
@@ -182,6 +136,9 @@ msgstr "Отмяна"
 msgid "Click to abort launching external browsers"
 msgstr "Щракнете за да прекъснете стартирането на външни браузъри"
 
+msgid "Warning"
+msgstr "Внимание"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Моля, изберете поне една качена вече точка, линия или релация."
 
@@ -465,13 +422,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Сваляне от OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Сваляне на картографски данни от OSM сървър."
+msgid "Download data"
+msgstr "Сваляне на данни"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -481,9 +435,6 @@ msgstr ""
 "<html>Това действие ще изисква {0} отделни<br>заявки за сваляне. "
 "Продължаване?</html>"
 
-msgid "Download data"
-msgstr "Сваляне на данни"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -550,6 +501,9 @@ msgstr "Няма нищо за експорт. Първо съберете ня
 msgid "Export GPX file"
 msgstr "Експорт в GPX файл"
 
+msgid "Help"
+msgstr "Помощ"
+
 msgid "History"
 msgstr "История"
 
@@ -1088,23 +1042,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Моля, изберете пътища с ъгли приблизително 90 или 180 градуса."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Поставяне"
 
@@ -2415,36 +2352,6 @@ msgstr ""
 msgid "Select relation"
 msgstr "Избор на релация"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Търсене..."
 
@@ -2735,94 +2642,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"В регулярния израз \"{0}\" има грешка на позиция {1}, пълен текст на "
-"грешката:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Ключът не може да бъде празен, когато е използван оператор етикет. Пример: "
-"ключ=стойност."
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Непознат тип на примитив: {0}. Позволените стойности са: възел, път или "
-"релация."
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Неочакван знак: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Липсва параметър за логическо ИЛИ"
-
-msgid "Missing parameter for XOR"
-msgstr "Липсва параметър за логическо изключващо ИЛИ"
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2840,9 +2659,6 @@ msgstr "{0} брой точки в линия {1} - превишават доп
 msgid "API Capabilities Violation"
 msgstr "Превишаване възможностите на API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Циклична зависимост между релации:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3201,57 +3017,12 @@ msgstr "Роли в релации, отнасящи се за"
 msgid "Automatic tag correction"
 msgstr "Автоматично поправяне на маркерите"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Възстановяване на файлове"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Невалидна стойност на географска ширина ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Невалидна стойност на географска дължина ''{0}''"
 
-msgid "Question"
-msgstr "Въпрос"
-
-msgid "Message"
-msgstr "Съобщение"
-
-msgid "Enter text"
-msgstr "Въведете текст"
-
-msgid "Installing plugins"
-msgstr "Инсталиране на добавки"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3345,6 +3116,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Настройката {0} беше премахната тъй като вече не се използва."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "Метричен"
 
@@ -3473,6 +3250,15 @@ msgstr ""
 msgid "Note"
 msgstr "Забележка"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Очаква се ID > 0. Имаме {0}."
 
@@ -3487,7 +3273,10 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Примитив с ID = 0 не може да бъде невидим."
 
-msgid ""
+msgid "Cyclic dependency between relations:"
+msgstr "Циклична зависимост между релации:"
+
+msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
 
@@ -3523,6 +3312,59 @@ msgstr "Обединяваня на данни..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Тестът ''{0}'' завърши за {1}"
 
+msgid "incomplete"
+msgstr "непълен"
+
+msgid "House {0}"
+msgstr "Къща {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Номер {0} на {1}"
+
+msgid "House number {0}"
+msgstr "Номер на сграда {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "възел"
+msgstr[1] "възли"
+
+msgid "highway"
+msgstr "път"
+
+msgid "railway"
+msgstr "железопътна линия"
+
+msgid "waterway"
+msgstr "водоеми"
+
+msgid "landuse"
+msgstr "земеползване"
+
+msgid "building"
+msgstr "сграда"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} точка"
+msgstr[1] "{0} точки"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} член"
+msgstr[1] "{0} члена"
+
+msgid "public transport"
+msgstr "обществен транспорт"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "релация"
+msgstr[1] "релации"
+
+msgid "Changeset {0}"
+msgstr "Списък с промени {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3557,21 +3399,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "възел"
-msgstr[1] "възли"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "път"
 msgstr[1] "пътя"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "релация"
-msgstr[1] "релации"
-
 msgid "closedway"
 msgstr "затворен път"
 
@@ -3605,6 +3437,124 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "параметърът {0} не е в интервала 0..{1}, той е {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"В регулярния израз \"{0}\" има грешка на позиция {1}, пълен текст на "
+"грешката:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Ключът не може да бъде празен, когато е използван оператор етикет. Пример: "
+"ключ=стойност."
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Непознат тип на примитив: {0}. Позволените стойности са: възел, път или "
+"релация."
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Неочакван знак: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Липсва параметър за логическо ИЛИ"
+
+msgid "Missing parameter for XOR"
+msgstr "Липсва параметър за логическо изключващо ИЛИ"
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3682,6 +3632,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Адреси"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr "Остарели обекти"
+
+msgid "Checks for deprecated features"
+msgstr "Проверка за остарели обекти"
+
+msgid "Geometry"
+msgstr "Геометрия"
+
+msgid "Checks for geometry errors"
+msgstr "Проверка за геометрични грешки"
+
+msgid "Highways"
+msgstr "Пътища"
+
+msgid "Checks for errors on highways"
+msgstr "Проверка за грешки по пътищата"
+
+msgid "Multiple values"
+msgstr "Няколко стойности"
+
+msgid "Checks for wrong multiple values"
+msgstr "Проверка за грешно въведени стойности"
+
+msgid "Numeric values"
+msgstr "Цифрови стойности"
+
+msgid "Checks for wrong numeric values"
+msgstr "Проверка за грешно въведени цифрови стойности"
+
+msgid "Religion"
+msgstr "Религия"
+
+msgid "Checks for errors on religious objects"
+msgstr "Проверка за грешки на религиозни обекти"
+
+msgid "Relations"
+msgstr "Релации"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Ненужни тагове"
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Уикипедия"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3869,9 +3934,6 @@ msgstr "URL съдържа невалиден фрагмент: {0}"
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Адреси"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4058,9 +4120,6 @@ msgstr "Повтарящи се точки"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Проверява за пътища с последователни точки с еднакви координати"
 
-msgid "Highways"
-msgstr "Пътища"
-
 msgid "Performs semantic checks on highways."
 msgstr "Изпълнява проверка на таговете на пътищата"
 
@@ -4609,9 +4668,6 @@ msgstr "тип на водоема: {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "сграда"
-
 msgid "area"
 msgstr "област"
 
@@ -4728,45 +4784,15 @@ msgstr "Не показвай отново (за тази сесия)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показвай отново (запомни избора)"
 
-msgid "incomplete"
-msgstr "непълен"
-
-msgid "House {0}"
-msgstr "Къща {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Номер {0} на {1}"
-
-msgid "House number {0}"
-msgstr "Номер на сграда {0}"
-
-msgid "highway"
-msgstr "път"
-
-msgid "railway"
-msgstr "железопътна линия"
-
-msgid "waterway"
-msgstr "водоеми"
-
-msgid "landuse"
-msgstr "земеползване"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} точка"
-msgstr[1] "{0} точки"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} член"
-msgstr[1] "{0} члена"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Игнориране на неправилна препратка: \"{0}\""
 
-msgid "public transport"
-msgstr "обществен транспорт"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Игнориране неправилен адрес на файл: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Списък с промени {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Параметърът \"downloadgps\" не възприема имена на файлове или файлови URL."
 
 msgid "Precondition violation"
 msgstr "Нарушение на предварителното състояние"
@@ -4856,6 +4882,66 @@ msgstr "Отместване"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr "Обновете Java"
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Искате ли да обновите сега?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Стартиране"
+
+msgid "Building main menu"
+msgstr "Изчертаване на главното меню"
+
+msgid "Updating user interface"
+msgstr "Обновяване на интерфейса"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Инициализиране на OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Инициализиране на програмата за проверки"
+
+msgid "Initializing presets"
+msgstr "Инициализиране на шаблоните"
+
+msgid "Initializing map styles"
+msgstr "Инициализиране на картните стилове"
+
+msgid "Loading imagery preferences"
+msgstr "Зареждане на предпочитанията за сателитни снимки"
+
 msgid "usage"
 msgstr "използване"
 
@@ -5317,6 +5403,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr "Информация за дебъгване"
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Съобщаване за грешка"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Обновяване на JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -6014,6 +6173,20 @@ msgstr ""
 "Копираните данни съдържат непълни обекти. При поставяне, непълните обекти се "
 "премахват. Искате ли да поставите данните без непълните обекти?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr "Игнориране на предупрежденията"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6571,9 +6744,6 @@ msgstr "Източник"
 msgid "Title:"
 msgstr "Заглавие:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6684,9 +6854,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Релации"
-
 msgid "Open a list of all relations."
 msgstr "Отваряне на списъка с всички релации"
 
@@ -8083,24 +8250,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Тип на данните и източници:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap данни"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "Изходни GPS данни"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Свали като нов слой"
 
@@ -8128,6 +8277,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Сваляне на обект"
+
+msgid "Start downloading"
+msgstr "Започни сваляне"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Тип на данните и източници:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap данни"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "Изходни GPS данни"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr "Няма избрана площ"
 
@@ -8139,38 +8344,49 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr "Областта за сваляне е ОК, размерът е приемлив за сървъра."
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Сваляне на обект"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Започни сваляне"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Download all data?"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
 msgstr ""
 
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "история"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8213,9 +8429,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Грешка при обработка"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8768,6 +8981,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr "Въпрос"
+
+msgid "Message"
+msgstr "Съобщение"
+
+msgid "Enter text"
+msgstr "Въведете текст"
+
+msgid "Installing plugins"
+msgstr "Инсталиране на добавки"
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9259,9 +9484,6 @@ msgstr "Изберете обекти за качване"
 msgid "Cancel uploading"
 msgstr "Прекратяване на качването"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9340,6 +9562,184 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} обект за изтриване:"
 msgstr[1] "{0} обекта за изтриване:"
 
+msgid "All Formats"
+msgstr "Всички формати"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Забележка: GPL е несъвместим с OSM лиценза. Не качвайте следи лицензирани с "
+"GPL."
+
+msgid "GPS track description"
+msgstr "Описание на GPS следата"
+
+msgid "Add author information"
+msgstr "Добави информация за автора"
+
+msgid "Real name"
+msgstr "Истинско име"
+
+msgid "E-Mail"
+msgstr "Е-мейл"
+
+msgid "Copyright (URL)"
+msgstr "Авторски права (препратка)"
+
+msgid "Predefined"
+msgstr "Предварително дефиниран"
+
+msgid "Copyright year"
+msgstr "Авторски права (година)"
+
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgid "Export options"
+msgstr "Опции за експорт"
+
+msgid "Export and Save"
+msgstr "Експорт и Записване"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Грешка при експорт {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Изберете лиценз от набора"
+
+msgid "GPX Files"
+msgstr "GPX файлове"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 файлове"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "Грешка при NMEA импортиране!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Файловете на сървъра на OSM са компресирани с алгоритъм bzip2"
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "OSM сървърни файлове"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Възникна грешка при въстановяването на бекъп файла.<br> Грешката е: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "файлове WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Неподдъжана WMS файлова версия; намерена {0}, очаквана {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9447,6 +9847,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Затвори това съобщение и не го показвай отново"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Възстановяване на файлове"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Избор цвят"
 
@@ -9550,6 +9977,9 @@ msgstr "Всичко бележки:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "извън областта за сваляне"
 
@@ -9625,6 +10055,9 @@ msgstr "Грешки при проверка"
 msgid "No validation errors"
 msgstr "Няма грешки при проверката"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10222,9 +10655,6 @@ msgstr "(URL беше: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10234,6 +10664,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10653,50 +11086,29 @@ msgid ""
 "later.</html>"
 msgstr ""
 
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-"Трябва да рестартирате JOSM, за да може изменените настройки да подействат."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
+"Трябва да рестартирате JOSM, за да може изменените настройки да подействат."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11812,19 +12224,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Настройки на картата"
 
@@ -11904,12 +12303,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12376,9 +12769,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12396,12 +12786,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12584,69 +12968,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr "Остарели обекти"
-
-msgid "Checks for deprecated features"
-msgstr "Проверка за остарели обекти"
-
-msgid "Geometry"
-msgstr "Геометрия"
-
-msgid "Checks for geometry errors"
-msgstr "Проверка за геометрични грешки"
-
-msgid "Checks for errors on highways"
-msgstr "Проверка за грешки по пътищата"
-
-msgid "Multiple values"
-msgstr "Няколко стойности"
-
-msgid "Checks for wrong multiple values"
-msgstr "Проверка за грешно въведени стойности"
-
-msgid "Numeric values"
-msgstr "Цифрови стойности"
-
-msgid "Checks for wrong numeric values"
-msgstr "Проверка за грешно въведени цифрови стойности"
-
-msgid "Religion"
-msgstr "Религия"
-
-msgid "Checks for errors on religious objects"
-msgstr "Проверка за грешки на религиозни обекти"
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Ненужни тагове"
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Уикипедия"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12890,6 +13211,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -13004,9 +13348,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Всички формати"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Зареждане на точки от следи: {0} - {1}..."
 
@@ -13109,90 +13450,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Забележка: GPL е несъвместим с OSM лиценза. Не качвайте следи лицензирани с "
-"GPL."
-
-msgid "GPS track description"
-msgstr "Описание на GPS следата"
-
-msgid "Add author information"
-msgstr "Добави информация за автора"
-
-msgid "Real name"
-msgstr "Истинско име"
-
-msgid "E-Mail"
-msgstr "Е-мейл"
-
-msgid "Copyright (URL)"
-msgstr "Авторски права (препратка)"
-
-msgid "Predefined"
-msgstr "Предварително дефиниран"
-
-msgid "Copyright year"
-msgstr "Авторски права (година)"
-
-msgid "Keywords"
-msgstr "Ключови думи"
-
-msgid "Export options"
-msgstr "Опции за експорт"
-
-msgid "Export and Save"
-msgstr "Експорт и Записване"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Грешка при експорт {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Изберете лиценз от набора"
-
-msgid "GPX Files"
-msgstr "GPX файлове"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Грешка при разбор: невалидна структура на gpx документа"
 
@@ -13202,18 +13459,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr "Непознат режим {0}."
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13265,36 +13510,9 @@ msgstr "Сваляне на релация с ID {0} от ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 файлове"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "Грешка при NMEA импортиране!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Грешка! Възможно е да липсват маркери (тагове)."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13382,27 +13600,12 @@ msgstr "(код={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Сървърът отговори с код на грешка: {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Файловете на сървъра на OSM са компресирани с алгоритъм bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13448,37 +13651,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM сървърни файлове"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Възникна грешка при въстановяването на бекъп файла.<br> Грешката е: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13610,6 +13785,9 @@ msgstr "Свързване със сървъра..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13668,15 +13846,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "WMS Files (*.wms)"
-msgstr "файлове WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Неподдъжана WMS файлова версия; намерена {0}, очаквана {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14622,33 +14794,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URLне съдържа {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr "Обновете Java"
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Искате ли да обновите сега?"
-
 msgid "reserved"
 msgstr ""
 
@@ -14707,20 +14852,6 @@ msgstr "Подозрителни символи в полето:"
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr "Игнориране на предупрежденията"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14744,109 +14875,13 @@ msgid_plural "days"
 msgstr[0] "ден"
 msgstr[1] "дни"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr "Информация за дебъгване"
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Съобщаване за грешка"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Обновяване на JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18563,9 +18598,6 @@ msgstr "Съдържание на таблото"
 msgid "notice"
 msgstr "табела"
 
-msgid "history"
-msgstr "история"
-
 msgid "nature"
 msgstr "природа"
 
@@ -19145,6 +19177,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21585,6 +21620,9 @@ msgstr "Сувенири"
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Букмейкър"
 
@@ -22447,6 +22485,78 @@ msgstr "Търговия"
 msgid "Industrial"
 msgstr "Промишленост"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Гаражи"
 
@@ -23142,6 +23252,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -23894,6 +24007,9 @@ msgstr "Кадастър"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24006,15 +24122,6 @@ msgstr "Old map of Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -31931,13 +32038,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32435,6 +32548,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32443,6 +32559,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/bn.po b/i18n/po/bn.po
index 682ec7f..eb458c0 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:37+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:37+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: bn\n"
 
@@ -55,54 +55,9 @@ msgstr "পটভূমি ব্যবহারের শর্তাবলী"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "লিঙ্ক খোলার বর্তমান প্ল্যাটফর্ম সমর্থিত নয় ('' {0} '')"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "সহায়িকা"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "বিকৃত ইউআরএল উপেক্ষা করছে: \" {0} \""
-
-msgid "Warning"
-msgstr "সতর্কবার্তা"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "সম্বন্ধে"
 
@@ -180,6 +135,9 @@ msgstr "বাতিল করুন"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "সতর্কবার্তা"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "দয়া করে অন্তত একটি ইতিমধ্যে আপলোডকৃত নোড, রাস্তা, অথবা সম্পর্ক নির্বাচন করুন।"
@@ -459,13 +417,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "OSM থেকে ডাউনলোড করুন।"
-
-msgid "Download map data from the OSM server."
-msgstr "OSM সার্ভার থেকে মানচিত্র ডেটা ডাউনলোড করুন"
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -473,9 +428,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -542,6 +494,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "সহায়িকা"
+
 msgid "History"
 msgstr ""
 
@@ -1041,23 +996,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2312,36 +2250,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2628,86 +2536,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2725,9 +2553,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "API সক্ষমতা লঙ্ঘন"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3074,57 +2899,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3214,6 +2994,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3342,6 +3128,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3356,6 +3151,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3392,15 +3190,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3426,21 +3277,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3474,6 +3315,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3551,6 +3502,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3735,9 +3801,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3922,9 +3985,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4463,9 +4523,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4577,47 +4634,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "বিকৃত ইউআরএল উপেক্ষা করছে: \" {0} \""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4708,6 +4734,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5169,6 +5255,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5863,6 +6022,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6419,9 +6592,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6532,9 +6702,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7927,49 +8094,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7981,36 +8186,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8055,9 +8271,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8595,6 +8808,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9072,9 +9297,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9153,6 +9375,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9260,6 +9654,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9363,6 +9784,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9436,6 +9860,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10005,9 +10432,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10017,6 +10441,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10430,55 +10857,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11564,19 +11970,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11656,12 +12049,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12127,9 +12514,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12147,12 +12531,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12333,69 +12711,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12639,6 +12954,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12751,9 +13089,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12856,86 +13191,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12945,18 +13200,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13008,36 +13251,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13125,27 +13341,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13191,35 +13392,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13351,6 +13526,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13408,13 +13586,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14350,33 +14522,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14435,20 +14580,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14472,109 +14603,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18287,9 +18322,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18869,6 +18901,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21309,6 +21344,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22169,6 +22207,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22864,6 +22974,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23616,6 +23729,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23726,15 +23842,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31586,13 +31693,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32090,6 +32203,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32098,6 +32214,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/br.po b/i18n/po/br.po
index 66ff747..b775570 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:38+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:38+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: br\n"
 
@@ -58,54 +58,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Skoazell"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Na ober van ouzh an URL kamm :  \"{0}\""
-
-msgid "Warning"
-msgstr "Diwallit"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Na ober van ouzh an URL kamm :  \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Diwar-benn"
 
@@ -180,6 +135,9 @@ msgstr "Nullañ"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Diwallit"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Skoazell"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4571,50 +4628,19 @@ msgstr ""
 msgid "Do not show again (this operation)"
 msgstr ""
 
-msgid "Do not show again (this session)"
-msgstr ""
-
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (this session)"
+msgstr ""
 
-msgid "public transport"
+msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Na ober van ouzh an URL kamm :  \"{0}\""
+
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Na ober van ouzh an URL kamm :  \"{0}\""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/bs.po b/i18n/po/bs.po
index da9629a..efc8414 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 04:37+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:37+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: bs\n"
 
@@ -56,54 +56,9 @@ msgstr "Uslovi korištenja pozadine"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Otvaranje linka nije podržano na trenutnoj platformi (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr "Sastavljanje glavnog menija"
-
-msgid "Help"
-msgstr "Pomoć"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Inicijalizacija OSM API-a"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Pokretanje validatora"
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr "Učitavanje postavki slika"
-
-msgid "Updating user interface"
-msgstr "Ažuriranje korisničkog interfejsa"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorisan loše formiran URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Upozorenje"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorisan loše formiran fajl URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametar \"downloadgps\" ne prihvata ime fajla ili URL fajla"
-
 msgid "About"
 msgstr "O"
 
@@ -181,6 +136,9 @@ msgstr "Poništi"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Upozorenje"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -459,13 +417,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -473,9 +428,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -542,6 +494,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Pomoć"
+
 msgid "History"
 msgstr ""
 
@@ -1041,23 +996,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2312,36 +2250,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2628,86 +2536,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2725,9 +2553,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3074,57 +2899,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3214,6 +2994,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3342,6 +3128,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3356,6 +3151,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3392,15 +3190,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3426,21 +3277,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3474,6 +3315,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3551,6 +3502,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3735,9 +3801,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3922,9 +3985,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4463,9 +4523,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,52 +4631,21 @@ msgstr ""
 msgid "Do not show again (this operation)"
 msgstr ""
 
-msgid "Do not show again (this session)"
-msgstr ""
-
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "public transport"
+msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Do not show again (remembers choice)"
 msgstr ""
 
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorisan loše formiran URL: \"{0}\""
+
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorisan loše formiran fajl URL: \"{0}\""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametar \"downloadgps\" ne prihvata ime fajla ili URL fajla"
+
 msgid "Precondition violation"
 msgstr ""
 
@@ -4708,6 +4734,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr "Sastavljanje glavnog menija"
+
+msgid "Updating user interface"
+msgstr "Ažuriranje korisničkog interfejsa"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Inicijalizacija OSM API-a"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Pokretanje validatora"
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr "Učitavanje postavki slika"
+
 msgid "usage"
 msgstr ""
 
@@ -5169,6 +5255,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5863,6 +6022,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6419,9 +6592,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6532,9 +6702,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7927,49 +8094,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7981,36 +8186,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8055,9 +8271,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8595,6 +8808,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9072,9 +9297,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9153,6 +9375,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Svi Formati"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9260,6 +9654,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9363,6 +9784,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9436,6 +9860,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10005,9 +10432,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10017,6 +10441,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10430,55 +10857,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11564,19 +11970,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11656,12 +12049,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12127,9 +12514,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12147,12 +12531,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12333,69 +12711,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12639,6 +12954,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12751,9 +13089,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Svi Formati"
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12856,86 +13191,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12945,18 +13200,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13008,36 +13251,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13125,27 +13341,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13191,35 +13392,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13351,6 +13526,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13408,13 +13586,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14350,33 +14522,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14435,20 +14580,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14472,109 +14603,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18287,9 +18322,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18869,6 +18901,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21309,6 +21344,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22169,6 +22207,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22864,6 +22974,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23616,6 +23729,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23726,15 +23842,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31586,13 +31693,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32090,6 +32203,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32098,6 +32214,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ca.po b/i18n/po/ca.po
index d5b6074..d83c11f 100644
--- a/i18n/po/ca.po
+++ b/i18n/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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"
@@ -15,7 +15,7 @@ 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-08-13 04:39+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:38+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ca\n"
 
@@ -55,56 +55,9 @@ msgstr "Termes d''ús de la imatge de fons"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "L''enllaç no pot ser obert en aquesta plataforma (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Inicialitzacions específiques de la plataforma"
-
-msgid "Building main menu"
-msgstr "S''està construïnt el menú principal"
-
-msgid "Help"
-msgstr "Ajuda"
-
-msgid "Initializing internal boundaries data"
-msgstr "S''estan inicialitzant les dades de de fronteres internes"
-
-msgid "Initializing OSM API"
-msgstr "S''està inicialitzant l''API de l''OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "S''estan inicialitzant les dades de trànsit internes"
-
-msgid "Initializing validator"
-msgstr "S''està inicialitzant el validador"
-
-msgid "Initializing presets"
-msgstr "S''estan inicialitzant les predefinicions"
-
-msgid "Initializing map styles"
-msgstr "S''estan inicialitzant els estils de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "S''estan carregant les preferències de les imatges"
-
-msgid "Updating user interface"
-msgstr "S''està actualitzant la interfície d''usuari/a"
-
 msgid "Failed to save default preferences."
 msgstr "Ha fallat l''enregistrament de les preferències per defecte."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
-
-msgid "Warning"
-msgstr "Atenció"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
-"fitxers"
-
 msgid "About"
 msgstr "Quant a..."
 
@@ -186,6 +139,9 @@ msgstr "Cancel·la"
 msgid "Click to abort launching external browsers"
 msgstr "Feu clic per cancel·lar el llançament de navegadors externs"
 
+msgid "Warning"
+msgstr "Atenció"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Tria com a mínim un node, via o relació que ja estigui pujat"
 
@@ -477,14 +433,11 @@ msgstr ""
 "* Una via que no es creui amb ella mateixa i com a mínim dos nodes;\n"
 "* Tres nodes."
 
-msgid "Download from OSM..."
-msgstr "Baixa des de l''OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Baixa les dades dels mapes des del servidor OSM"
+msgid "Download data"
+msgstr "Baixa dades"
 
-msgid "Please select a download area first."
-msgstr "Seleccioneu abans una zona a baixar"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -493,9 +446,6 @@ msgstr ""
 "<html>Aquesta acció requerirà {0} peticions <br>de baixada. Voleu "
 "<br>continuar?</html>"
 
-msgid "Download data"
-msgstr "Baixa dades"
-
 msgid "Download notes in current view"
 msgstr "Baixa les notes de la vista actual"
 
@@ -563,6 +513,9 @@ msgstr "No hi ha res a exportar. Primer heu d''obtenir dades."
 msgid "Export GPX file"
 msgstr "Exporta el fitxer GPX"
 
+msgid "Help"
+msgstr "Ajuda"
+
 msgid "History"
 msgstr "Historial"
 
@@ -1127,23 +1080,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Seleccioneu vies que formin un angle de 90 o 180 graus, aproximadament."
 
-msgid "Download from Overpass API ..."
-msgstr "Baixa de l''API d''Overpass..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Baixa dades del servidor de l''API d''Overpass..."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Enganxa"
 
@@ -2529,36 +2465,6 @@ msgstr "Selecciona relació (afegir)"
 msgid "Select relation"
 msgstr "Selecciona relació"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<oex>"
-
-msgid "<left parent>"
-msgstr "<parent esquerre>"
-
-msgid "<right parent>"
-msgstr "<parent dret>"
-
-msgid "<colon>"
-msgstr "<punt>"
-
-msgid "<equals>"
-msgstr "<iguals>"
-
-msgid "<key>"
-msgstr "<clau>"
-
-msgid "<question mark>"
-msgstr "<signe d''interrogació>"
-
-msgid "<end-of-file>"
-msgstr "<fi-del-fitxer>"
-
 msgid "Search..."
 msgstr "Cerca..."
 
@@ -2857,96 +2763,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Cercant en {0} objecte"
 msgstr[1] "cercant en {0} objectes"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"L''expressió regular \"{0}\" té un error de sintaxi a l''òfset {1}. Detall "
-"de l''error:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"L''expressió regular \"{0}\" té un error de parseig. Detall de l''error:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "No es pot analitzar la data i hora ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "S''esperava {0} després de {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Interval d''identificadors de primietives esperat"
-
-msgid "Range of changeset ids expected"
-msgstr "Interval d''identificadors de conjunts de canvis esperat"
-
-msgid "Range of versions expected"
-msgstr "Interval de versions esperades"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La clau no pot ser buida quan s''utilitza l''etiqueta de ll''operador. "
-"Exemple d''utilització: clau=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipus d''objecte desconegut: {0}. Els valors admesos són node, via o relació."
-
-msgid "Positive integer expected"
-msgstr "S''esperava un nombre enter positiu"
-
-msgid "Range of numbers expected"
-msgstr "Sèrie de nombres esperats"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Testimoni inesperat. Esperat {0}, trobat {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Ha fallat l''anàlisi del selector MApCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "S''ha trobat un testimoni inesperat: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Manquen paràmetres per OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Manca un paràmetre per l''XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Manca l''operador per al NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Truncament automàtic del valor de l''etiqueta \"{0}\" de l''objecte suprimit "
@@ -2968,9 +2784,6 @@ msgstr "{0} nodes a la via {1} superen el nombre màxim de {2} nodes permès"
 msgid "API Capabilities Violation"
 msgstr "Violació de les capacitats de l''API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependència cíclica entre les relacions:"
-
 msgid "Removed obsolete tags"
 msgstr "Etiquetes obsoletes suprimides"
 
@@ -3351,65 +3164,12 @@ msgstr "Els rols referits a les relacions"
 msgid "Automatic tag correction"
 msgstr "Correcció automàtica d''atribut"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Impossible crear la carpeta {0}, la còpia de seguretat automàtica serà "
-"desactivada."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "El fitxer {0} no pot ser creat, heu d''utilitzar un altre nom"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Error d''entrada/sortida durant la creació del fitxer, la còpia de seguretat "
-"automàtica serà omesa: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "No és possible de suprimir l''antiga còpia de seguretat {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "S''ha fet una còpia de seguretat automàtica de la vostra feina."
-
-msgid "Restoring files"
-msgstr "S''estan restaurant els fitxers"
-
-msgid "Unable to delete backup file {0}"
-msgstr "La supressió del fitxer de copia de seguretat {0} no és possible"
-
-msgid "Unable to delete PID file {0}"
-msgstr "La supressió del fitxer PID {0} no és possible"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-"La supressió del fitxer de copia de seguretat arxivat {0} no és possible"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "El valor de latitud ''{0}'' és erroni"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "El valor de longitud ''{0}'' és erroni"
 
-msgid "Question"
-msgstr "Pregunta"
-
-msgid "Message"
-msgstr "Missatge"
-
-msgid "Enter text"
-msgstr "Introduïu el text"
-
-msgid "Installing plugins"
-msgstr "Instal·lant connectors"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>El fitxer de paràmetres vol afegir preferències a <b>{0}</b>,<br/> "
-"però en aquest moment no es coneix el seu valor predefinit<br/> Si us plau, "
-"activeu manualment la funció corresponent i torneu a importar una altre cop."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Ha fallat la creació del directori mancant per la memòria cau: {0}"
 
@@ -3520,6 +3280,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "La preferència {0} ha estat suprimida perquè ja no s''utilitza."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>El fitxer de paràmetres vol afegir preferències a <b>{0}</b>,<br/> "
+"però en aquest moment no es coneix el seu valor predefinit<br/> Si us plau, "
+"activeu manualment la funció corresponent i torneu a importar una altre cop."
+
 msgid "Metric"
 msgstr "Mètric"
 
@@ -3657,6 +3426,18 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Ha fallat l''obtenció del testimoni d''accés OAuth del gestor de credencials"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "El gestor de credencials actual és de tipus ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Ha fallat l''emmagatzemament del testimoni d''accés OAuth al gestor de "
+"credencials"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "S''espera un ID > 0. Actualment és {0}."
 
@@ -3673,6 +3454,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Una primitiva amb ID = 0 nno pot ser invisible"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependència cíclica entre les relacions:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3716,6 +3500,59 @@ msgstr "Combinant dades..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "El test ''{0}'' ha estat completat en {1}"
 
+msgid "incomplete"
+msgstr "incomplet"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Número de casa del {0} al {1}"
+
+msgid "House number {0}"
+msgstr "Número de casa {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "node"
+msgstr[1] "nodes"
+
+msgid "highway"
+msgstr "via"
+
+msgid "railway"
+msgstr "ferrocarril"
+
+msgid "waterway"
+msgstr "corrent d''aigua"
+
+msgid "landuse"
+msgstr "Ús del sòl"
+
+msgid "building"
+msgstr "edifici"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+msgstr[1] "{0} nodes"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membre"
+msgstr[1] "{0} membres"
+
+msgid "public transport"
+msgstr "transport públic"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relació"
+msgstr[1] "relacions"
+
+msgid "Changeset {0}"
+msgstr "Conjunt de modificacions {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Error en el filtre <code>{0}</code>:<br>{1}"
 
@@ -3754,21 +3591,11 @@ msgstr ""
 "No es poden fusionar objectes amb diferents ID. Un id és {0} i l''altre és "
 "{1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "node"
-msgstr[1] "nodes"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "via"
 msgstr[1] "vies"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relació"
-msgstr[1] "relacions"
-
 msgid "closedway"
 msgstr "via tancada"
 
@@ -3807,6 +3634,126 @@ msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 "El paràmetre {0} no te un valor entre 0 i {1}. El seu valor és ''{2}''."
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<oex>"
+
+msgid "<left parent>"
+msgstr "<parent esquerre>"
+
+msgid "<right parent>"
+msgstr "<parent dret>"
+
+msgid "<colon>"
+msgstr "<punt>"
+
+msgid "<equals>"
+msgstr "<iguals>"
+
+msgid "<key>"
+msgstr "<clau>"
+
+msgid "<question mark>"
+msgstr "<signe d''interrogació>"
+
+msgid "<end-of-file>"
+msgstr "<fi-del-fitxer>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"L''expressió regular \"{0}\" té un error de sintaxi a l''òfset {1}. Detall "
+"de l''error:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"L''expressió regular \"{0}\" té un error de parseig. Detall de l''error:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "No es pot analitzar la data i hora ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "S''esperava {0} després de {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Interval d''identificadors de primietives esperat"
+
+msgid "Range of changeset ids expected"
+msgstr "Interval d''identificadors de conjunts de canvis esperat"
+
+msgid "Range of versions expected"
+msgstr "Interval de versions esperades"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La clau no pot ser buida quan s''utilitza l''etiqueta de ll''operador. "
+"Exemple d''utilització: clau=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipus d''objecte desconegut: {0}. Els valors admesos són node, via o relació."
+
+msgid "Positive integer expected"
+msgstr "S''esperava un nombre enter positiu"
+
+msgid "Range of numbers expected"
+msgstr "Sèrie de nombres esperats"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Ha fallat l''anàlisi del selector MApCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "S''ha trobat un testimoni inesperat: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Manquen paràmetres per OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Manca un paràmetre per l''XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Manca l''operador per al NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Testimoni inesperat. Esperat {0}, trobat {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Ha fallat la càrrega de la classe de renderització de mapes ''{0}''. La "
@@ -3893,6 +3840,123 @@ msgstr "S''esperava l''element ''{0}'', però s''ha obtingut ''{1}''"
 msgid "value expected"
 msgstr "valor esperat"
 
+msgid "Short Description:"
+msgstr "Descripció curta:"
+
+msgid "URL:"
+msgstr "Adreça URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Pàgina web:"
+
+msgid "Description:"
+msgstr "Descripció:"
+
+msgid "Version:"
+msgstr "Versió:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versió mínima del JOSM:"
+
+msgid "by {0}"
+msgstr "per {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM predeterminat (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estil intern utilitzable com a base pels estils superposables "
+"durant''execució"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "l''estil principal de Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Predefincions internes"
+
+msgid "The default preset for JOSM"
+msgstr "Les predefinicions per defecte del JOSM"
+
+msgid "Addresses"
+msgstr "Adreces"
+
+msgid "Checks for errors on addresses"
+msgstr "Verifica errors a les adreces"
+
+msgid "Tag combinations"
+msgstr "Combinacions d''etiquetes"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Verifica etiquetes omeses o combinacions sospitoses"
+
+msgid "Deprecated features"
+msgstr "Fincionalitats obsoletes"
+
+msgid "Checks for deprecated features"
+msgstr "Verifica funcionalitats obsoletes"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Verifica si hi ha errors de geometria"
+
+msgid "Highways"
+msgstr "Vies"
+
+msgid "Checks for errors on highways"
+msgstr "Verifica si hi ha errors a les vies"
+
+msgid "Multiple values"
+msgstr "Valors múltiples"
+
+msgid "Checks for wrong multiple values"
+msgstr "Verifica si hi ha valors múltiples erronis"
+
+msgid "Numeric values"
+msgstr "Valors numèrics"
+
+msgid "Checks for wrong numeric values"
+msgstr "Compova si hi ha valors numèrics erronis"
+
+msgid "Religion"
+msgstr "Religió"
+
+msgid "Checks for errors on religious objects"
+msgstr "Comprova si hi ha errors als objectes religiosos"
+
+msgid "Relations"
+msgstr "Relacions"
+
+msgid "Checks for errors on relations"
+msgstr "Comprova si hi ha errors a les relacions"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Etiquetes innecessàries"
+
+msgid "Checks for unnecessary tags"
+msgstr "Comprova si hi ha etiquetes innecessàries"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Comprovació d''etiquetes errònies de la viquipèdia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 "La projecció UTM (''+proj=utm'') requereix el paràmetre ''+zone=...''."
@@ -4091,9 +4155,6 @@ msgstr "l''URL conté un fragment que no és vàlid: {0}"
 msgid "URL validator"
 msgstr "Validador d''URL"
 
-msgid "Addresses"
-msgstr "Adreces"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Verifica si hi ha errors a les adreces i les relacions de carrer associat "
@@ -4292,9 +4353,6 @@ msgstr "Nodes de via duplicats"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Cerca si hi ha vies amb nodes consecutius idèntics"
 
-msgid "Highways"
-msgstr "Vies"
-
 msgid "Performs semantic checks on highways."
 msgstr "Fa una comprovació semàntica de les vies."
 
@@ -4871,9 +4929,6 @@ msgstr "tipus de curs d''aigua {0}"
 msgid "boundary type {0}"
 msgstr "tipus de límit {0}"
 
-msgid "building"
-msgstr "edifici"
-
 msgid "area"
 msgstr "àrea"
 
@@ -4992,45 +5047,16 @@ msgstr "No ho tornis a mostrar (aquesta sessió)"
 msgid "Do not show again (remembers choice)"
 msgstr "No tornar a mostrar (recordar selecció)"
 
-msgid "incomplete"
-msgstr "incomplet"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Número de casa del {0} al {1}"
-
-msgid "House number {0}"
-msgstr "Número de casa {0}"
-
-msgid "highway"
-msgstr "via"
-
-msgid "railway"
-msgstr "ferrocarril"
-
-msgid "waterway"
-msgstr "corrent d''aigua"
-
-msgid "landuse"
-msgstr "Ús del sòl"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-msgstr[1] "{0} nodes"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membre"
-msgstr[1] "{0} membres"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
 
-msgid "public transport"
-msgstr "transport públic"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conjunt de modificacions {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
+"fitxers"
 
 msgid "Precondition violation"
 msgstr "Precondició no omplerta"
@@ -5120,6 +5146,70 @@ msgstr "Desplaçament"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "S''esperava un valor per al paràmetre ''{0}'', ara és ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Versió obsoleta de Java"
+
+msgid "Update Java"
+msgstr "Actualitzeu Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Utilitzeu la versió {0} de Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Aquesta versió no és suportada per {0} des de {1} i no es recomana la seva "
+"utilització."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM deixarà de funcionar aviat amb aquesta versió; recomanem actualitzar "
+"vers la versió de Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Voleu actualitzar-la ara?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Inicialitzacions específiques de la plataforma"
+
+msgid "Building main menu"
+msgstr "S''està construïnt el menú principal"
+
+msgid "Updating user interface"
+msgstr "S''està actualitzant la interfície d''usuari/a"
+
+msgid "Initializing internal boundaries data"
+msgstr "S''estan inicialitzant les dades de de fronteres internes"
+
+msgid "Initializing OSM API"
+msgstr "S''està inicialitzant l''API de l''OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "S''estan inicialitzant les dades de trànsit internes"
+
+msgid "Initializing validator"
+msgstr "S''està inicialitzant el validador"
+
+msgid "Initializing presets"
+msgstr "S''estan inicialitzant les predefinicions"
+
+msgid "Initializing map styles"
+msgstr "S''estan inicialitzant els estils de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "S''estan carregant les preferències de les imatges"
+
 msgid "usage"
 msgstr "ús"
 
@@ -5624,6 +5714,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "El valor no és un índex de tessel·les vàlid per al nivell d''ampliació donat."
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Heu trobat un error dins JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Informa d''un error"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "No tornar a mostrar la finestra d''error durant aquesta sessió."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Actualitza JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflicte al fons: sense conflicte"
 
@@ -6405,6 +6568,22 @@ msgstr ""
 "seran ignorats en fer l''operació d''enganxar. Voleu enganxar les dades "
 "copiades sense els objectes incomplets?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Voleu enganxar aquestes etiquetes?"
+
+msgid "Clear buffer"
+msgstr "Neteja la memòria intermèdia"
+
+msgid "Ignore warnings"
+msgstr "Ignora els avisos"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Ho sentim, No és possible d''enganxar etiquetes de la memòria "
+"intermèdia perquè no conté cap objecte JOSM ni cap text apropiat. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Només pels objectes seleccionats"
 
@@ -7012,9 +7191,6 @@ msgstr "Origen"
 msgid "Title:"
 msgstr "Títol:"
 
-msgid "URL:"
-msgstr "Adreça URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Estil integrat, ruta interna:"
 
@@ -7132,9 +7308,6 @@ msgstr ""
 "S''ha especificat un ID de llista invàlid\n"
 "No es pot continuar."
 
-msgid "Relations"
-msgstr "Relacions"
-
 msgid "Open a list of all relations."
 msgstr "Obre una llista amb totes les relacions."
 
@@ -8651,24 +8824,6 @@ msgstr "La latitud ha d''estar compresa entre -90 i 90 graus."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "La laongitud ha d''estar compresa entre -180 i 180 graus."
 
-msgid "Data Sources and Types:"
-msgstr "Tipus i fonts de dades:"
-
-msgid "OpenStreetMap data"
-msgstr "Dades OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Tria la zona per baixar-te les dades OSM."
-
-msgid "Raw GPS data"
-msgstr "Dades GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Baixar les traces GPS de la zona seleccionada"
-
-msgid "Select to download notes in the selected download area."
-msgstr "Seleccioneu baixar notes de l''àrea baixada."
-
 msgid "Download as new layer"
 msgstr "Baixar com una capa nova"
 
@@ -8704,32 +8859,12 @@ msgstr ""
 "zona, les tecles de fletxa o el botó dret del ratolí per desplaçar el mapa i "
 "la rodeta del ratolí o les tecles + i - pel nivell d''ampliació."
 
-msgid "No area selected yet"
-msgstr "Encara no hi ha cap zona seleccionada"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"La zona a baixar és massa gran; probablement serà refusada pel servidor"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"L''àrea de baixada és correcta, la seva mida sembla aceptable per al servidor"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Feu clic per a anul·lar la baixada i tancar la finestra"
 
 msgid "Click to download the currently selected area"
 msgstr "Feu clic per baixar la zona seleccionada"
 
-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>Ni <strong>{0}</strong>, <strong>{1}</strong> ni <strong>{2}</strong> "
-"han estat habilitats.<br>Si us plau, escolliu entre descarregar dades OSM, "
-"GPX, Notes o tots tres tipus de dades.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Baixa les referències (relacions de parentiu)"
 
@@ -8753,6 +8888,93 @@ msgstr "Indiqueu si els membres de la relació també han de ser baixats"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Baixa lesrelacions (relacions de parentiu i vies)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Tipus i fonts de dades:"
+
+msgid "OpenStreetMap data"
+msgstr "Dades OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Tria la zona per baixar-te les dades OSM."
+
+msgid "Raw GPS data"
+msgstr "Dades GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Baixar les traces GPS de la zona seleccionada"
+
+msgid "Select to download notes in the selected download area."
+msgstr "Seleccioneu baixar notes de l''àrea baixada."
+
+msgid "Please select a download area first."
+msgstr "Seleccioneu abans una zona a baixar"
+
+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>Ni <strong>{0}</strong>, <strong>{1}</strong> ni <strong>{2}</strong> "
+"han estat habilitats.<br>Si us plau, escolliu entre descarregar dades OSM, "
+"GPX, Notes o tots tres tipus de dades.</html>"
+
+msgid "No area selected yet"
+msgstr "Encara no hi ha cap zona seleccionada"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"La zona a baixar és massa gran; probablement serà refusada pel servidor"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"L''àrea de baixada és correcta, la seva mida sembla aceptable per al servidor"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "historial"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8795,9 +9017,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Error d''anàlisi"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9401,6 +9620,18 @@ msgstr "Autenticar amb el nom d''usuari i la contrasenya indicats"
 msgid "Cancel authentication"
 msgstr "Anul·la l''autenticació"
 
+msgid "Question"
+msgstr "Pregunta"
+
+msgid "Message"
+msgstr "Missatge"
+
+msgid "Enter text"
+msgstr "Introduïu el text"
+
+msgid "Installing plugins"
+msgstr "Instal·lant connectors"
+
 msgid "Downloading file"
 msgstr "S''esta baixant fitxer"
 
@@ -9971,11 +10202,6 @@ msgstr "Seleccionar objectes a pujar"
 msgid "Cancel uploading"
 msgstr "Cancel·lar la pujada"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valor inesperat per a la clau ''{0}'' de les preferències, s''ha obtingut "
-"''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Omplir un conjunt de canvis i tornar a la finestra de pujades"
 
@@ -10062,6 +10288,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objecte a suprimir:"
 msgstr[1] "{0} objectes a suprimir:"
 
+msgid "All Formats"
+msgstr "Tots els formats"
+
+msgid "Could not export ''{0}''."
+msgstr "No es pot exportar ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "No s''ha pogut importar ''{0}''."
+
+msgid "Could not import files."
+msgstr "No es poden importar els fitxers"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>No es pot llegir el fitxer ''{0}''.<br>L''error és:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>No es poden llegir els arxius.<br>L''error és:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Fitxers GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Capa ''{0}'' no suportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: La llicència GPL no és compatible amb la llicència OSM. No pugis dades "
+"amb llicència GPL."
+
+msgid "GPS track description"
+msgstr "Descripció del track GPS"
+
+msgid "Add author information"
+msgstr "Afegeix informació d''autor"
+
+msgid "Real name"
+msgstr "Nom real"
+
+msgid "E-Mail"
+msgstr "Correu electrònic"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefinit"
+
+msgid "Copyright year"
+msgstr "Copyright any"
+
+msgid "Keywords"
+msgstr "Paraules clau"
+
+msgid "Export options"
+msgstr "Opcions d''exportació"
+
+msgid "Export and Save"
+msgstr "Exporta i desa"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Error mentre s''exportava {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escollir un llicència predefinida"
+
+msgid "GPX Files"
+msgstr "Fitxers GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Ha fallat el processament de les dades de la capa ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Ha hagut un error en processar les dades GPX de la capa ''{0}''. Només una "
+"part del fitxer estarà disponible."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Ha hagut un error mentre es processava el fitxer gpx ''{0}''. Només una part "
+"del fitxer estarà disponible."
+
+msgid "Image Files"
+msgstr "Fitxers d''imatge"
+
+msgid "folder"
+msgstr "carpeta"
+
+msgid "Looking for image files"
+msgstr "Cercant fitxers d''imatges"
+
+msgid "No image files found."
+msgstr "No s''han trobat fitxers d''imatge"
+
+msgid "NMEA-0183 Files"
+msgstr "Fitxers NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenades importades: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Sentències malformades: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Errors de suma de verificació: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Sentències desconegudes: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Sense coordenades: {0}"
+
+msgid "NMEA import success:"
+msgstr "Importació NMEA reeixida:"
+
+msgid "NMEA import failure!"
+msgstr "La importació NMEA ha fallat!"
+
+msgid "Note Files"
+msgstr "Arxius de notes"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Servidor OSM fitxers comprimits bzip2"
+
+msgid "OsmChange File"
+msgstr "Fitxer OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "No existeix el fitxer ''{0}''."
+
+msgid "No data found in file {0}."
+msgstr "NO s''han trobat dades al fitxer {0}."
+
+msgid "Open OsmChange file"
+msgstr "Obre fitxer OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Fitxers del servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ha hagut un error en desar.<br>L''error és:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Ha hagut un error en restaurar la còpia de seguretat.<br>L''error "
+"és:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Fitxers del servidor OSM comprimits amb gzip"
+
+msgid "Invalid dataset"
+msgstr "Conjunt de dades invàlid"
+
+msgid "No data found for layer ''{0}''."
+msgstr "No s''han trobat dades per a la capa ''{0}''"
+
+msgid "No data found in file ''{0}''."
+msgstr "No s''han trobat dades al fitxer ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Obre fitxer OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Fitxers WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versió de fitxer WMS no suportada; trobada {0}, esperada {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10171,6 +10580,38 @@ msgstr "No tornis a mostrar aquest missatge"
 msgid "Hide this message and never show it again"
 msgstr "Amagar aquest missatge i no tornar-ho a mostrar"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Impossible crear la carpeta {0}, la còpia de seguretat automàtica serà "
+"desactivada."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "El fitxer {0} no pot ser creat, heu d''utilitzar un altre nom"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Error d''entrada/sortida durant la creació del fitxer, la còpia de seguretat "
+"automàtica serà omesa: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "No és possible de suprimir l''antiga còpia de seguretat {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "S''ha fet una còpia de seguretat automàtica de la vostra feina."
+
+msgid "Restoring files"
+msgstr "S''estan restaurant els fitxers"
+
+msgid "Unable to delete backup file {0}"
+msgstr "La supressió del fitxer de copia de seguretat {0} no és possible"
+
+msgid "Unable to delete PID file {0}"
+msgstr "La supressió del fitxer PID {0} no és possible"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+"La supressió del fitxer de copia de seguretat arxivat {0} no és possible"
+
 msgid "Customize Color"
 msgstr "Personalitzar el color"
 
@@ -10274,6 +10715,9 @@ msgstr "Total de notes:"
 msgid "Changes need uploading?"
 msgstr "Els canvis requereixen ser pujats?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fore de l''àrea baixada"
 
@@ -10349,6 +10793,9 @@ msgstr "Errors de validació"
 msgid "No validation errors"
 msgstr "Cap error de validació"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Establir un favorit WMS"
 
@@ -10973,9 +11420,6 @@ msgstr "(l''URL era: "
 msgid "Select the map painting styles"
 msgstr "Seleccionar els estils per dibuixar el mapa"
 
-msgid "loading style ''{0}''..."
-msgstr "carregant l''estil ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10989,6 +11433,9 @@ msgstr[1] ""
 "Ha hagut {0} errors en carregar aquest estil. Seleccioneu ''Informació'' al "
 "menú que obtindreu amb el botó dret del ratolí per a més detalls."
 
+msgid "loading style ''{0}''..."
+msgstr "carregant l''estil ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Ha fallat la càrrega dels estils de Mappaint de ''{0}''. L''excepció ha "
@@ -11541,27 +11988,6 @@ msgstr "Baixar connector"
 msgid "Icon paths:"
 msgstr "Ruta de les icones:"
 
-msgid "Short Description:"
-msgstr "Descripció curta:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Pàgina web:"
-
-msgid "Description:"
-msgstr "Descripció:"
-
-msgid "Version:"
-msgstr "Versió:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versió mínima del JOSM:"
-
-msgid "by {0}"
-msgstr "per {0}"
-
 msgid "Name (optional):"
 msgstr "Nom (opcional):"
 
@@ -12745,21 +13171,6 @@ msgstr ""
 "Avís: format incorrecte d''una entrada a la llista d''estils ''{0}''. Hi ha "
 "''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM predeterminat (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estil intern utilitzable com a base pels estils superposables "
-"durant''execució"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "l''estil principal de Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Paràmetres dels mapes"
 
@@ -12860,12 +13271,6 @@ msgstr ""
 "Avís: format incorrecte d''una entrada de la llista de predefinicions "
 "''{0}''. Hi ha ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Predefincions internes"
-
-msgid "The default preset for JOSM"
-msgstr "Les predefinicions per defecte del JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "El connector {0} és encara utilitzat per aquest altre"
@@ -13372,9 +13777,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "La fallat l''obtenció de les credencials OSM del gestor de credencials."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "El gestor de credencials actual és de tipus ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Les credencials OSM no han pogut ser desades al gestor de credencials."
@@ -13395,15 +13797,6 @@ msgstr ""
 "Especifica el nombre de dies que una nota necessita per a ser tancada i "
 "deixar de ser descarregable"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Ha fallat l''obtenció del testimoni d''accés OAuth del gestor de credencials"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Ha fallat l''emmagatzemament del testimoni d''accés OAuth al gestor de "
-"credencials"
-
 msgid "Save to preferences"
 msgstr "Desar a les preferències"
 
@@ -13609,69 +14002,6 @@ msgstr ""
 "Avís: format incorrecte d''un element de la llista de regles ''{0}''. Hi ha "
 "''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Verifica errors a les adreces"
-
-msgid "Tag combinations"
-msgstr "Combinacions d''etiquetes"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Verifica etiquetes omeses o combinacions sospitoses"
-
-msgid "Deprecated features"
-msgstr "Fincionalitats obsoletes"
-
-msgid "Checks for deprecated features"
-msgstr "Verifica funcionalitats obsoletes"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Verifica si hi ha errors de geometria"
-
-msgid "Checks for errors on highways"
-msgstr "Verifica si hi ha errors a les vies"
-
-msgid "Multiple values"
-msgstr "Valors múltiples"
-
-msgid "Checks for wrong multiple values"
-msgstr "Verifica si hi ha valors múltiples erronis"
-
-msgid "Numeric values"
-msgstr "Valors numèrics"
-
-msgid "Checks for wrong numeric values"
-msgstr "Compova si hi ha valors numèrics erronis"
-
-msgid "Religion"
-msgstr "Religió"
-
-msgid "Checks for errors on religious objects"
-msgstr "Comprova si hi ha errors als objectes religiosos"
-
-msgid "Checks for errors on relations"
-msgstr "Comprova si hi ha errors a les relacions"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Etiquetes innecessàries"
-
-msgid "Checks for unnecessary tags"
-msgstr "Comprova si hi ha etiquetes innecessàries"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Comprovació d''etiquetes errònies de la viquipèdia"
-
 msgid "Tag checker rules"
 msgstr "Comprovador de regles d''etiquetes"
 
@@ -13931,6 +14261,39 @@ msgstr "Tots els fitxers (*.*)"
 msgid "Received error page:"
 msgstr "S''ha rebut un error de pàgina:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no inclou ''{1}''. No és possible la "
+"restauració de la geometria de la finestra a partir de les preferències."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no proporciona un valor enter per "
+"''{1}''. El seu valor és {2}. No és possible la restauració de la geometria "
+"de la finestra a partir de les preferències."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Ha fallat l''anàlisi del camp ''{1}'' a la preferència amb la clau ''{0}''. "
+"L''excepció ha estat: {2}. No és possible la restauració de la geometria de "
+"la finestra a partir de les preferències."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no existeix.  No és possible la "
+"restauració de la geometria de la finestra a partir de les preferències."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorant la geometria malformada: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitud mínima"
 
@@ -14066,9 +14429,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "El membre esborrat {0} és utilitzat per la relació {1}"
 
-msgid "All Formats"
-msgstr "Tots els formats"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "S''estan baixant punts del {0} al {1}..."
 
@@ -14201,95 +14561,6 @@ msgstr "Analitzant la resposta del servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Element XML inesperat amb nom ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "No es pot exportar ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "No s''ha pogut importar ''{0}''."
-
-msgid "Could not import files."
-msgstr "No es poden importar els fitxers"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>No es pot llegir el fitxer ''{0}''.<br>L''error és:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>No es poden llegir els arxius.<br>L''error és:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Fitxers GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Capa ''{0}'' no suportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: La llicència GPL no és compatible amb la llicència OSM. No pugis dades "
-"amb llicència GPL."
-
-msgid "GPS track description"
-msgstr "Descripció del track GPS"
-
-msgid "Add author information"
-msgstr "Afegeix informació d''autor"
-
-msgid "Real name"
-msgstr "Nom real"
-
-msgid "E-Mail"
-msgstr "Correu electrònic"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefinit"
-
-msgid "Copyright year"
-msgstr "Copyright any"
-
-msgid "Keywords"
-msgstr "Paraules clau"
-
-msgid "Export options"
-msgstr "Opcions d''exportació"
-
-msgid "Export and Save"
-msgstr "Exporta i desa"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Error mentre s''exportava {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escollir un llicència predefinida"
-
-msgid "GPX Files"
-msgstr "Fitxers GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Ha fallat el processament de les dades de la capa ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Ha hagut un error en processar les dades GPX de la capa ''{0}''. Només una "
-"part del fitxer estarà disponible."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Ha hagut un error mentre es processava el fitxer gpx ''{0}''. Només una part "
-"del fitxer estarà disponible."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Error de sintaxi: l''estructura del document GPX no és correcta"
 
@@ -14299,18 +14570,6 @@ msgstr "(a la línia {0}, columna {1})"
 msgid "Unknown mode {0}."
 msgstr "Node {0} desconegut."
 
-msgid "Image Files"
-msgstr "Fitxers d''imatge"
-
-msgid "folder"
-msgstr "carpeta"
-
-msgid "Looking for image files"
-msgstr "Cercant fitxers d''imatges"
-
-msgid "No image files found."
-msgstr "No s''han trobat fitxers d''imatge"
-
 msgid "get number of unread messages"
 msgstr "obté el nombre de missatges no llegits"
 
@@ -14365,36 +14624,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "El servidor ha retornat el codi d''error 404 per a l''ID {0}. Abandonat."
 
-msgid "NMEA-0183 Files"
-msgstr "Fitxers NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenades importades: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Sentències malformades: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Errors de suma de verificació: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Sentències desconegudes: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Sense coordenades: {0}"
-
-msgid "NMEA import success:"
-msgstr "Importació NMEA reeixida:"
-
-msgid "NMEA import failure!"
-msgstr "La importació NMEA ha fallat!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Excepció de tipus NullPointer. Probablement manca algun atribut."
 
-msgid "Note Files"
-msgstr "Arxius de notes"
-
 msgid "OSM API"
 msgstr "API OSM"
 
@@ -14491,9 +14723,6 @@ msgstr "(Codi={0})"
 msgid "The server replied an error with code {0}."
 msgstr "El servidor ha retornat un error amb el codi {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Servidor OSM fitxers comprimits bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "El pròleg del document OsmChange ja ha estat escrit. Només s''ha d''escriure "
@@ -14504,18 +14733,6 @@ msgstr ""
 "El pròleg del document OsmChange encara no ha estat escrit. Cal escriure''l "
 "primer."
 
-msgid "OsmChange File"
-msgstr "Fitxer OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "No existeix el fitxer ''{0}''."
-
-msgid "No data found in file {0}."
-msgstr "NO s''han trobat dades al fitxer {0}."
-
-msgid "Open OsmChange file"
-msgstr "Obre fitxer OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versió no suportada: {0}"
 
@@ -14571,37 +14788,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor inesperat per a la preferència ''{0}''. És ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Fitxers del servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ha hagut un error en desar.<br>L''error és:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Ha hagut un error en restaurar la còpia de seguretat.<br>L''error "
-"és:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Fitxers del servidor OSM comprimits amb gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Processant les dades d''historial..."
 
-msgid "Invalid dataset"
-msgstr "Conjunt de dades invàlid"
-
-msgid "No data found for layer ''{0}''."
-msgstr "No s''han trobat dades per a la capa ''{0}''"
-
-msgid "No data found in file ''{0}''."
-msgstr "No s''han trobat dades al fitxer ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Obre fitxer OSM"
-
 msgid "Reading was canceled"
 msgstr "La lectura ha estat cancel·lada"
 
@@ -14748,6 +14937,9 @@ msgstr "Contactant amb el servidor"
 msgid "Downloading OSM notes..."
 msgstr "S''estan baixant les notes de l''OSM ..."
 
+msgid "Downloading data..."
+msgstr "S''estan baixant les dades..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14808,14 +15000,10 @@ msgstr "Trobat un objecte OSM amb ID zero"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "S''estan baixant les dades..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Fitxers WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versió de fitxer WMS no suportada; trobada {0}, esperada {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Valor inesperat per a la clau ''{0}'' de les preferències, s''ha obtingut "
+"''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "han estat llegits {0} bytes"
@@ -15980,37 +16168,6 @@ msgstr "Obrint l''URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "l''URL no conté {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versió obsoleta de Java"
-
-msgid "Update Java"
-msgstr "Actualitzeu Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Utilitzeu la versió {0} de Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Aquesta versió no és suportada per {0} des de {1} i no es recomana la seva "
-"utilització."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM deixarà de funcionar aviat amb aquesta versió; recomanem actualitzar "
-"vers la versió de Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Voleu actualitzar-la ara?"
-
 msgid "reserved"
 msgstr "reservat"
 
@@ -16082,22 +16239,6 @@ msgstr "Hi ha caràcters sospitosos a la clau"
 msgid "Value is too long (max {0} characters):"
 msgstr "El valor és massa llarg (màx. {0} caràcters):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Voleu enganxar aquestes etiquetes?"
-
-msgid "Clear buffer"
-msgstr "Neteja la memòria intermèdia"
-
-msgid "Ignore warnings"
-msgstr "Ignora els avisos"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Ho sentim, No és possible d''enganxar etiquetes de la memòria "
-"intermèdia perquè no conté cap objecte JOSM ni cap text apropiat. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "No és possible la supressió del fitxer {0}"
 
@@ -16121,119 +16262,13 @@ msgid_plural "days"
 msgstr[0] "dia"
 msgstr[1] "dies"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no inclou ''{1}''. No és possible la "
-"restauració de la geometria de la finestra a partir de les preferències."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no proporciona un valor enter per "
-"''{1}''. El seu valor és {2}. No és possible la restauració de la geometria "
-"de la finestra a partir de les preferències."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Ha fallat l''anàlisi del camp ''{1}'' a la preferència amb la clau ''{0}''. "
-"L''excepció ha estat: {2}. No és possible la restauració de la geometria de "
-"la finestra a partir de les preferències."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no existeix.  No és possible la "
-"restauració de la geometria de la finestra a partir de les preferències."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorant la geometria malformada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Ha fallat la càrrega de l''esquema XML"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Heu trobat un error dins JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Informa d''un error"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "No tornar a mostrar la finestra d''error durant aquesta sessió."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Actualitza JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19995,9 +20030,6 @@ msgstr "Contingut del panell"
 msgid "notice"
 msgstr "avís"
 
-msgid "history"
-msgstr "historial"
-
 msgid "nature"
 msgstr "natura"
 
@@ -20579,6 +20611,9 @@ msgstr "Equipament social"
 msgid "Nursing Home"
 msgstr "Casal de Gent Gran"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -23021,6 +23056,9 @@ msgstr "Regals/Souvenirs"
 msgid "Variety Store"
 msgstr "Basar"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Corredor d’apostes"
 
@@ -23897,6 +23935,78 @@ msgstr "Comercial"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garatges"
 
@@ -24597,6 +24707,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25349,6 +25462,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25462,15 +25578,6 @@ msgstr "Mapa antic de Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atles: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metròpoli del Ruhr: imatgeria aèria (10 cm)"
 
@@ -33941,15 +34048,21 @@ msgstr "al valor previ (mtime no canviat)"
 msgid "Photo Geotagging Plugin"
 msgstr "Connector de geoetiquetatge de fotografies"
 
-msgid "Writing position information to image files..."
-msgstr "Escrivint informació de posició als fitxers d''imatge..."
-
 msgid "Could not read mtime."
 msgstr "No s''ha pogut llegir mtime."
 
 msgid "Could not write mtime."
 msgstr "No es pot escriure mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Escrivint informació de posició als fitxers d''imatge..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "El fitxer no pot ser esborrat!"
 
@@ -34458,6 +34571,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34466,6 +34582,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ca at valencia.po b/i18n/po/ca at valencia.po
index 7fe1fca..416cf54 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:09+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:09+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ca at valencia\n"
 
@@ -55,56 +55,9 @@ msgstr "Termes d''ús de la imatge de fons"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "L''enllaç no pot ser obert en esta plataforma (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Inicialitzacions específiques de la plataforma"
-
-msgid "Building main menu"
-msgstr "S''està construïnt el menú principal"
-
-msgid "Help"
-msgstr "Ajuda"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "S''està inicialitzant l''API de l''OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "S''està inicialitzant el validador"
-
-msgid "Initializing presets"
-msgstr "S''estan inicialitzant les predefinicions"
-
-msgid "Initializing map styles"
-msgstr "S''estan inicialitzant els estils de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "S''estan carregant les preferències de les imatges"
-
-msgid "Updating user interface"
-msgstr "S''està actualitzant la interfície d''usuari/a"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
-
-msgid "Warning"
-msgstr "Atenció"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
-"fitxers"
-
 msgid "About"
 msgstr "Quant a..."
 
@@ -182,6 +135,9 @@ msgstr "Cancel·la"
 msgid "Click to abort launching external browsers"
 msgstr "Feu clic per cancel·lar el llançament de navegadors externs"
 
+msgid "Warning"
+msgstr "Atenció"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Seleccioneu com a mínim un node, via o relació que ja estiga pujat."
 
@@ -468,14 +424,11 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Baixa des de l''OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Baixa les dades dels mapes des del servidor OSM"
+msgid "Download data"
+msgstr "Baixa dades"
 
-msgid "Please select a download area first."
-msgstr "Seleccioneu abans una zona a descarregar"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -484,9 +437,6 @@ msgstr ""
 "<html>Esta acció requerirà {0} peticions <br>de descàrrega. Voleu "
 "<br>continuar?</html>"
 
-msgid "Download data"
-msgstr "Baixa dades"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -554,6 +504,9 @@ msgstr "No hi ha res a exportar. Primer heu d''obtindre dades."
 msgid "Export GPX file"
 msgstr "Exporta el fitxer GPX"
 
+msgid "Help"
+msgstr "Ajuda"
+
 msgid "History"
 msgstr "Historial"
 
@@ -1118,23 +1071,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Seleccioneu vies que formin un angle de 90 o 180 graus, aproximadament."
 
-msgid "Download from Overpass API ..."
-msgstr "Descarrega de l''API d''Overpass..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Descarrega dades del servidor de l''API d''Overpass..."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Apega"
 
@@ -2498,36 +2434,6 @@ msgstr "Selecciona relació (afegir)"
 msgid "Select relation"
 msgstr "Selecciona relació"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<oex>"
-
-msgid "<left parent>"
-msgstr "<parent esquerre>"
-
-msgid "<right parent>"
-msgstr "<parent dret>"
-
-msgid "<colon>"
-msgstr "<punt>"
-
-msgid "<equals>"
-msgstr "<iguals>"
-
-msgid "<key>"
-msgstr "<clau>"
-
-msgid "<question mark>"
-msgstr "<signe d''interrogació>"
-
-msgid "<end-of-file>"
-msgstr "<fi-del-fitxer>"
-
 msgid "Search..."
 msgstr "Cerca..."
 
@@ -2822,96 +2728,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"L''expressió regular \"{0}\" té un error de sintaxi a l''òfset {1}. Detall "
-"de l''error:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"L''expressió regular \"{0}\" té un error de parseig. Detall de l''error:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "Interval d''identificadors de primietives esperat"
-
-msgid "Range of changeset ids expected"
-msgstr "Interval d''identificadors de conjunts de canvis esperat"
-
-msgid "Range of versions expected"
-msgstr "Interval de versions esperades"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La clau no pot ser buida quan s''utilitza l''etiqueta de ll''operador. "
-"Exemple d''utilització: clau=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipus d''objecte desconegut: {0}. Els valors admesos són node, via o relació."
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Sèrie de nombres esperats"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Testimoni inesperat. Esperat {0}, trobat {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "S''ha trobat un testimoni inesperat: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Manquen paràmetres per OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Manca un paràmetre per l''XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Manca l''operador per al NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Truncament automàtic del valor de l''etiqueta \"{0}\" de l''objecte suprimit "
@@ -2933,9 +2749,6 @@ msgstr "{0} nodes a la via {1} superen el nombre màxim de {2} nodes permés"
 msgid "API Capabilities Violation"
 msgstr "Violació de les capacitats de l''API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependència cíclica entre les relacions:"
-
 msgid "Removed obsolete tags"
 msgstr "Etiquetes obsoletes suprimides"
 
@@ -3315,64 +3128,12 @@ msgstr "Els rols referits a les relacions"
 msgid "Automatic tag correction"
 msgstr "Correcció automàtica d''atribut"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Impossible crear la carpeta {0}, la còpia de seguretat automàtica serà "
-"desactivada."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "El fitxer {0} no pot ser creat, heu d''utilitzar un altre nom"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Error d''entrada/eixida durant la creació del fitxer, la còpia de seguretat "
-"automàtica serà omesa: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "No és possible de suprimir l''antiga còpia de seguretat {0}"
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "S''estan restaurant els fitxers"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "El valor de latitud ''{0}'' és erroni"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "El valor de longitud ''{0}'' és erroni"
 
-msgid "Question"
-msgstr "Pregunta"
-
-msgid "Message"
-msgstr "Missatge"
-
-msgid "Enter text"
-msgstr "Introduïu el text"
-
-msgid "Installing plugins"
-msgstr "Instal·lant connectors"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>El fitxer de paràmetres vol afegir preferències a <b>{0}</b>,<br/> "
-"però en este moment no es coneix el seu valor predefinit<br/> Per favor, "
-"activeu manualment la funció corresponent i torneu a importar una altre cop."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Ha fallat la creació del directori mancant per la memòria cau: {0}"
 
@@ -3481,6 +3242,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "La preferència {0} ha estat suprimida perquè ja no s''utilitza."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>El fitxer de paràmetres vol afegir preferències a <b>{0}</b>,<br/> "
+"però en este moment no es coneix el seu valor predefinit<br/> Per favor, "
+"activeu manualment la funció corresponent i torneu a importar una altre cop."
+
 msgid "Metric"
 msgstr "Mètric"
 
@@ -3613,6 +3383,18 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Ha fallat l''obtenció del testimoni d''accés OAuth del gestor de credencials"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "El gestor de credencials actual és de tipus ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Ha fallat l''emmagatzemament del testimoni d''accés OAuth al gestor de "
+"credencials"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "S''espera un ID > 0. Actualment és {0}."
 
@@ -3629,6 +3411,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Una primitiva amb ID = 0 nno pot ser invisible"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependència cíclica entre les relacions:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3669,6 +3454,59 @@ msgstr "Combinant dades..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
+msgid "incomplete"
+msgstr "incomplet"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Número de casa del {0} al {1}"
+
+msgid "House number {0}"
+msgstr "Número de casa {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "node"
+msgstr[1] "nodes"
+
+msgid "highway"
+msgstr "carretera"
+
+msgid "railway"
+msgstr "ferrocarril"
+
+msgid "waterway"
+msgstr "Curs d''aigua"
+
+msgid "landuse"
+msgstr "Ús del sòl"
+
+msgid "building"
+msgstr "edifici"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+msgstr[1] "{0} nodes"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membre"
+msgstr[1] "{0} membres"
+
+msgid "public transport"
+msgstr "transport públic"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relació"
+msgstr[1] "relacions"
+
+msgid "Changeset {0}"
+msgstr "Conjunt de modificacions {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3707,21 +3545,11 @@ msgstr ""
 "No es poden fusionar objectes amb diferents ID. Un id és {0} i l''altre és "
 "{1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "node"
-msgstr[1] "nodes"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "via"
 msgstr[1] "vies"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relació"
-msgstr[1] "relacions"
-
 msgid "closedway"
 msgstr "via tancada"
 
@@ -3760,6 +3588,126 @@ msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 "El paràmetre {0} no te un valor entre 0 i {1}. El seu valor és ''{2}''."
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<oex>"
+
+msgid "<left parent>"
+msgstr "<parent esquerre>"
+
+msgid "<right parent>"
+msgstr "<parent dret>"
+
+msgid "<colon>"
+msgstr "<punt>"
+
+msgid "<equals>"
+msgstr "<iguals>"
+
+msgid "<key>"
+msgstr "<clau>"
+
+msgid "<question mark>"
+msgstr "<signe d''interrogació>"
+
+msgid "<end-of-file>"
+msgstr "<fi-del-fitxer>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"L''expressió regular \"{0}\" té un error de sintaxi a l''òfset {1}. Detall "
+"de l''error:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"L''expressió regular \"{0}\" té un error de parseig. Detall de l''error:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "Interval d''identificadors de primietives esperat"
+
+msgid "Range of changeset ids expected"
+msgstr "Interval d''identificadors de conjunts de canvis esperat"
+
+msgid "Range of versions expected"
+msgstr "Interval de versions esperades"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La clau no pot ser buida quan s''utilitza l''etiqueta de ll''operador. "
+"Exemple d''utilització: clau=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipus d''objecte desconegut: {0}. Els valors admesos són node, via o relació."
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Sèrie de nombres esperats"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "S''ha trobat un testimoni inesperat: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Manquen paràmetres per OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Manca un paràmetre per l''XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Manca l''operador per al NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Testimoni inesperat. Esperat {0}, trobat {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Ha fallat la càrrega de la classe de renderització de mapes ''{0}''. La "
@@ -3846,6 +3794,123 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Descripció curta:"
+
+msgid "URL:"
+msgstr "Adreça URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Pàgina web:"
+
+msgid "Description:"
+msgstr "Descripció:"
+
+msgid "Version:"
+msgstr "Versió:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versió mínima de JOSM:"
+
+msgid "by {0}"
+msgstr "per {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estil intern utilitzable com a base pels estils superposables "
+"durant''execució"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "l''estil principal de Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Predefincions internes"
+
+msgid "The default preset for JOSM"
+msgstr "Les predefinicions per defecte de JOSM"
+
+msgid "Addresses"
+msgstr "Adreces"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Vies"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Religió"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relacions"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -4041,9 +4106,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Adreces"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Verifica si hi ha errors a les adreces i les relacions de carrer associat "
@@ -4238,9 +4300,6 @@ msgstr "Nodes de via duplicats"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Cerca si hi ha vies amb nodes consecutius idèntics"
 
-msgid "Highways"
-msgstr "Vies"
-
 msgid "Performs semantic checks on highways."
 msgstr "Fa una comprovació semàntica de les vies."
 
@@ -4798,9 +4857,6 @@ msgstr "tipus de curs d''aigua {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "edifici"
-
 msgid "area"
 msgstr "àrea"
 
@@ -4918,45 +4974,16 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "No tornar a mostrar (recordar selecció)"
 
-msgid "incomplete"
-msgstr "incomplet"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Número de casa del {0} al {1}"
-
-msgid "House number {0}"
-msgstr "Número de casa {0}"
-
-msgid "highway"
-msgstr "carretera"
-
-msgid "railway"
-msgstr "ferrocarril"
-
-msgid "waterway"
-msgstr "Curs d''aigua"
-
-msgid "landuse"
-msgstr "Ús del sòl"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-msgstr[1] "{0} nodes"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membre"
-msgstr[1] "{0} membres"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
 
-msgid "public transport"
-msgstr "transport públic"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "S''està ignorant l''adreça URL malformada: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conjunt de modificacions {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
+"fitxers"
 
 msgid "Precondition violation"
 msgstr "Precondició no omplerta"
@@ -5046,6 +5073,66 @@ msgstr "Desplaçament"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "S''esperava un valor per al paràmetre ''{0}'', ara és ''{1}''"
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Inicialitzacions específiques de la plataforma"
+
+msgid "Building main menu"
+msgstr "S''està construïnt el menú principal"
+
+msgid "Updating user interface"
+msgstr "S''està actualitzant la interfície d''usuari/a"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "S''està inicialitzant l''API de l''OSM"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "S''està inicialitzant el validador"
+
+msgid "Initializing presets"
+msgstr "S''estan inicialitzant les predefinicions"
+
+msgid "Initializing map styles"
+msgstr "S''estan inicialitzant els estils de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "S''estan carregant les preferències de les imatges"
+
 msgid "usage"
 msgstr "ús"
 
@@ -5523,6 +5610,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "El valor no és un índex de tessel·les vàlid per al nivell d''ampliació donat."
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Heu trobat un error dins JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Informa d''un error"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "No tornar a mostrar la finestra d''error durant esta sessió."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr "Conflicte al fons: sense conflicte"
 
@@ -6263,6 +6423,22 @@ msgstr ""
 "seran ignorats en fer l''operació d''apegar. Voleu apegar les dades copiades "
 "sense els objectes incomplets?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Voleu apegar estes etiquetes?"
+
+msgid "Clear buffer"
+msgstr "Neteja la memòria intermèdia"
+
+msgid "Ignore warnings"
+msgstr "Ignora els avisos"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Ho sentim, No és possible d''apegar etiquetes de la memòria "
+"intermèdia perquè no conté cap objecte JOSM ni cap text apropiat. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Només pels objectes seleccionats"
 
@@ -6854,9 +7030,6 @@ msgstr "Origen"
 msgid "Title:"
 msgstr "Títol:"
 
-msgid "URL:"
-msgstr "Adreça URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Estil integrat, ruta interna:"
 
@@ -6967,9 +7140,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relacions"
-
 msgid "Open a list of all relations."
 msgstr "Obri una llista amb totes les relacions."
 
@@ -8486,24 +8656,6 @@ msgstr "La latitud ha d''estar compresa entre -90 i 90 graus."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "La laongitud ha d''estar compresa entre -180 i 180 graus."
 
-msgid "Data Sources and Types:"
-msgstr "Tipus i fonts de dades:"
-
-msgid "OpenStreetMap data"
-msgstr "Dades OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Descarregar les dades OSM de la zona seleccionada"
-
-msgid "Raw GPS data"
-msgstr "Dades GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Descarregar les traces GPS de la zona seleccionada"
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Descarregar com una capa nova"
 
@@ -8539,30 +8691,12 @@ msgstr ""
 "zona, les tecles de fletxa o el botó dret del ratolí per desplaçar el mapa i "
 "la rodeta del ratolí o les tecles + i - pel nivell d''ampliació."
 
-msgid "No area selected yet"
-msgstr "Encara no hi ha cap zona seleccionada"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"La zona a descarregar és massa gran; probablement serà refusada pel servidor"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"L''àrea de descàrrega és correcta, la seua mida pareix aceptable per al "
-"servidor"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Feu clic per a anul·lar la descàrrega i tancar la finestra"
 
 msgid "Click to download the currently selected area"
 msgstr "Feu clic per descarregar la zona seleccionada"
 
-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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "Baixa les referències (relacions de parentiu)"
 
@@ -8586,6 +8720,91 @@ msgstr "Indiqueu si els membres de la relació també han de ser descarregats"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Baixa lesrelacions (relacions de parentiu i vies)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Tipus i fonts de dades:"
+
+msgid "OpenStreetMap data"
+msgstr "Dades OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Descarregar les dades OSM de la zona seleccionada"
+
+msgid "Raw GPS data"
+msgstr "Dades GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Descarregar les traces GPS de la zona seleccionada"
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+msgstr "Seleccioneu abans una zona a descarregar"
+
+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 ""
+
+msgid "No area selected yet"
+msgstr "Encara no hi ha cap zona seleccionada"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"La zona a descarregar és massa gran; probablement serà refusada pel servidor"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"L''àrea de descàrrega és correcta, la seua mida pareix aceptable per al "
+"servidor"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "historial"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8628,9 +8847,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9236,6 +9452,18 @@ msgstr "Autenticar amb el nom d''usuari i la contrasenya indicats"
 msgid "Cancel authentication"
 msgstr "Anul·la l''autenticació"
 
+msgid "Question"
+msgstr "Pregunta"
+
+msgid "Message"
+msgstr "Missatge"
+
+msgid "Enter text"
+msgstr "Introduïu el text"
+
+msgid "Installing plugins"
+msgstr "Instal·lant connectors"
+
 msgid "Downloading file"
 msgstr "Descarregant fitxer"
 
@@ -9808,11 +10036,6 @@ msgstr "Seleccionar objectes a pujar"
 msgid "Cancel uploading"
 msgstr "Cancel·lar la pujada"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valor inesperat per a la clau ''{0}'' de les preferències, s''ha obtingut "
-"''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Omplir un conjunt de canvis i tronar a la finestra de pujades"
 
@@ -9900,6 +10123,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objecte a suprimir:"
 msgstr[1] "{0} objectes a suprimir:"
 
+msgid "All Formats"
+msgstr "Tots els formats"
+
+msgid "Could not export ''{0}''."
+msgstr "No es pot exportar ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "No s''ha pogut importar ''{0}''."
+
+msgid "Could not import files."
+msgstr "No es poden importar els fitxers"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>No es pot llegir el fitxer ''{0}''.<br>L''error és:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>No es poden llegir els arxius.<br>L''error és:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Fitxers GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Capa ''{0}'' no suportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: La llicència GPL no és compatible amb la llicència OSM. No pugeu dades "
+"amb llicència GPL."
+
+msgid "GPS track description"
+msgstr "Descripció del track GPS"
+
+msgid "Add author information"
+msgstr "Afig informació d''autor"
+
+msgid "Real name"
+msgstr "Nom real"
+
+msgid "E-Mail"
+msgstr "Correu electrònic"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefinit"
+
+msgid "Copyright year"
+msgstr "Copyright any"
+
+msgid "Keywords"
+msgstr "Paraules clau"
+
+msgid "Export options"
+msgstr "Opcions d''exportació"
+
+msgid "Export and Save"
+msgstr "Exporta i guarda"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Error mentre s''exportava {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escollir un llicència predefinida"
+
+msgid "GPX Files"
+msgstr "Fitxers GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Ha fallat el processament de les dades de la capa ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Ha hagut un error en processar les dades GPX de la capa ''{0}''. Només una "
+"part del fitxer estarà disponible."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Ha hagut un error mentre es processava el fitxer gpx ''{0}''. Només una part "
+"del fitxer estarà disponible."
+
+msgid "Image Files"
+msgstr "Fitxers d''imatge"
+
+msgid "folder"
+msgstr "carpeta"
+
+msgid "Looking for image files"
+msgstr "Cercant fitxers d''imatges"
+
+msgid "No image files found."
+msgstr "No s''han trobat fitxers d''imatge"
+
+msgid "NMEA-0183 Files"
+msgstr "Fitxers NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenades importades: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Sentències malformades: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Errors de suma de verificació: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Sentències desconegudes: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Sense coordenades: {0}"
+
+msgid "NMEA import success:"
+msgstr "Importació NMEA reeixida:"
+
+msgid "NMEA import failure!"
+msgstr "La importació NMEA ha fallat!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Servidor OSM fitxers comprimits bzip2"
+
+msgid "OsmChange File"
+msgstr "Fitxer OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "No existeix el fitxer ''{0}''."
+
+msgid "No data found in file {0}."
+msgstr "NO s''han trobat dades al fitxer {0}."
+
+msgid "Open OsmChange file"
+msgstr "Obri fitxer OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Fitxers del servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ha hagut un error en guardar.<br>L''error és:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Ha hagut un error en restaurar la còpia de seguretat.<br>L''error "
+"és:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Fitxers del servidor OSM comprimits amb gzip"
+
+msgid "Invalid dataset"
+msgstr "Conjunt de dades invàlid"
+
+msgid "No data found for layer ''{0}''."
+msgstr "No s''han trobat dades per a la capa ''{0}''"
+
+msgid "No data found in file ''{0}''."
+msgstr "No s''han trobat dades al fitxer ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Obri fitxer OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Fitxers WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versió de fitxer WMS no suportada; trobada {0}, esperada {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10007,6 +10413,37 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Amagar este missatge i no tornar-ho a mostrar"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Impossible crear la carpeta {0}, la còpia de seguretat automàtica serà "
+"desactivada."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "El fitxer {0} no pot ser creat, heu d''utilitzar un altre nom"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Error d''entrada/eixida durant la creació del fitxer, la còpia de seguretat "
+"automàtica serà omesa: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "No és possible de suprimir l''antiga còpia de seguretat {0}"
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "S''estan restaurant els fitxers"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Personalitzar el color"
 
@@ -10110,6 +10547,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fore de l''àrea descarregada"
 
@@ -10185,6 +10625,9 @@ msgstr "Errors de validació"
 msgid "No validation errors"
 msgstr "Cap error de validació"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Establir un favorit WMS"
 
@@ -10807,9 +11250,6 @@ msgstr "(La URL era: "
 msgid "Select the map painting styles"
 msgstr "Seleccionar els estils per dibuixar el mapa"
 
-msgid "loading style ''{0}''..."
-msgstr "carregant l''estil ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10823,6 +11263,9 @@ msgstr[1] ""
 "Ha hagut {0} errors en carregar este estil. Seleccioneu ''Informació'' al "
 "menú que obtindreu amb el botó dret del ratolí per a més detalls."
 
+msgid "loading style ''{0}''..."
+msgstr "carregant l''estil ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Ha fallat la càrrega dels estils de Mappaint de ''{0}''. L''excepció ha "
@@ -11378,27 +11821,6 @@ msgstr "Descarregar connector"
 msgid "Icon paths:"
 msgstr "Ruta de les icones:"
 
-msgid "Short Description:"
-msgstr "Descripció curta:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Pàgina web:"
-
-msgid "Description:"
-msgstr "Descripció:"
-
-msgid "Version:"
-msgstr "Versió:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versió mínima de JOSM:"
-
-msgid "by {0}"
-msgstr "per {0}"
-
 msgid "Name (optional):"
 msgstr "Nom (opcional):"
 
@@ -12576,21 +12998,6 @@ msgstr ""
 "Avís: format incorrecte d''una entrada a la llista d''estils ''{0}''. Hi ha "
 "''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estil intern utilitzable com a base pels estils superposables "
-"durant''execució"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "l''estil principal de Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Paràmetres dels mapes"
 
@@ -12690,12 +13097,6 @@ msgstr ""
 "Avís: format incorrecte d''una entrada de la llista de predefinicions "
 "''{0}''. Hi ha ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Predefincions internes"
-
-msgid "The default preset for JOSM"
-msgstr "Les predefinicions per defecte de JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "El connector {0} és encara utilitzat per este altre"
@@ -13197,9 +13598,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "La fallat l''obtenció de les credencials OSM del gestor de credencials."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "El gestor de credencials actual és de tipus ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Les credencials OSM no han pogut ser guardades al gestor de credencials."
@@ -13218,15 +13616,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Ha fallat l''obtenció del testimoni d''accés OAuth del gestor de credencials"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Ha fallat l''emmagatzemament del testimoni d''accés OAuth al gestor de "
-"credencials"
-
 msgid "Save to preferences"
 msgstr "Guardar a les preferències"
 
@@ -13429,69 +13818,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Religió"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13747,6 +14073,39 @@ msgstr "Tots els fitxers (*.*)"
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no inclou ''{1}''. No és possible la "
+"restauració de la geometria de la finestra a partir de les preferències."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no proporciona un valor enter per "
+"''{1}''. El seu valor és {2}. No és possible la restauració de la geometria "
+"de la finestra a partir de les preferències."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Ha fallat l''anàlisi del camp ''{1}'' a la preferència amb la clau ''{0}''. "
+"L''excepció ha estat: {2}. No és possible la restauració de la geometria de "
+"la finestra a partir de les preferències."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La preferència amb la clau ''{0}'' no existeix.  No és possible la "
+"restauració de la geometria de la finestra a partir de les preferències."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorant la geometria malformada: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitud mínima"
 
@@ -13883,9 +14242,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "El membre esborrat {0} és utilitzat per la relació {1}"
 
-msgid "All Formats"
-msgstr "Tots els formats"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Descarregant punts del {0} al {1}..."
 
@@ -14016,95 +14372,6 @@ msgstr "Analitzant la resposta del servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Element XML inesperat amb nom ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "No es pot exportar ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "No s''ha pogut importar ''{0}''."
-
-msgid "Could not import files."
-msgstr "No es poden importar els fitxers"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>No es pot llegir el fitxer ''{0}''.<br>L''error és:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>No es poden llegir els arxius.<br>L''error és:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Fitxers GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Capa ''{0}'' no suportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: La llicència GPL no és compatible amb la llicència OSM. No pugeu dades "
-"amb llicència GPL."
-
-msgid "GPS track description"
-msgstr "Descripció del track GPS"
-
-msgid "Add author information"
-msgstr "Afig informació d''autor"
-
-msgid "Real name"
-msgstr "Nom real"
-
-msgid "E-Mail"
-msgstr "Correu electrònic"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefinit"
-
-msgid "Copyright year"
-msgstr "Copyright any"
-
-msgid "Keywords"
-msgstr "Paraules clau"
-
-msgid "Export options"
-msgstr "Opcions d''exportació"
-
-msgid "Export and Save"
-msgstr "Exporta i guarda"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Error mentre s''exportava {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escollir un llicència predefinida"
-
-msgid "GPX Files"
-msgstr "Fitxers GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Ha fallat el processament de les dades de la capa ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Ha hagut un error en processar les dades GPX de la capa ''{0}''. Només una "
-"part del fitxer estarà disponible."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Ha hagut un error mentre es processava el fitxer gpx ''{0}''. Només una part "
-"del fitxer estarà disponible."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Error de sintaxi: l''estructura del document GPX no és correcta"
 
@@ -14114,18 +14381,6 @@ msgstr "(a la línia {0}, columna {1})"
 msgid "Unknown mode {0}."
 msgstr "Node {0} desconegut."
 
-msgid "Image Files"
-msgstr "Fitxers d''imatge"
-
-msgid "folder"
-msgstr "carpeta"
-
-msgid "Looking for image files"
-msgstr "Cercant fitxers d''imatges"
-
-msgid "No image files found."
-msgstr "No s''han trobat fitxers d''imatge"
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -14180,36 +14435,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "El servidor ha retornat el codi d''error 404 per a l''ID {0}. Abandonat."
 
-msgid "NMEA-0183 Files"
-msgstr "Fitxers NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenades importades: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Sentències malformades: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Errors de suma de verificació: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Sentències desconegudes: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Sense coordenades: {0}"
-
-msgid "NMEA import success:"
-msgstr "Importació NMEA reeixida:"
-
-msgid "NMEA import failure!"
-msgstr "La importació NMEA ha fallat!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Excepció de tipus NullPointer. Probablement manca algun atribut."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -14304,9 +14532,6 @@ msgstr "(Codi={0})"
 msgid "The server replied an error with code {0}."
 msgstr "El servidor ha retornat un error amb el codi {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Servidor OSM fitxers comprimits bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "El pròleg del document OsmChange ja ha estat escrit. Per favor, només s''ha "
@@ -14317,18 +14542,6 @@ msgstr ""
 "El pròleg del document OsmChange encara no ha estat escrit. Per favor, cal "
 "escriure''l primer."
 
-msgid "OsmChange File"
-msgstr "Fitxer OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "No existeix el fitxer ''{0}''."
-
-msgid "No data found in file {0}."
-msgstr "NO s''han trobat dades al fitxer {0}."
-
-msgid "Open OsmChange file"
-msgstr "Obri fitxer OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versió no suportada: {0}"
 
@@ -14384,37 +14597,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor inesperat per a la preferència ''{0}''. És ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Fitxers del servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ha hagut un error en guardar.<br>L''error és:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Ha hagut un error en restaurar la còpia de seguretat.<br>L''error "
-"és:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Fitxers del servidor OSM comprimits amb gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Processant les dades d''historial..."
 
-msgid "Invalid dataset"
-msgstr "Conjunt de dades invàlid"
-
-msgid "No data found for layer ''{0}''."
-msgstr "No s''han trobat dades per a la capa ''{0}''"
-
-msgid "No data found in file ''{0}''."
-msgstr "No s''han trobat dades al fitxer ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Obri fitxer OSM"
-
 msgid "Reading was canceled"
 msgstr "La lectura ha estat cancel·lada"
 
@@ -14561,6 +14746,9 @@ msgstr "Contactant amb el servidor"
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr "S''estan descarregant les dades..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14621,14 +14809,10 @@ msgstr "Trobat un objecte OSM amb ID zero"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "S''estan descarregant les dades..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Fitxers WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versió de fitxer WMS no suportada; trobada {0}, esperada {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Valor inesperat per a la clau ''{0}'' de les preferències, s''ha obtingut "
+"''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -15788,33 +15972,6 @@ msgstr "Obrint la URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr "reservat"
 
@@ -15875,22 +16032,6 @@ msgstr "Hi ha caràcters sospitosos a la clau"
 msgid "Value is too long (max {0} characters):"
 msgstr "El valor és massa llarg (màx. {0} caràcters):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Voleu apegar estes etiquetes?"
-
-msgid "Clear buffer"
-msgstr "Neteja la memòria intermèdia"
-
-msgid "Ignore warnings"
-msgstr "Ignora els avisos"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Ho sentim, No és possible d''apegar etiquetes de la memòria "
-"intermèdia perquè no conté cap objecte JOSM ni cap text apropiat. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15914,119 +16055,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no inclou ''{1}''. No és possible la "
-"restauració de la geometria de la finestra a partir de les preferències."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no proporciona un valor enter per "
-"''{1}''. El seu valor és {2}. No és possible la restauració de la geometria "
-"de la finestra a partir de les preferències."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Ha fallat l''anàlisi del camp ''{1}'' a la preferència amb la clau ''{0}''. "
-"L''excepció ha estat: {2}. No és possible la restauració de la geometria de "
-"la finestra a partir de les preferències."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La preferència amb la clau ''{0}'' no existeix.  No és possible la "
-"restauració de la geometria de la finestra a partir de les preferències."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorant la geometria malformada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Ha fallat la càrrega de l''esquema XML"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Heu trobat un error dins JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Informa d''un error"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "No tornar a mostrar la finestra d''error durant esta sessió."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19771,9 +19806,6 @@ msgstr "Contingut del panell"
 msgid "notice"
 msgstr "avís"
 
-msgid "history"
-msgstr "historial"
-
 msgid "nature"
 msgstr "natura"
 
@@ -20353,6 +20385,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Casal de Gent Gran"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22793,6 +22828,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr "Basar"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -23653,6 +23691,78 @@ msgstr "Comercial"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garatges"
 
@@ -24348,6 +24458,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -25100,6 +25213,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -25210,15 +25326,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -33583,15 +33690,21 @@ msgstr "al valor previ (mtime no canviat)"
 msgid "Photo Geotagging Plugin"
 msgstr "Connector de geoetiquetatge de fotografies"
 
-msgid "Writing position information to image files..."
-msgstr "Escrivint informació de posició als fitxers d''imatge..."
-
 msgid "Could not read mtime."
 msgstr "No s''ha pogut llegir mtime."
 
 msgid "Could not write mtime."
 msgstr "No es pot escriure mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Escrivint informació de posició als fitxers d''imatge..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "El fitxer no pot ser esborrat!"
 
@@ -34095,6 +34208,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34103,6 +34219,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/cs.po b/i18n/po/cs.po
index ee35cdd..082999e 100644
--- a/i18n/po/cs.po
+++ b/i18n/po/cs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-08-07 06:48+0000\n"
 "Last-Translator: Dalibor Jelínek <launchpad.net at dalibor.cz>\n"
 "Language-Team: Czech <kde-i18n-doc at kde.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
 "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-08-13 04:39+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:39+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: cs\n"
 
@@ -56,54 +56,9 @@ msgstr "Podmínky použití podkladové mapy"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Otevírání odkazů není podporováno ve vašem prostředí (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Startovací činnosti specifické pro platformu"
-
-msgid "Building main menu"
-msgstr "Sestavování hlavního menu"
-
-msgid "Help"
-msgstr "Nápověda"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicializuji interní data hranic"
-
-msgid "Initializing OSM API"
-msgstr "Inicializace API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicializuji interní data o dopravě"
-
-msgid "Initializing validator"
-msgstr "Inicializace validátoru"
-
-msgid "Initializing presets"
-msgstr "Inicializace předvoleb"
-
-msgid "Initializing map styles"
-msgstr "Inicializace mapových stylů"
-
-msgid "Loading imagery preferences"
-msgstr "Načítání nastavení mapových podkladů"
-
-msgid "Updating user interface"
-msgstr "Aktualizace uživatelského rozhraní"
-
 msgid "Failed to save default preferences."
 msgstr "Selhalo ukládání výchozích předvoleb."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoruji vadné URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Varování"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoruji poškozené URL souboru: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametr ''downloadgps'' neakceptuje jména souborů, ani URL souborů"
-
 msgid "About"
 msgstr "O aplikaci"
 
@@ -189,6 +144,9 @@ msgstr "Zrušit"
 msgid "Click to abort launching external browsers"
 msgstr "Klikněte pro přerušení startu externích prohlížečů"
 
+msgid "Warning"
+msgstr "Varování"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Vyberte prosím alespoň jeden již nahraný uzel, cestu nebo relaci."
 
@@ -477,14 +435,11 @@ msgstr ""
 "* Jedna sebe nekřížící cesta s maximálně dvěma svými uzly;\n"
 "* Tři uzly."
 
-msgid "Download from OSM..."
-msgstr "Stáhnout z OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Stáhnout data z OSM serveru"
+msgid "Download data"
+msgstr "Stahování dat"
 
-msgid "Please select a download area first."
-msgstr "Prosím, vyberte nejprve oblast stahování."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -493,9 +448,6 @@ msgstr ""
 "<html>Tato akce bude potřebovat<br>{0} samostatných stažení dat.<br>Chcete "
 "pokračovat?</html>"
 
-msgid "Download data"
-msgstr "Stahování dat"
-
 msgid "Download notes in current view"
 msgstr "Stáhnout poznámky v aktuálním zorném poli"
 
@@ -562,6 +514,9 @@ msgstr "Nic nevyexportováno. Nejdříve stáhněte data."
 msgid "Export GPX file"
 msgstr "Export GPX souboru"
 
+msgid "Help"
+msgstr "Nápověda"
+
 msgid "History"
 msgstr "Historie"
 
@@ -1126,25 +1081,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Prosím zvolte cesty s úhlem přibližně 90 nebo 180 stupňů"
 
-msgid "Download from Overpass API ..."
-msgstr "Stáhnout z Overpass API..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Stáhnout data mapy ze serveru Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr "Vytvořit dotaz Overpass pomocníkem s dotazy Overpass Turbo"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-"Napište svůj dotaz Overpass níže, nebo ho vytvořte pomocí pomocníka s dotazy "
-"Overpass Turbo"
-
-msgid "Show/hide Overpass snippet list"
-msgstr "Zobrazit/skrýt seznam kousků dotazů Overpass"
-
 msgid "Paste"
 msgstr "Vložit"
 
@@ -2524,36 +2460,6 @@ msgstr "Vybrat relaci (přidat)"
 msgid "Select relation"
 msgstr "Vybrat relaci"
 
-msgid "<not>"
-msgstr "<nikoliv>"
-
-msgid "<or>"
-msgstr "<nebo>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<levý rodič>"
-
-msgid "<right parent>"
-msgstr "<pravý rodič>"
-
-msgid "<colon>"
-msgstr "<dvojtečka>"
-
-msgid "<equals>"
-msgstr "<rovná se>"
-
-msgid "<key>"
-msgstr "<klíč>"
-
-msgid "<question mark>"
-msgstr "<otazník>"
-
-msgid "<end-of-file>"
-msgstr "<konec-souboru>"
-
 msgid "Search..."
 msgstr "Hledat..."
 
@@ -2855,94 +2761,6 @@ msgstr[0] "Prohledávám {0} objekt"
 msgstr[1] "Prohledávám {0} objekty"
 msgstr[2] "Prohledávám {0} objektů"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Regulární výraz \"{0}\" má chybu na pozici {1}, celá chyba:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Regulární výraz \"{0}\" má chybu, celá chyba:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Nelze zpracovat časové razítko ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Očekávám {0} po {1}"
-
-msgid "Range of primitive ids expected"
-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."
-
-msgid "Range of versions expected"
-msgstr "Očekává se sada verzí"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Klíč nemůže být prázdný, když je použit operátor značky. Příklad použití: "
-"klíč=hodnota"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "Neznámý prvek: {0}. Povolené hodnoty jsou uzel, cesta nebo relace"
-
-msgid "Positive integer expected"
-msgstr "Očekáváno celé kladné číslo"
-
-msgid "Range of numbers expected"
-msgstr "Očekáván číselný rozsah"
-
-msgid "Unknown preset name: "
-msgstr "Neznámý název předvolby: "
-
-msgid "Unexpected token. Expected {0}, found {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"
-
-msgid "Unexpected token: {0}"
-msgstr "Neočekávaný token: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Chybí parametr pro NEBO"
-
-msgid "Missing parameter for XOR"
-msgstr "Chybějící parametr pro XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Chybějící operátor pro NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Automaticky zkracuji hodnotu značky ''{0}'' u smazaného objektu {1}"
 
@@ -2962,9 +2780,6 @@ msgstr "{0} uzlů v cestě {1} překračuje nejvyšší povolený počet uzlů {
 msgid "API Capabilities Violation"
 msgstr "Nedodržení schopností API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Kruhová závislost mezi relacemi:"
-
 msgid "Removed obsolete tags"
 msgstr "Odebrané zastaralé značky"
 
@@ -3367,62 +3182,12 @@ msgstr "Role v relaci odkazující na"
 msgid "Automatic tag correction"
 msgstr "Automatická oprava značek"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Nelze vytvořit adresář {0}, automatické ukládání bude vypnuté"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Nelze vytvořit soubor {0}, bude použito jiné jméno souboru"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"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}"
-
-msgid "Your work has been saved automatically."
-msgstr "Vaše práce byla automaticky uložena."
-
-msgid "Restoring files"
-msgstr "Obnovování souborů"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Nemohu smazat záložní soubor {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Nemohu smazat soubor PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Nemohu smazat archivovaný záložní soubor {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Neplatná zeměpisná šířka ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Neplatná zeměpisná délka ''{0}''"
 
-msgid "Question"
-msgstr "Otázka"
-
-msgid "Message"
-msgstr "Zpráva"
-
-msgid "Enter text"
-msgstr "Vložte text"
-
-msgid "Installing plugins"
-msgstr "Instalace doplňků"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Soubor s nastavením žádá o připojení nastavení k <b>{0}</b>,<br/>, ale "
-"jeho výchozí nastavení je v tomto okamžiku neznámé.<br/> Prosím aktivujte "
-"odpovídající funkci ručně a zkuste import znovu."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Chybějící adresář keše se nepodařilo vytvořit: {0}"
 
@@ -3532,6 +3297,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Nastavení {0} bylo odstraněno, protože se již nepoužívá."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Soubor s nastavením žádá o připojení nastavení k <b>{0}</b>,<br/>, ale "
+"jeho výchozí nastavení je v tomto okamžiku neznámé.<br/> Prosím aktivujte "
+"odpovídající funkci ručně a zkuste import znovu."
+
 msgid "Metric"
 msgstr "Metrický"
 
@@ -3670,6 +3444,17 @@ msgstr ""
 msgid "Note"
 msgstr "Poznámka"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Nepodařilo se získat přístupový token OAuth od správce přihlašovacích údajů."
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Současný správce přihlašovacích údajů je typu ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Nepodařilo se uložit přístupový token OAuth do správce přihlašovacích údajů."
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "očekáváno id > 0. Nalezeno {0}"
 
@@ -3686,6 +3471,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Prvek s id=0 nemůže být neviditelný."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Kruhová závislost mezi relacemi:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "Prvek {0} nelze přidat do datové sady, jelikož v ní již je"
@@ -3727,6 +3515,63 @@ msgstr "Slučování dat..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' dokončen za {1}"
 
+msgid "incomplete"
+msgstr "nekompletní"
+
+msgid "House {0}"
+msgstr "Dům {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Číslo domu {0} v {1}"
+
+msgid "House number {0}"
+msgstr "Číslo domu {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "uzel"
+msgstr[1] "uzly"
+msgstr[2] "uzly"
+
+msgid "highway"
+msgstr "silnice"
+
+msgid "railway"
+msgstr "železnice"
+
+msgid "waterway"
+msgstr "vodní tok"
+
+msgid "landuse"
+msgstr "využití oblasti (landuse)"
+
+msgid "building"
+msgstr "budova"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} uzel"
+msgstr[1] "{0} uzly"
+msgstr[2] "{0} uzlů"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} prvek"
+msgstr[1] "{0} prvky"
+msgstr[2] "{0} prvků"
+
+msgid "public transport"
+msgstr "veřejná doprava"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relace"
+msgstr[1] "relace"
+msgstr[2] "relací"
+
+msgid "Changeset {0}"
+msgstr "Sada změn {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Chyba ve filtru <code>{0}</code>:<br>{1}"
 
@@ -3766,24 +3611,12 @@ msgid ""
 msgstr ""
 "Nelze sloučit prvky s odlišnými identifikátory. Tento má id {0}, druhý {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "uzel"
-msgstr[1] "uzly"
-msgstr[2] "uzly"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "cesta"
 msgstr[1] "cesty"
 msgstr[2] "cest"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relace"
-msgstr[1] "relace"
-msgstr[2] "relací"
-
 msgid "closedway"
 msgstr "uzavřená cesta"
 
@@ -3819,6 +3652,124 @@ 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}. Obdržel jsem ''{2}''."
 
+msgid "<not>"
+msgstr "<nikoliv>"
+
+msgid "<or>"
+msgstr "<nebo>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<levý rodič>"
+
+msgid "<right parent>"
+msgstr "<pravý rodič>"
+
+msgid "<colon>"
+msgstr "<dvojtečka>"
+
+msgid "<equals>"
+msgstr "<rovná se>"
+
+msgid "<key>"
+msgstr "<klíč>"
+
+msgid "<question mark>"
+msgstr "<otazník>"
+
+msgid "<end-of-file>"
+msgstr "<konec-souboru>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Regulární výraz \"{0}\" má chybu na pozici {1}, celá chyba:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Regulární výraz \"{0}\" má chybu, celá chyba:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Nelze zpracovat časové razítko ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Očekávám {0} po {1}"
+
+msgid "Range of primitive ids expected"
+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."
+
+msgid "Range of versions expected"
+msgstr "Očekává se sada verzí"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Klíč nemůže být prázdný, když je použit operátor značky. Příklad použití: "
+"klíč=hodnota"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "Neznámý prvek: {0}. Povolené hodnoty jsou uzel, cesta nebo relace"
+
+msgid "Positive integer expected"
+msgstr "Očekáváno celé kladné číslo"
+
+msgid "Range of numbers expected"
+msgstr "Očekáván číselný rozsah"
+
+msgid "Unknown preset name: "
+msgstr "Neznámý název předvolby: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Selhalo procházení selektoru MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Neočekávaný token: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Chybí parametr pro NEBO"
+
+msgid "Missing parameter for XOR"
+msgstr "Chybějící parametr pro XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Chybějící operátor pro NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Neočekávaný token. Očekáváno {0}, nalezeno {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 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."
 
@@ -3901,6 +3852,123 @@ msgstr "Očekáván prvek ''{0}'', ale obdržen ''{1}''"
 msgid "value expected"
 msgstr "očekávána hodnota"
 
+msgid "Short Description:"
+msgstr "Krátký popis:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Webová stránka:"
+
+msgid "Description:"
+msgstr "Popis:"
+
+msgid "Version:"
+msgstr "Verze:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimální verze JOSM:"
+
+msgid "by {0}"
+msgstr "{0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM výchozí nastavení (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Interní styl by měl být použit jako základ pro vrstvení dalších pravidel "
+"zobrazování"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "základní styl Potlatchu 2"
+
+msgid "Internal Preset"
+msgstr "Interní předvolby"
+
+msgid "The default preset for JOSM"
+msgstr "Výchozí předvolba pro JOSM"
+
+msgid "Addresses"
+msgstr "Adresy"
+
+msgid "Checks for errors on addresses"
+msgstr "Kontrola chyb v adresách"
+
+msgid "Tag combinations"
+msgstr "Kombinace značek"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Kontrola chybějících značek nebo podezřelých kombinací"
+
+msgid "Deprecated features"
+msgstr "Zastaralé vlastnosti"
+
+msgid "Checks for deprecated features"
+msgstr "Kontroluje zastaralé vlastnosti"
+
+msgid "Geometry"
+msgstr "Geometrie"
+
+msgid "Checks for geometry errors"
+msgstr "Kontrola chyb geometrie"
+
+msgid "Highways"
+msgstr "Silniční síť"
+
+msgid "Checks for errors on highways"
+msgstr "Kontrola chyb silnic"
+
+msgid "Multiple values"
+msgstr "Vícenásobné hodnoty"
+
+msgid "Checks for wrong multiple values"
+msgstr "Kontrola špatných vícenásobných hodnot"
+
+msgid "Numeric values"
+msgstr "Číselné hodnoty"
+
+msgid "Checks for wrong numeric values"
+msgstr "Kontroluje chybné číselné hodnoty"
+
+msgid "Religion"
+msgstr "Náboženství"
+
+msgid "Checks for errors on religious objects"
+msgstr "Kontroluje chyby v náboženských objektech"
+
+msgid "Relations"
+msgstr "Relace"
+
+msgid "Checks for errors on relations"
+msgstr "Kontroluje chyby v relacích"
+
+msgid "Territories"
+msgstr "Území"
+
+msgid "Checks for territories-specific features"
+msgstr "Kontroluje prvky území"
+
+msgid "Unnecessary tags"
+msgstr "Zbytečné značky"
+
+msgid "Checks for unnecessary tags"
+msgstr "Kontroluje zbytečné značky"
+
+msgid "Wikipedia"
+msgstr "Wikipedie"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Kontroluje chybné značky Wikipedie"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Projekce UTM (''+proj=utm'') požaduje parametr ''+zone=...''."
 
@@ -4090,9 +4158,6 @@ msgstr "Adresa URL obsahuje neplatný fragment: {0}"
 msgid "URL validator"
 msgstr "Ověřování platnosti URL"
 
-msgid "Addresses"
-msgstr "Adresy"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Zkontroluje chyby v adresách a relacích Přiřazená ulice (associatedStreet)."
@@ -4286,9 +4351,6 @@ msgstr "Duplicitní uzly v cestě"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Kontroluje cesty, jestli neobsahují identické uzly za sebou."
 
-msgid "Highways"
-msgstr "Silniční síť"
-
 msgid "Performs semantic checks on highways."
 msgstr "Provádí kontroly významu na cestách."
 
@@ -4854,9 +4916,6 @@ msgstr "typ vodní cesty {0}"
 msgid "boundary type {0}"
 msgstr "typ hranice {0}"
 
-msgid "building"
-msgstr "budova"
-
 msgid "area"
 msgstr "oblast"
 
@@ -4971,47 +5030,14 @@ msgstr "Již nezobrazovat (pro toto sezení)"
 msgid "Do not show again (remembers choice)"
 msgstr "Neptat se příště (zapamatovat si volbu)"
 
-msgid "incomplete"
-msgstr "nekompletní"
-
-msgid "House {0}"
-msgstr "Dům {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Číslo domu {0} v {1}"
-
-msgid "House number {0}"
-msgstr "Číslo domu {0}"
-
-msgid "highway"
-msgstr "silnice"
-
-msgid "railway"
-msgstr "železnice"
-
-msgid "waterway"
-msgstr "vodní tok"
-
-msgid "landuse"
-msgstr "využití oblasti (landuse)"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} uzel"
-msgstr[1] "{0} uzly"
-msgstr[2] "{0} uzlů"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} prvek"
-msgstr[1] "{0} prvky"
-msgstr[2] "{0} prvků"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoruji vadné URL: \"{0}\""
 
-msgid "public transport"
-msgstr "veřejná doprava"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoruji poškozené URL souboru: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Sada změn {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametr ''downloadgps'' neakceptuje jména souborů, ani URL souborů"
 
 msgid "Precondition violation"
 msgstr "Porušení předpokladů"
@@ -5102,6 +5128,71 @@ msgstr "Posunutí"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Očekávána neprázdná hodnota pro parametr ''{0}'', nalezeno ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Zastaralá verze Java"
+
+msgid "Update Java"
+msgstr "Aktualizovat Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Je spuštěna Java verze {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Tato verze již není podporována {0} od {1} a nedoporučujeme ji používat."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM brzy přestane s touto verzí pracovat. Důrazně doporučujeme aktualizovat "
+"na Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Můžete se setkat s kritickými chybami Javy. Důrazně doporučujeme, abyste "
+"aktualizovali na Javu {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Chcete aktualizovat nyní?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Startovací činnosti specifické pro platformu"
+
+msgid "Building main menu"
+msgstr "Sestavování hlavního menu"
+
+msgid "Updating user interface"
+msgstr "Aktualizace uživatelského rozhraní"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicializuji interní data hranic"
+
+msgid "Initializing OSM API"
+msgstr "Inicializace API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicializuji interní data o dopravě"
+
+msgid "Initializing validator"
+msgstr "Inicializace validátoru"
+
+msgid "Initializing presets"
+msgstr "Inicializace předvoleb"
+
+msgid "Initializing map styles"
+msgstr "Inicializace mapových stylů"
+
+msgid "Loading imagery preferences"
+msgstr "Načítání nastavení mapových podkladů"
+
 msgid "usage"
 msgstr "použití"
 
@@ -5604,6 +5695,89 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Zadaná hodnota není identifikátorem dlaždice pro zvolenou úroveň zvětšení"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Narazili jste na chybu v JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Došlo k neočekávané výjimce.\n"
+"Jedná se o chybu programu. Pokud používáte poslední verzi JOSM, pak buďte "
+"tak laskaví a zašlete hlášení o chybě."
+
+msgid "Debug information"
+msgstr "Ladící informace"
+
+msgid "Manually report at:"
+msgstr "Nahlásit ručně na:"
+
+msgid "Is JOSM up to date?"
+msgstr "Je JOSM aktuální?"
+
+msgid "Send bug report"
+msgstr "Poslat hlášení o chybě"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Pokud používáte poslední verzi JOSM a doplňků, pak prosím vyplňte hlášení o "
+"chybě v našem sledovači chyb.\n"
+"Informace o chybě by již měly být předvyplněné. Prosím, doplňte informace "
+"jak chybu reprodukovat a snažte se poskytnout co nejvíce podrobností."
+
+msgid "Report Bug"
+msgstr "Nahlásit chybu"
+
+msgid "Suppress this error for this session."
+msgstr "Potlačit tuto chybu pro toto sezení."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Potlačit další chybová hlášení v tomto sezení."
+
+msgid "Ignore this error."
+msgstr "Ignorovat tuto chybu."
+
+msgid "Include the system status report."
+msgstr "Zahrnout zprávu o stavu systému."
+
+msgid "Include information about the data you were working on."
+msgstr "Zahrnout informace o datech, na kterých se pracovalo."
+
+msgid "Include all stack traces."
+msgstr "Zahrnout stavy všech zásobníků."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Vaše aktuální verze JOSM je {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM hledá aktualizace..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Při kontrole, zda je vaše JOSM aktuální, došlo k chybě."
+
+msgid "JOSM is up to date."
+msgstr "JOSM je aktuální."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"Editor JOSM je zastaralý. Aktuální verze je {0}. Zkuste JOSM aktualizovat."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Předtím, než zašlete hlášení o chybě, tak se ujistěte, že používáte "
+"nejnovější verzi JOSM zde:"
+
+msgid "Update JOSM"
+msgstr "Aktualizujte JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Pozadí konfliktu: žádný konflikt"
 
@@ -6381,6 +6555,22 @@ msgstr ""
 "Kopírovaná data obsahují nekompletní objekty. Nekompletní objekty nebudou "
 "vloženy. Přejete si vložit data bez nekompletních objektů?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Chcete vložit tyto značky?"
+
+msgid "Clear buffer"
+msgstr "Vymazat zásobník"
+
+msgid "Ignore warnings"
+msgstr "Ignorovat varování"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Promiňte, ale nelze vložit značky ze schránky, protože neobsahuje "
+"objekty JOSM, ani žádný použitelný text.</p></html>"
+
 msgid "For selected objects only"
 msgstr "Pouze pro vybrané objekty"
 
@@ -6980,9 +7170,6 @@ msgstr "Zdroj"
 msgid "Title:"
 msgstr "Název:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Zabudovaný styl, interní cesta:"
 
@@ -7097,9 +7284,6 @@ msgstr ""
 "Zadán neplatný seznam id\n"
 "Nelze pokračovat."
 
-msgid "Relations"
-msgstr "Relace"
-
 msgid "Open a list of all relations."
 msgstr "Otevřít seznam všech relací"
 
@@ -8585,26 +8769,6 @@ msgstr "Hodnota zeměpisné šířky musí být v rozmezí [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Hodnota zeměpisné délky musí být v rozmezí [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Zdroje a typy dat:"
-
-msgid "OpenStreetMap data"
-msgstr "Data OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Vyberte pro stažení dat z OSM ve zvolené oblasti."
-
-msgid "Raw GPS data"
-msgstr "GPS Trasy"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Zvolte, pokud ve vybrané oblasti chcete stáhnout dostupné záznamy prošlých "
-"tras GPS."
-
-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 "Stáhnout do nové vrstvy"
 
@@ -8639,32 +8803,12 @@ msgstr ""
 "Zvolte oblast kliknutím a tažením myší. Šipky nebo pravé tlačítko myši "
 "pohybuje mapou, kolečkem nebo klávesami +/- zvětšujete/zmenšujete."
 
-msgid "No area selected yet"
-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."
-
-msgid "Download area ok, size probably acceptable to server"
-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í"
 
 msgid "Click to download the currently selected area"
 msgstr "Klikněte pro stažení aktuálně vybrané oblasti"
 
-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>Není vybráno ani<strong>{0}</strong> ani <strong>{1}</strong> ani "
-"<strong>{2}</strong>.<br>Zvolte, prosím, stažení OSM dat, GPX dat nebo "
-"poznámek nebo všeho.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Stáhnout odkazující objekty (rodičovské relace)"
 
@@ -8687,6 +8831,97 @@ 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)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Zdroje a typy dat:"
+
+msgid "OpenStreetMap data"
+msgstr "Data OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Vyberte pro stažení dat z OSM ve zvolené oblasti."
+
+msgid "Raw GPS data"
+msgstr "GPS Trasy"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Zvolte, pokud ve vybrané oblasti chcete stáhnout dostupné záznamy prošlých "
+"tras GPS."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Zvolte pro stažení poznámek v oblasti vybrané pro stahování."
+
+msgid "Please select a download area first."
+msgstr "Prosím, vyberte nejprve oblast stahování."
+
+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>Není vybráno ani<strong>{0}</strong> ani <strong>{1}</strong> ani "
+"<strong>{2}</strong>.<br>Zvolte, prosím, stažení OSM dat, GPX dat nebo "
+"poznámek nebo všeho.</html>"
+
+msgid "No area selected yet"
+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."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Stahovaná plocha je v pořádku. Její velikost bude zřejmě serverem "
+"akceptována."
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "Vytvořit dotaz Overpass pomocníkem s dotazy Overpass Turbo"
+
+msgid "Query Wizard"
+msgstr "Pomocník s dotazy"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+"Napište svůj dotaz Overpass níže, nebo ho vytvořte pomocí pomocníka s dotazy "
+"Overpass Turbo"
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Zobrazit/skrýt seznam kousků dotazů Overpass"
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "informace o historii"
+
 msgid "Please select an item first"
 msgstr "Zvolte, prosím, nejdříve položku"
 
@@ -8729,9 +8964,6 @@ msgstr "Pomocník s dotazy nemůže pochopit následující dotaz:"
 msgid "Parse error"
 msgstr "Chyba zpracování"
 
-msgid "Query Wizard"
-msgstr "Pomocník s dotazy"
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9340,6 +9572,18 @@ msgstr "Přihlásit se se zadaným jménem a heslem"
 msgid "Cancel authentication"
 msgstr "Zrušit ověřování"
 
+msgid "Question"
+msgstr "Otázka"
+
+msgid "Message"
+msgstr "Zpráva"
+
+msgid "Enter text"
+msgstr "Vložte text"
+
+msgid "Installing plugins"
+msgstr "Instalace doplňků"
+
 msgid "Downloading file"
 msgstr "Stahování souboru"
 
@@ -9925,9 +10169,6 @@ msgstr "Vybrat objekty k nahrání na server"
 msgid "Cancel uploading"
 msgstr "Ukončit nahrávání"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Nalezena neočekávaná hodnota klíče ''{0}'' v nastavení: ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Naplnit jednu sadu změn a vrátit se do dialogu Nahrát data"
 
@@ -10016,6 +10257,186 @@ msgstr[0] "{0} smazaný objekt:"
 msgstr[1] "{0} smazané objekty:"
 msgstr[2] "{0} smazaných objektů:"
 
+msgid "All Formats"
+msgstr "Všechny formáty"
+
+msgid "Could not export ''{0}''."
+msgstr "Nemohu exportovat \"{0}\""
+
+msgid "Could not import ''{0}''."
+msgstr "Nepovedlo se importovat ''{0}''."
+
+msgid "Could not import files."
+msgstr "Nepovedlo se importovat soubory."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html> Nelze číst soubor ''{0}''.<br> Chyba je: <br> {1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html> Nelze číst soubory.<br>Chyba je: <br> {0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON soubory"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Vrstva ''{0}'' není podporována"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Poznámka: GPL není kompatibilní s licencí OSM.  Nestahujte prosím cesty "
+"licencované pod GPL."
+
+msgid "GPS track description"
+msgstr "Popis GPS trasy"
+
+msgid "Add author information"
+msgstr "Přidat informace o autorovi"
+
+msgid "Real name"
+msgstr "Skutečné jméno"
+
+msgid "E-Mail"
+msgstr "Email"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Předdefinováno"
+
+msgid "Copyright year"
+msgstr "Copyright"
+
+msgid "Keywords"
+msgstr "Klíčová slova"
+
+msgid "Export options"
+msgstr "Nastavení Exportu"
+
+msgid "Export and Save"
+msgstr "Exportovat a uložit"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Chyba při exportu {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Zvolte předdefinovanou licenci"
+
+msgid "GPX Files"
+msgstr "GPX soubory"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Analýza dat pro vrstvu ''{0}'' selhala"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Při parsování gpx vrstvy ''{0}'' došlo k chybě. Bude dostupná pouze část dat."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Při parsování gpx souboru ''{0}'' došlo k chybě. Bude dostupná pouze část "
+"dat."
+
+msgid "Image Files"
+msgstr "Soubory s obrázky"
+
+msgid "folder"
+msgstr "adresář"
+
+msgid "Looking for image files"
+msgstr "Hledám soubory s obrázky"
+
+msgid "No image files found."
+msgstr "Nenalezeny žádné soubory s obrázky."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 soubory"
+
+msgid "Coordinates imported: {0}"
+msgstr "Importované souřadnice: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Chybné vety: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Chyby kontrolních součtů: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Neznámé věty: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nulové souřadnice: {0}"
+
+msgid "NMEA import success:"
+msgstr "Import NMEA úspěšný:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA import selhal!"
+
+msgid "Note Files"
+msgstr "Soubory poznámek"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM soubory komprimované pomocí bzip2"
+
+msgid "OsmChange File"
+msgstr "OsmChange soubory"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Soubor \"{0}\" neexistuje"
+
+msgid "No data found in file {0}."
+msgstr "V souboru {0} nebyla nalezena žádná data."
+
+msgid "Open OsmChange file"
+msgstr "Otevřít soubor OsmChange"
+
+msgid "OSM Server Files"
+msgstr "OSM soubory"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Při ukládání došlo k chybě.<br>Chyba: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Došlo k chybě při obnovování zálohy souboru.<br>Chyba: <br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM soubory komprimované pomocí gzip"
+
+msgid "Invalid dataset"
+msgstr "Nepoužitelná datová sada"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Pro vrstvu ''{0}'' nenalezena žádná data."
+
+msgid "No data found in file ''{0}''."
+msgstr "V souboru ''{0}'' nenalezena žádná data."
+
+msgid "Open OSM file"
+msgstr "Otevřít OSM soubor"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS soubory (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nepodporovaná verze WMS souboru; nalezeno {0}, očekáváno {1}"
+
 msgid "Native projections"
 msgstr "Nativní projekce"
 
@@ -10127,6 +10548,35 @@ msgstr "Tuto zprávu již nezobrazovat"
 msgid "Hide this message and never show it again"
 msgstr "Skrýt tuto zprávu a již ji nikdy nezobrazovat"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Nelze vytvořit adresář {0}, automatické ukládání bude vypnuté"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Nelze vytvořit soubor {0}, bude použito jiné jméno souboru"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"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}"
+
+msgid "Your work has been saved automatically."
+msgstr "Vaše práce byla automaticky uložena."
+
+msgid "Restoring files"
+msgstr "Obnovování souborů"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Nemohu smazat záložní soubor {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Nemohu smazat soubor PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Nemohu smazat archivovaný záložní soubor {0}"
+
 msgid "Customize Color"
 msgstr "Přizpůsobit barvu"
 
@@ -10235,6 +10685,9 @@ msgstr "Poznámek celkem:"
 msgid "Changes need uploading?"
 msgstr "Je třeba nahrát změny na server?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "mimo staženou oblast"
 
@@ -10311,6 +10764,9 @@ msgstr "Nalezené problémy"
 msgid "No validation errors"
 msgstr "Žádné chyby při kontrole"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Nastavit záložku WMS"
 
@@ -10936,9 +11392,6 @@ msgstr "(URL bylo: "
 msgid "Select the map painting styles"
 msgstr "Vybrat styl kreslení mapy"
 
-msgid "loading style ''{0}''..."
-msgstr "nahrávám styl ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10955,6 +11408,9 @@ msgstr[2] ""
 "Došlo k {0} chybám při načítání tohoto stylu. Vyberete ''Info'' z "
 "kontextového menu pokud chcete znát detaily."
 
+msgid "loading style ''{0}''..."
+msgstr "nahrávám styl ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Selhalo nahrání stylů kreslení mapy z ''{0}''. Došlo k výjimce: {1}"
 
@@ -11480,27 +11936,6 @@ msgstr "Stáhnout doplňky"
 msgid "Icon paths:"
 msgstr "Cesty pro ikony:"
 
-msgid "Short Description:"
-msgstr "Krátký popis:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Webová stránka:"
-
-msgid "Description:"
-msgstr "Popis:"
-
-msgid "Version:"
-msgstr "Verze:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimální verze JOSM:"
-
-msgid "by {0}"
-msgstr "{0}"
-
 msgid "Name (optional):"
 msgstr "Jméno (nepovinné):"
 
@@ -12664,21 +13099,6 @@ msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 "Varování: neplatný formát položky v seznamu stylů ''{0}''. Nalezeno ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM výchozí nastavení (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Interní styl by měl být použit jako základ pro vrstvení dalších pravidel "
-"zobrazování"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "základní styl Potlatchu 2"
-
 msgid "Map Settings"
 msgstr "Nastavení mapy"
 
@@ -12772,12 +13192,6 @@ msgstr ""
 "Varování: neplatný formát položky v seznamu předvoleb ''{0}''. Nalezeno "
 "''{1}''"
 
-msgid "Internal Preset"
-msgstr "Interní předvolby"
-
-msgid "The default preset for JOSM"
-msgstr "Výchozí předvolba pro JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Doplněk {0} je ještě vyžadován tímto doplňkem:"
@@ -13282,9 +13696,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Selhalo získání přihlašovacích údajů do OSM ze správce přihlašovacích údajů."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Současný správce přihlašovacích údajů je typu ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Nepodařilo se uložit přihlašovací údaje k OSM do správce přihlašovacích "
@@ -13305,14 +13716,6 @@ msgid ""
 msgstr ""
 "Určuje počet dní po které musí být poznámka uzavřena, aby se již nestahovala"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Nepodařilo se získat přístupový token OAuth od správce přihlašovacích údajů."
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Nepodařilo se uložit přístupový token OAuth do správce přihlašovacích údajů."
-
 msgid "Save to preferences"
 msgstr "Uložit do nastavení"
 
@@ -13510,69 +13913,6 @@ msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 "Varování: neplatný formát položky v seznamu pravidel ''{0}''. Načteno ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Kontrola chyb v adresách"
-
-msgid "Tag combinations"
-msgstr "Kombinace značek"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Kontrola chybějících značek nebo podezřelých kombinací"
-
-msgid "Deprecated features"
-msgstr "Zastaralé vlastnosti"
-
-msgid "Checks for deprecated features"
-msgstr "Kontroluje zastaralé vlastnosti"
-
-msgid "Geometry"
-msgstr "Geometrie"
-
-msgid "Checks for geometry errors"
-msgstr "Kontrola chyb geometrie"
-
-msgid "Checks for errors on highways"
-msgstr "Kontrola chyb silnic"
-
-msgid "Multiple values"
-msgstr "Vícenásobné hodnoty"
-
-msgid "Checks for wrong multiple values"
-msgstr "Kontrola špatných vícenásobných hodnot"
-
-msgid "Numeric values"
-msgstr "Číselné hodnoty"
-
-msgid "Checks for wrong numeric values"
-msgstr "Kontroluje chybné číselné hodnoty"
-
-msgid "Religion"
-msgstr "Náboženství"
-
-msgid "Checks for errors on religious objects"
-msgstr "Kontroluje chyby v náboženských objektech"
-
-msgid "Checks for errors on relations"
-msgstr "Kontroluje chyby v relacích"
-
-msgid "Territories"
-msgstr "Území"
-
-msgid "Checks for territories-specific features"
-msgstr "Kontroluje prvky území"
-
-msgid "Unnecessary tags"
-msgstr "Zbytečné značky"
-
-msgid "Checks for unnecessary tags"
-msgstr "Kontroluje zbytečné značky"
-
-msgid "Wikipedia"
-msgstr "Wikipedie"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Kontroluje chybné značky Wikipedie"
-
 msgid "Tag checker rules"
 msgstr "Pravidla kontroly značek"
 
@@ -13830,6 +14170,37 @@ msgstr "Všechny soubory (*.*)"
 msgid "Received error page:"
 msgstr "Obdržena chybová stránka:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Nastavení s klíčem ''{0}'' neobsahuje ''{1}''. Nelze obnovit geometrii okna "
+"z nastavení."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"nastavení s klíčem ''{0}'' nemá celočíselnou hodnotu pro ''{1}''. Získáno: "
+"{2}. Nelze obnovit geometrii okna z nastavení."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Selhalo zpracování pole ''{1}'' v nastavení s klíčem ''{0}''. Výjimka byla: "
+"{2}. Nelze obnovit geometrii okna z nastavení."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Nastavení s klíčem ''{0}'' neexistuje. Nelze obnovit geometrii okna z "
+"nastavení."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignoruji zdeformovanou geometrii: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. šířka"
 
@@ -13957,9 +14328,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Smazaný člen {0} je používán v relaci {1}"
 
-msgid "All Formats"
-msgstr "Všechny formáty"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Stahuji body {0} až {1}..."
 
@@ -14084,93 +14452,6 @@ msgstr "Zpracovávám odpověď ze serveru..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Neočekávaný XML prvek s názvem ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Nemohu exportovat \"{0}\""
-
-msgid "Could not import ''{0}''."
-msgstr "Nepovedlo se importovat ''{0}''."
-
-msgid "Could not import files."
-msgstr "Nepovedlo se importovat soubory."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html> Nelze číst soubor ''{0}''.<br> Chyba je: <br> {1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html> Nelze číst soubory.<br>Chyba je: <br> {0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON soubory"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Vrstva ''{0}'' není podporována"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Poznámka: GPL není kompatibilní s licencí OSM.  Nestahujte prosím cesty "
-"licencované pod GPL."
-
-msgid "GPS track description"
-msgstr "Popis GPS trasy"
-
-msgid "Add author information"
-msgstr "Přidat informace o autorovi"
-
-msgid "Real name"
-msgstr "Skutečné jméno"
-
-msgid "E-Mail"
-msgstr "Email"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Předdefinováno"
-
-msgid "Copyright year"
-msgstr "Copyright"
-
-msgid "Keywords"
-msgstr "Klíčová slova"
-
-msgid "Export options"
-msgstr "Nastavení Exportu"
-
-msgid "Export and Save"
-msgstr "Exportovat a uložit"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Chyba při exportu {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Zvolte předdefinovanou licenci"
-
-msgid "GPX Files"
-msgstr "GPX soubory"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Analýza dat pro vrstvu ''{0}'' selhala"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Při parsování gpx vrstvy ''{0}'' došlo k chybě. Bude dostupná pouze část dat."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Při parsování gpx souboru ''{0}'' došlo k chybě. Bude dostupná pouze část "
-"dat."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Chyba parsování: Chybná struktura GPX dokumentu"
 
@@ -14180,18 +14461,6 @@ msgstr "(na řádce {0}, sloupci {1})"
 msgid "Unknown mode {0}."
 msgstr "Neznámý režim {0}."
 
-msgid "Image Files"
-msgstr "Soubory s obrázky"
-
-msgid "folder"
-msgstr "adresář"
-
-msgid "Looking for image files"
-msgstr "Hledám soubory s obrázky"
-
-msgid "No image files found."
-msgstr "Nenalezeny žádné soubory s obrázky."
-
 msgid "get number of unread messages"
 msgstr "získat počet nepřečtených zpráv"
 
@@ -14246,36 +14515,9 @@ msgstr "Stahuji relaci s id {0} z ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Pro id {0} server odpověděl kódem 404. Přeskakuji."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 soubory"
-
-msgid "Coordinates imported: {0}"
-msgstr "Importované souřadnice: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Chybné vety: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Chyby kontrolních součtů: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Neznámé věty: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nulové souřadnice: {0}"
-
-msgid "NMEA import success:"
-msgstr "Import NMEA úspěšný:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA import selhal!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Výjimka desetinné čárky, pravděpodobně nějaké chybějící značky."
 
-msgid "Note Files"
-msgstr "Soubory poznámek"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14366,9 +14608,6 @@ msgstr "(Kód={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Server odpověděl chybou s kódem {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM soubory komprimované pomocí bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Prolog dokumentu OsmChange už byl zapsán. Prosím, zapište pouze jednou."
@@ -14377,18 +14616,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Prolog dokumentu OsmChange ještě nebyl zapsán. Prosím, zapište první."
 
-msgid "OsmChange File"
-msgstr "OsmChange soubory"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Soubor \"{0}\" neexistuje"
-
-msgid "No data found in file {0}."
-msgstr "V souboru {0} nebyla nalezena žádná data."
-
-msgid "Open OsmChange file"
-msgstr "Otevřít soubor OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Nepodporovaná verze: {0}"
 
@@ -14442,36 +14669,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Neočekávaná hodnota nastavení ''{0}''. Nalezeno ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM soubory"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Při ukládání došlo k chybě.<br>Chyba: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Došlo k chybě při obnovování zálohy souboru.<br>Chyba: <br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM soubory komprimované pomocí gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Parsuji data historie OSM ..."
 
-msgid "Invalid dataset"
-msgstr "Nepoužitelná datová sada"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Pro vrstvu ''{0}'' nenalezena žádná data."
-
-msgid "No data found in file ''{0}''."
-msgstr "V souboru ''{0}'' nenalezena žádná data."
-
-msgid "Open OSM file"
-msgstr "Otevřít OSM soubor"
-
 msgid "Reading was canceled"
 msgstr "Čtení bylo zrušeno"
 
@@ -14617,6 +14817,9 @@ msgstr "Připojování k serveru..."
 msgid "Downloading OSM notes..."
 msgstr "Stahuji poznámky (Notes) k OSM..."
 
+msgid "Downloading data..."
+msgstr "Stahuji data..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14677,14 +14880,8 @@ msgstr "Nalezeno neočekávané id 0 prvku OSM"
 msgid "Failed to evaluate {0}"
 msgstr "Selhalo vyhodnocení {0}"
 
-msgid "Downloading data..."
-msgstr "Stahuji data..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS soubory (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nepodporovaná verze WMS souboru; nalezeno {0}, očekáváno {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Nalezena neočekávaná hodnota klíče ''{0}'' v nastavení: ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bajtů bylo načteno"
@@ -15858,38 +16055,6 @@ msgstr "Otvírám URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neobsahuje {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Zastaralá verze Java"
-
-msgid "Update Java"
-msgstr "Aktualizovat Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Je spuštěna Java verze {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Tato verze již není podporována {0} od {1} a nedoporučujeme ji používat."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM brzy přestane s touto verzí pracovat. Důrazně doporučujeme aktualizovat "
-"na Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Můžete se setkat s kritickými chybami Javy. Důrazně doporučujeme, abyste "
-"aktualizovali na Javu {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Chcete aktualizovat nyní?"
-
 msgid "reserved"
 msgstr "rezervované"
 
@@ -15964,22 +16129,6 @@ msgstr "Klíč obsahuje podezřelé znaky:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Hodnota je příliš dlouhá (maximum je {0} znaků):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Chcete vložit tyto značky?"
-
-msgid "Clear buffer"
-msgstr "Vymazat zásobník"
-
-msgid "Ignore warnings"
-msgstr "Ignorovat varování"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Promiňte, ale nelze vložit značky ze schránky, protože neobsahuje "
-"objekty JOSM, ani žádný použitelný text.</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Nemohu smazat soubor {0}"
 
@@ -16004,129 +16153,15 @@ msgstr[0] "den"
 msgstr[1] "dny"
 msgstr[2] "dní"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Nastavení s klíčem ''{0}'' neobsahuje ''{1}''. Nelze obnovit geometrii okna "
-"z nastavení."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"nastavení s klíčem ''{0}'' nemá celočíselnou hodnotu pro ''{1}''. Získáno: "
-"{2}. Nelze obnovit geometrii okna z nastavení."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Selhalo zpracování pole ''{1}'' v nastavení s klíčem ''{0}''. Výjimka byla: "
-"{2}. Nelze obnovit geometrii okna z nastavení."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Nastavení s klíčem ''{0}'' neexistuje. Nelze obnovit geometrii okna z "
-"nastavení."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignoruji zdeformovanou geometrii: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Nepodařilo se načíst XML schéma."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Narazili jste na chybu v JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Došlo k neočekávané výjimce.\n"
-"Jedná se o chybu programu. Pokud používáte poslední verzi JOSM, pak buďte "
-"tak laskaví a zašlete hlášení o chybě."
-
-msgid "Debug information"
-msgstr "Ladící informace"
-
-msgid "Manually report at:"
-msgstr "Nahlásit ručně na:"
-
-msgid "Is JOSM up to date?"
-msgstr "Je JOSM aktuální?"
-
-msgid "Send bug report"
-msgstr "Poslat hlášení o chybě"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Pokud používáte poslední verzi JOSM a doplňků, pak prosím vyplňte hlášení o "
-"chybě v našem sledovači chyb.\n"
-"Informace o chybě by již měly být předvyplněné. Prosím, doplňte informace "
-"jak chybu reprodukovat a snažte se poskytnout co nejvíce podrobností."
-
-msgid "Report Bug"
-msgstr "Nahlásit chybu"
-
-msgid "Suppress this error for this session."
-msgstr "Potlačit tuto chybu pro toto sezení."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Potlačit další chybová hlášení v tomto sezení."
-
-msgid "Ignore this error."
-msgstr "Ignorovat tuto chybu."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Založení hlášení chyby se nezdařilo. Prosím, nahlaste to ručně na této "
 "stránce:"
 
-msgid "Include the system status report."
-msgstr "Zahrnout zprávu o stavu systému."
-
-msgid "Include information about the data you were working on."
-msgstr "Zahrnout informace o datech, na kterých se pracovalo."
-
-msgid "Include all stack traces."
-msgstr "Zahrnout stavy všech zásobníků."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Vaše aktuální verze JOSM je {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM hledá aktualizace..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Při kontrole, zda je vaše JOSM aktuální, došlo k chybě."
-
-msgid "JOSM is up to date."
-msgstr "JOSM je aktuální."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"Editor JOSM je zastaralý. Aktuální verze je {0}. Zkuste JOSM aktualizovat."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Předtím, než zašlete hlášení o chybě, tak se ujistěte, že používáte "
-"nejnovější verzi JOSM zde:"
-
-msgid "Update JOSM"
-msgstr "Aktualizujte JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19878,9 +19913,6 @@ msgstr "Obsah tabule"
 msgid "notice"
 msgstr "upozornění"
 
-msgid "history"
-msgstr "informace o historii"
-
 msgid "nature"
 msgstr "informace o přírodě"
 
@@ -20460,6 +20492,9 @@ msgstr "Sociální zařízení"
 msgid "Nursing Home"
 msgstr "Pečovatelský ústav"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Společný domov pro osoby se sociálními a zdravotními službami."
 
@@ -22902,6 +22937,9 @@ msgstr "Dárky/Suvenýry"
 msgid "Variety Store"
 msgstr "Levné věci"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Sázková kancelář"
 
@@ -23776,6 +23814,78 @@ msgstr "Kanceláře"
 msgid "Industrial"
 msgstr "Průmysl"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garáže"
 
@@ -24481,6 +24591,9 @@ msgstr ""
 "pevnin Země, o rozlišení 30 - 60 cm doplněná snímky Landsat. Průměrné stáří "
 "je 2,31 roku a některé oblasti jsou aktualizovány dvakrát ročně."
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25253,6 +25366,9 @@ msgstr "Katastr"
 msgid "French land registry"
 msgstr "Francouzký pozemkový katastr"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25365,15 +25481,6 @@ msgstr "Stará mapa Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -34059,15 +34166,21 @@ msgstr "na předchozí hodnotu (nezměněný čas)"
 msgid "Photo Geotagging Plugin"
 msgstr "Doplněk Photo Geotagging"
 
-msgid "Writing position information to image files..."
-msgstr "Zápis informací o poloze do souborů s obrázky…"
-
 msgid "Could not read mtime."
 msgstr "Nelze přečíst čas modifikace."
 
 msgid "Could not write mtime."
 msgstr "Nelze zapsat čas modifikace."
 
+msgid "Writing position information to image files..."
+msgstr "Zápis informací o poloze do souborů s obrázky…"
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Soubor nemohl být smazán!"
 
@@ -34581,6 +34694,9 @@ msgstr "Opravit chybu"
 msgid "PT: dummy test warning"
 msgstr "VD: varování testovacího testu"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "VD: Trasa obsahuje mezeru, kterou lze zcelit seřazením."
 
@@ -34591,6 +34707,9 @@ msgstr ""
 "VD: Mezery v trasách lze snížit seřazením členů. Bude ovšem potřeba výsledek "
 "zkontrolovat."
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/cy.po b/i18n/po/cy.po
index e9ededc..568bf8d 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 05:05+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:05+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: cy\n"
 
@@ -56,54 +56,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Cymorth"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Rhybudd"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Ynghylch"
 
@@ -181,6 +136,9 @@ msgstr "Diddymu"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Rhybudd"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -457,13 +415,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -471,9 +426,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -540,6 +492,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Cymorth"
+
 msgid "History"
 msgstr ""
 
@@ -1039,23 +994,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2310,36 +2248,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2626,86 +2534,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2723,9 +2551,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3072,57 +2897,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3212,6 +2992,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3340,6 +3126,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3354,6 +3149,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3390,15 +3188,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3424,21 +3275,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3472,6 +3313,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3549,6 +3500,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3733,9 +3799,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3920,9 +3983,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4461,9 +4521,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4575,47 +4632,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4706,6 +4732,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5167,6 +5253,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5861,6 +6020,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6417,9 +6590,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6530,9 +6700,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7925,49 +8092,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7979,36 +8184,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8053,9 +8269,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8593,6 +8806,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9070,9 +9295,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9151,6 +9373,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9258,6 +9652,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9361,6 +9782,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9434,6 +9858,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10003,9 +10430,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10015,6 +10439,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10428,55 +10855,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11562,19 +11968,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11654,12 +12047,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12125,9 +12512,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12145,12 +12529,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12331,69 +12709,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12637,6 +12952,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12749,9 +13087,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12854,86 +13189,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12943,18 +13198,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13006,36 +13249,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13123,27 +13339,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13189,35 +13390,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13349,6 +13524,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13406,13 +13584,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14348,33 +14520,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14433,20 +14578,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14470,109 +14601,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18285,9 +18320,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18867,6 +18899,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21307,6 +21342,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22167,6 +22205,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22862,6 +22972,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23614,6 +23727,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23724,15 +23840,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31584,13 +31691,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32088,6 +32201,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32096,6 +32212,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/da.po b/i18n/po/da.po
index b098788..2c7cd04 100644
--- a/i18n/po/da.po
+++ b/i18n/po/da.po
@@ -8,15 +8,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-10 18:10+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-09-02 10:25+0000\n"
 "Last-Translator: Jørn <joern.map at gmail.com>\n"
 "Language-Team: Dansk <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=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2017-08-13 04:40+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:39+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: da_DK\n"
 "X-Poedit-SourceCharset: utf-8\n"
@@ -57,54 +57,9 @@ msgstr "Betingelser for brug af baggrund"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Åbning af link ikke understøttet på den nuværende platform (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr "Afvikler tilføjelse til opstart af platform"
-
-msgid "Building main menu"
-msgstr "Opbygger hovedmenu"
-
-msgid "Help"
-msgstr "Hjælp"
-
-msgid "Initializing internal boundaries data"
-msgstr "Klargør interne grænsedata"
-
-msgid "Initializing OSM API"
-msgstr "Klargør OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "Klargør interne trafikdata"
-
-msgid "Initializing validator"
-msgstr "Klargør validering"
-
-msgid "Initializing presets"
-msgstr "Klargør prædefinitioner"
-
-msgid "Initializing map styles"
-msgstr "Klargør kort-stile"
-
-msgid "Loading imagery preferences"
-msgstr "Indlæser billedlags-indstillinger"
-
-msgid "Updating user interface"
-msgstr "Opdaterer brugerfladen"
-
 msgid "Failed to save default preferences."
 msgstr "Kunne ikke gemme standardindstillinger."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorerer misformet URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Advarsel"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorerer misformet fil-URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" accepterer ikke filnavne eller fil-URL’er"
-
 msgid "About"
 msgstr "Om"
 
@@ -186,6 +141,9 @@ msgstr "Annuller"
 msgid "Click to abort launching external browsers"
 msgstr "Klik for at afbryde åbning af eksterne browsere"
 
+msgid "Warning"
+msgstr "Advarsel"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Vælg mindst et allerede uploadet punkt, vej eller relation."
 
@@ -479,14 +437,11 @@ msgstr ""
 "* Højst to punkter på en ikke selvkrydsende vej, eller;\n"
 "* Tre punkter."
 
-msgid "Download from OSM..."
-msgstr "Download fra OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Download kortdata fra OSM serveren."
+msgid "Download data"
+msgstr "Download data"
 
-msgid "Please select a download area first."
-msgstr "Vælg et downloadområde først."
+msgid "Download map data from a server of your choice"
+msgstr "Download kortdata fra en server efter eget valg"
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -495,9 +450,6 @@ msgstr ""
 "<html>Denne handling kræver {0} individuelle<br>download-anmodninger. Ønsker "
 "du<br>at fortsætte?</html>"
 
-msgid "Download data"
-msgstr "Download data"
-
 msgid "Download notes in current view"
 msgstr "Download noter i aktuel visning"
 
@@ -564,6 +516,9 @@ msgstr "Intet at eksportere. Få nogle data først."
 msgid "Export GPX file"
 msgstr "Eksporter GPX-fil"
 
+msgid "Help"
+msgstr "Hjælp"
+
 msgid "History"
 msgstr "Historik"
 
@@ -1040,7 +995,7 @@ msgid "Start downloading data"
 msgstr "Begynd at downloade data"
 
 msgid "Close dialog and cancel downloading"
-msgstr "Luk dialog og annuller download"
+msgstr "Luk dialog og afbryd download"
 
 msgid "Download Data"
 msgstr "Download data"
@@ -1116,27 +1071,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Vælg veje med vinkler på cirka 90 eller 180 grader."
 
-msgid "Download from Overpass API ..."
-msgstr "Download fra Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Download kortdata fra Overpass API server."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-"Lav en Overpass forespørgsel ved hjælp af værktøjet Overpass Turbo "
-"forespørgsels guide"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-"Placer din overpass forespørgsel nedenfor eller generer en ved hjælp af "
-"Overpass Turbo forespørgsels guiden"
-
-msgid "Show/hide Overpass snippet list"
-msgstr "Vis/skjul Overpass uddragsliste"
-
 msgid "Paste"
 msgstr "Indsæt"
 
@@ -1955,7 +1889,7 @@ msgstr "Downloader data"
 
 msgid ""
 "Ignoring exception because download has been canceled. Exception was: {0}"
-msgstr "Ignorerer fejlen da download blev annulleret. Fejlen var: {0}"
+msgstr "Ignorerer hændelse fordi download blev afbrudt. Hændelse var: {0}"
 
 msgid "No data found in this area."
 msgstr "Ingen data fundet i dette område"
@@ -2490,36 +2424,6 @@ msgstr "Marker relation (tilføj)"
 msgid "Select relation"
 msgstr "Marker relation"
 
-msgid "<not>"
-msgstr "<ikke>"
-
-msgid "<or>"
-msgstr "<eller>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<kolon>"
-
-msgid "<equals>"
-msgstr "<er lig med>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<spørgsmålstegn>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Søg..."
 
@@ -2821,96 +2725,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Søger i {0} objekt"
 msgstr[1] "Søger i {0} objekter"
 
-msgctxt "search"
-msgid "CS"
-msgstr "Versalfølsom"
-
-msgctxt "search"
-msgid "CI"
-msgstr "Ikke-versalfølsom"
-
-msgctxt "search"
-msgid "RX"
-msgstr "Regulært udtryk"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Det regulære udtryk \"{0}\" havde en fortolkningsfejl ved tegn {1}, den "
-"fulde fejlbesked:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Det regulære udtryk \"{0}\" havde en fortolkningsfejl, den fulde "
-"fejlbesked:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Kan ikke fortolke tidsstempel ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Forventer {0} efter {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Udvalg af primitiv-ID''er forventet"
-
-msgid "Range of changeset ids expected"
-msgstr "Udvalg af rettesæts-ID''er forventet"
-
-msgid "Range of versions expected"
-msgstr "Udvalg af versioner forventet"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Nøgle kan ikke være tom når tag operatør bruges. Eksempel: nøgle=værdi"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Ukendt primitiv type: {0}. Tilladte værdier er node, way eller relation"
-
-msgid "Positive integer expected"
-msgstr "Positivt heltal forventet"
-
-msgid "Range of numbers expected"
-msgstr "Forventet talområde"
-
-msgid "Unknown preset name: "
-msgstr "Ukendt prædefineret navn: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Uventet udtryk. Forventede {0}, fandt {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Kunne ikke fortolke MapCSS vælger"
-
-msgid "Unexpected token: {0}"
-msgstr "Uventet udtryk: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Manglende parameter for OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Manglende parameter for XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Manglende operatør for NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Afkorter automatisk værdien af tag ''{0}'' på slettet objekt {1}"
 
@@ -2931,9 +2745,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Brud på API-egenskaber"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cyklisk afhængighed mellem relationer:"
-
 msgid "Removed obsolete tags"
 msgstr "Fjernede forældede tags"
 
@@ -2975,7 +2786,7 @@ msgid ""
 msgstr ""
 "Følgende er resultatet af automatisk validering. Prøv at rette disse fejl, "
 "men vær forsigtig (slet ikke gyldig data). Er du i tvivl, så ignorer "
-"dem.<br>Hvis du fortryder denne dialog, kan du finde posterne i validator-"
+"dem.<br>Når du afbryder denne dialog, kan du finde posterne i validator-"
 "sidepanelet for at se nærmere på dem."
 
 msgid "Errors"
@@ -3312,61 +3123,12 @@ msgstr "Roller i relationer refererende til"
 msgid "Automatic tag correction"
 msgstr "Automatisk tag-rettelse"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Kunne ikke oprette mappen {0}, autogem er slået fra"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Kunne ikke oprette filen {0}, andet filnavn vil blive brugt"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"IO-fejl ved oprettelse af filen, autogem vil blive sprunget over: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Kunne ikke slette gammel backupfil {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Dit arbejde er blevet gemt automatisk."
-
-msgid "Restoring files"
-msgstr "Gendanner filer"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Kan ikke slette backupfil {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Kan ikke slette PIDfil {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Kan ikke slette arkiveret backupfil {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Ulovlig breddegradsværdi \"{0}\""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Ulovlig længdegradsværdi ''{0}''"
 
-msgid "Question"
-msgstr "Spørgsmål"
-
-msgid "Message"
-msgstr "Besked"
-
-msgid "Enter text"
-msgstr "Indtast tekst"
-
-msgid "Installing plugins"
-msgstr "Installerer udvidelser"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Indstillingsfilen beder om lov til at tilføje indstillinger til "
-"<b>{0}</b>,<br/> men dens standardværdi er ukendt i øjeblikket.<br/> Aktiver "
-"den tilsvarende funktion manuelt og prøv at importere igen."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Kunne ikke oprette manglende cachemappe: {0}"
 
@@ -3475,6 +3237,15 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "Indstilling {0} er blevet fjernet eftersom den ikke længere er i brug."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Indstillingsfilen beder om lov til at tilføje indstillinger til "
+"<b>{0}</b>,<br/> men dens standardværdi er ukendt i øjeblikket.<br/> Aktiver "
+"den tilsvarende funktion manuelt og prøv at importere igen."
+
 msgid "Metric"
 msgstr "Metrisk"
 
@@ -3612,6 +3383,15 @@ msgstr ""
 msgid "Note"
 msgstr "Note"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Kunne ikke hente OAuth adgangsudtryk fra legitimationsstyring"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Nuværende legitimationsstyring er af typen \"{0}\""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "Kunne ikke gemme OAuth adgangsudtryk til legitimationsstyring"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 forventet. Fik {0}."
 
@@ -3628,6 +3408,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "En primitiv med ID = 0 kan ikke være usynlig."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cyklisk afhængighed mellem relationer:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3671,6 +3454,59 @@ msgstr "Sammenlægger data..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' fuldført i {1}"
 
+msgid "incomplete"
+msgstr "ufuldstændig"
+
+msgid "House {0}"
+msgstr "Huset {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Hus nummer {0} på {1}"
+
+msgid "House number {0}"
+msgstr "Husnummer {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "punkt"
+msgstr[1] "punkter"
+
+msgid "highway"
+msgstr "vej"
+
+msgid "railway"
+msgstr "jernbane"
+
+msgid "waterway"
+msgstr "vandløb"
+
+msgid "landuse"
+msgstr "brug af jord"
+
+msgid "building"
+msgstr "bygning"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} punkt"
+msgstr[1] "{0} punkter"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} medlem"
+msgstr[1] "{0} medlemmer"
+
+msgid "public transport"
+msgstr "offentlig transport"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relation"
+msgstr[1] "relationer"
+
+msgid "Changeset {0}"
+msgstr "Rettesæt {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Fejl i filter <code>{0}</code>:<br>{1}"
 
@@ -3709,21 +3545,11 @@ msgstr ""
 "Kan ikke sammenlægge primitiver med forskellige ID''er. Denne ID er {0}, "
 "mens den anden er {1}."
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "punkt"
-msgstr[1] "punkter"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vej"
 msgstr[1] "veje"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relation"
-msgstr[1] "relationer"
-
 msgid "closedway"
 msgstr "lukketvej"
 
@@ -3760,6 +3586,126 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parameter {0} ikke i interval 0..{1}. Fik ''{2}''."
 
+msgid "<not>"
+msgstr "<ikke>"
+
+msgid "<or>"
+msgstr "<eller>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<kolon>"
+
+msgid "<equals>"
+msgstr "<er lig med>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<spørgsmålstegn>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Det regulære udtryk \"{0}\" havde en fortolkningsfejl ved tegn {1}, den "
+"fulde fejlbesked:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Det regulære udtryk \"{0}\" havde en fortolkningsfejl, den fulde "
+"fejlbesked:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Kan ikke fortolke tidsstempel ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Forventer {0} efter {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Udvalg af primitiv-ID''er forventet"
+
+msgid "Range of changeset ids expected"
+msgstr "Udvalg af rettesæts-ID''er forventet"
+
+msgid "Range of versions expected"
+msgstr "Udvalg af versioner forventet"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Nøgle kan ikke være tom når tag operatør bruges. Eksempel: nøgle=værdi"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Ukendt primitiv type: {0}. Tilladte værdier er node, way eller relation"
+
+msgid "Positive integer expected"
+msgstr "Positivt heltal forventet"
+
+msgid "Range of numbers expected"
+msgstr "Forventet talområde"
+
+msgid "Unknown preset name: "
+msgstr "Ukendt prædefineret navn: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Kunne ikke fortolke MapCSS vælger"
+
+msgid "Unexpected token: {0}"
+msgstr "Uventet udtryk: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Manglende parameter for OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Manglende parameter for XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Manglende operatør for NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Uventet udtryk. Forventede {0}, fandt {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "Versalfølsom"
+
+msgctxt "search"
+msgid "CI"
+msgstr "Ikke-versalfølsom"
+
+msgctxt "search"
+msgid "RX"
+msgstr "Regulært udtryk"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Kunne ikke indlæse kortfortolkningsklassen ''{0}''. Klassen blev ikke fundet."
@@ -3843,6 +3789,122 @@ msgstr "Forventet element ''{0}'', men fik ''{1}''"
 msgid "value expected"
 msgstr "værdi forventet"
 
+msgid "Short Description:"
+msgstr "Kort beskrivelse:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Forfatter:"
+
+msgid "Webpage:"
+msgstr "Webside:"
+
+msgid "Description:"
+msgstr "Beskrivelse:"
+
+msgid "Version:"
+msgstr "Version:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimum JOSM version:"
+
+msgid "by {0}"
+msgstr "af {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM standard (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Intern stil der skal bruges som grundlag for udskiftbare overlay stilarter"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "den primære Potlatch 2 stilart"
+
+msgid "Internal Preset"
+msgstr "Intern prædefinition"
+
+msgid "The default preset for JOSM"
+msgstr "Standard prædefinition for JOSM"
+
+msgid "Addresses"
+msgstr "Adresser"
+
+msgid "Checks for errors on addresses"
+msgstr "Kontrollerer for fejl i adresser"
+
+msgid "Tag combinations"
+msgstr "Tag kombinationer"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Kontrollererl for manglende tag eller mistænkelige kombinationer"
+
+msgid "Deprecated features"
+msgstr "Forældede funktioner"
+
+msgid "Checks for deprecated features"
+msgstr "Kontrollerer for forældede funktioner"
+
+msgid "Geometry"
+msgstr "Geometri"
+
+msgid "Checks for geometry errors"
+msgstr "Kontrollerer for geometri fejl"
+
+msgid "Highways"
+msgstr "Veje"
+
+msgid "Checks for errors on highways"
+msgstr "Kontrollerer for fejl på veje"
+
+msgid "Multiple values"
+msgstr "Flere værdier"
+
+msgid "Checks for wrong multiple values"
+msgstr "Kontrollerer for forkerte flere værdier"
+
+msgid "Numeric values"
+msgstr "Numeriske værdier"
+
+msgid "Checks for wrong numeric values"
+msgstr "Kontrollerer for forkerte numeriske værdier"
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr "Kontrollerer for fejl på religiøse objekter"
+
+msgid "Relations"
+msgstr "Relationer"
+
+msgid "Checks for errors on relations"
+msgstr "Kontrollerer for fejl i relationer"
+
+msgid "Territories"
+msgstr "Territorier"
+
+msgid "Checks for territories-specific features"
+msgstr "Tjek for territorier specifikke træk"
+
+msgid "Unnecessary tags"
+msgstr "Unødvendige tags"
+
+msgid "Checks for unnecessary tags"
+msgstr "Kontrollerer for unødvendige tags"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Kontrollerer for forkerte wikipedia tags"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM projektion (''+proj=utm'') kræver ''+zone=...'' parameter."
 
@@ -4034,9 +4096,6 @@ msgstr "URL indeholder et ugyldigt fragment: {0}"
 msgid "URL validator"
 msgstr "URL tjekker"
 
-msgid "Addresses"
-msgstr "Adresser"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Søger efter fejl i adresser og associatedStreet relationer."
 
@@ -4230,9 +4289,6 @@ msgstr "Duplikerede vejpunkter"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Tjekker for veje med identiske på hinanden følgende punkter."
 
-msgid "Highways"
-msgstr "Veje"
-
 msgid "Performs semantic checks on highways."
 msgstr "Udfører semantiske tjek af veje."
 
@@ -4795,9 +4851,6 @@ msgstr "vandløbstype {0}"
 msgid "boundary type {0}"
 msgstr "grænsetype {0}"
 
-msgid "building"
-msgstr "bygning"
-
 msgid "area"
 msgstr "område"
 
@@ -4916,57 +4969,26 @@ msgstr "Vis ikke igen (denne session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Vis ikke igen (husker valg)"
 
-msgid "incomplete"
-msgstr "ufuldstændig"
-
-msgid "House {0}"
-msgstr "Huset {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Hus nummer {0} på {1}"
-
-msgid "House number {0}"
-msgstr "Husnummer {0}"
-
-msgid "highway"
-msgstr "vej"
-
-msgid "railway"
-msgstr "jernbane"
-
-msgid "waterway"
-msgstr "vandløb"
-
-msgid "landuse"
-msgstr "brug af jord"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} punkt"
-msgstr[1] "{0} punkter"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} medlem"
-msgstr[1] "{0} medlemmer"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorerer misformet URL: \"{0}\""
 
-msgid "public transport"
-msgstr "offentlig transport"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorerer misformet fil-URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Rettesæt {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" accepterer ikke filnavne eller fil-URL’er"
 
 msgid "Precondition violation"
 msgstr "Brud på forudsætninger"
 
 msgid "Security exception"
-msgstr "Sikkerhedshandling"
+msgstr "Sikkerhedshændelse"
 
 msgid "Network exception"
-msgstr "Netværkshandling"
+msgstr "Netværkshændelse"
 
 msgid "IO Exception"
-msgstr "IO handling."
+msgstr "IO hændelse"
 
 msgid "Illegal Data"
 msgstr "Ugyldig data"
@@ -5022,7 +5044,7 @@ msgid "Downloading \"Message of the day\""
 msgstr "Downloader \"Dagens besked\""
 
 msgid "Failed to read MOTD. Exception was: {0}"
-msgstr "Kunne ikke læse MOTD. Handling var: {0}"
+msgstr "Kunne ikke læse MOTD. Hændelse var: {0}"
 
 msgid "Message of the day not available"
 msgstr "Dagens besked er ikke tilgængelig"
@@ -5044,6 +5066,72 @@ msgstr "Forskydning"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Forventede ikke-tom værdi for parameter \"{0}\". Fik \"{1}\"."
 
+msgid "Outdated Java version"
+msgstr "Forældet Java version"
+
+msgid "Update Java"
+msgstr "Opdater Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Du bruger Java version {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Denne version er ikke længere understøttet af {0} siden {1} og frarådes at "
+"bruge."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM vil snart ikke virke med denne version; vi anbefaler dig meget at "
+"opdatere til Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Du kan blive udsat for kritiske Java-fejl; Vi anbefaler dig stærkt at "
+"opdatere til Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Vil du opdatere nu?"
+
+msgid "Starting file watcher"
+msgstr "Start fil overvågning"
+
+msgid "Executing platform startup hook"
+msgstr "Afvikler tilføjelse til opstart af platform"
+
+msgid "Building main menu"
+msgstr "Opbygger hovedmenu"
+
+msgid "Updating user interface"
+msgstr "Opdaterer brugerfladen"
+
+msgid "Initializing internal boundaries data"
+msgstr "Klargør interne grænsedata"
+
+msgid "Initializing OSM API"
+msgstr "Klargør OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "Klargør interne trafikdata"
+
+msgid "Initializing validator"
+msgstr "Klargør validering"
+
+msgid "Initializing presets"
+msgstr "Klargør prædefinitioner"
+
+msgid "Initializing map styles"
+msgstr "Klargør kort-stile"
+
+msgid "Loading imagery preferences"
+msgstr "Indlæser billedlags-indstillinger"
+
 msgid "usage"
 msgstr "brug"
 
@@ -5542,6 +5630,90 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Den aktuelle værdi er ikke et gyldigt tern-indeks for det angivne zoomniveau"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Du er stødt på en fejl i JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Der opstod en uventet hændelse.\n"
+"Dette er altid en kodefejl. Hvis du bruger den nyeste version af JOSM, "
+"overvej da at indsende en fejlrapport."
+
+msgid "Debug information"
+msgstr "Fejlsøgnings information"
+
+msgid "Manually report at:"
+msgstr "Manuelt rapporterer på:"
+
+msgid "Is JOSM up to date?"
+msgstr "Er JOSM opdateret?"
+
+msgid "Send bug report"
+msgstr "Send fejlrapport"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Hvis du bruger den nyeste version af JOSM og udvidelser, kan du indsende en "
+"fejlrapport i vores fejlrapporteringssystem.\n"
+"Her burde fejl-informationen allerede være udfyldt for dig. Tilføj "
+"informationer om hvordan fejlen kan genskabes, og giv så mange detaljer som "
+"muligt."
+
+msgid "Report Bug"
+msgstr "Rapporter fejl"
+
+msgid "Suppress this error for this session."
+msgstr "Undertryk denne fejl for denne session."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Undertryk yderligere fejldialoger for denne session."
+
+msgid "Ignore this error."
+msgstr "Ignorer denne fejl."
+
+msgid "Include the system status report."
+msgstr "Medtag system statusrapporten."
+
+msgid "Include information about the data you were working on."
+msgstr "Medtag oplysninger om de data du arbejdede med."
+
+msgid "Include all stack traces."
+msgstr "Medtag alle stak-oplysninger."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Din nuværende version af JOSM er {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM søger efter opdateringer..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Der opstod en fejl under tjek af om din JOSM instans er opdateret."
+
+msgid "JOSM is up to date."
+msgstr "JOSM er opdateret."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM er forældet. Den aktuelle version er {0}. Prøv at opdatere JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Før du indsender en fejlrapport sørg du har opdateret til den nyeste version "
+"af JOSM her:"
+
+msgid "Update JOSM"
+msgstr "Opdater JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikt baggrund: ingen konflikt"
 
@@ -6310,6 +6482,22 @@ msgstr ""
 "ufuldstændige objekter er fjernet. Ønsker du at indsætte data uden den "
 "ufuldstændige objekter?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Ønsker du at indsætte disse tags?"
+
+msgid "Clear buffer"
+msgstr "Ryd buffer"
+
+msgid "Ignore warnings"
+msgstr "Ignorer advarsler"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Beklager, det er ikke muligt at indsætte tags fra udklipsholderen. "
+"Den indeholder ikke noget JOSM objekt, eller passende tekst. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Kun for de valgte elementer"
 
@@ -6867,10 +7055,10 @@ msgid "Turn selected styles on or off"
 msgstr "Slå valgte stile til eller fra"
 
 msgid "Move the selected entry one row down."
-msgstr "Flyt det valgte emne én række ned."
+msgstr "Flyt det valgte emne en række ned."
 
 msgid "Move the selected entry one row up."
-msgstr "Flyt det valgte emne én række op."
+msgstr "Flyt det valgte emne en række op."
 
 msgid "Reload from file"
 msgstr "Genindlæs fra fil"
@@ -6908,9 +7096,6 @@ msgstr "Kilde"
 msgid "Title:"
 msgstr "Titel:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Inbygget stilart, intern sti:"
 
@@ -7027,9 +7212,6 @@ msgstr ""
 "Ugyldig ID liste specificeret\n"
 "Kan ikke fortsætte."
 
-msgid "Relations"
-msgstr "Relationer"
-
 msgid "Open a list of all relations."
 msgstr "Åbn en liste over alle relationer"
 
@@ -7838,7 +8020,7 @@ msgid "Edit the value of the selected key for all objects"
 msgstr "Rediger værdien for den valgte nøgle for alle objekter"
 
 msgid "Edit Tags"
-msgstr "Redigere tags"
+msgstr "Rediger tags"
 
 msgid "Go to OSM wiki for tag help"
 msgstr "Gå til OSM wiki for hjælp til tag"
@@ -8048,7 +8230,7 @@ msgid "Downloading relation {0}"
 msgstr "Downloader relation {0}"
 
 msgid "Ignoring exception because task was canceled. Exception: {0}"
-msgstr "Ignorerer handling da opgaven blev annulleret. Handling: {0}"
+msgstr "Ignorerer hændelse fordi opgave blev afbrudt. Hændelse: {0}"
 
 msgid "Downloading {0} incomplete object"
 msgid_plural "Downloading {0} incomplete objects"
@@ -8216,7 +8398,7 @@ msgid "Apply the current updates"
 msgstr "Tilføj de aktuelle opdateringer"
 
 msgid "Cancel the updates and close the dialog"
-msgstr "Annuller opdateringerne og luk dialogen"
+msgstr "Afbryd opdateringerne og luk dialogen"
 
 msgid "Yes, save the changes and close"
 msgstr "Ja, gem ændringer og luk"
@@ -8231,7 +8413,7 @@ msgid "Click to discard the changes and close this relation editor"
 msgstr "Klik for at smide ændringer væk og lukke denne relationseditor"
 
 msgid "Cancel, continue editing"
-msgstr "Annullér, forsæt redigering"
+msgstr "Afbryd, forsæt redigering"
 
 msgid "Click to return to the relation editor and to resume relation editing"
 msgstr ""
@@ -8513,24 +8695,6 @@ msgstr "Værdi for breddegrad i intervallet [-90,90] krævet."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Værdi for længdegrad i intervallet [-180,180] krævet."
 
-msgid "Data Sources and Types:"
-msgstr "Datakilder og typer:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap-data"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Vælg for at downloade OSM-data i det valgte område."
-
-msgid "Raw GPS data"
-msgstr "Rå GPS-data"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Vælg for at downloade GPS-spor i det valgte område."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Vælg for at downloade noter i det valgte området."
-
 msgid "Download as new layer"
 msgstr "Download som nyt lag"
 
@@ -8564,33 +8728,12 @@ msgstr ""
 "Brug venstreklik og træk for at markere området, piletaster eller højre "
 "museknap for at rulle kortet og musehjul eller +/- for at zoome."
 
-msgid "No area selected yet"
-msgstr "Intet område valgt endnu"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Downloadområdet er for stort; vil sandsynligvis blive afvist af serveren"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Downloadområdets størrelse er ok, størrelsen vil sandsynligvis blive "
-"accepteret af serveren"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Klik for at lukke dialogen og afbryde downloaden"
 
 msgid "Click to download the currently selected area"
 msgstr "Klik for at downloade det aktuelt valgte område"
 
-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>Hverken <strong>{0}</strong> heller ikke <strong>{1}</strong> heller "
-"ikke <strong>{2}</strong> er aktiveret.<br>Vælg enten download OSM-data, "
-"eller GPX-data eller Noter, eller alle.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Download de referende (forælder relationer)"
 
@@ -8613,6 +8756,100 @@ msgstr "Vælg om medlemmer af relationen også skal downloades"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Download refererende (forælder-relationer og veje)"
 
+msgid "Download from OSM"
+msgstr "Download fra OSM"
+
+msgid "Data Sources and Types:"
+msgstr "Datakilder og typer:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap-data"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Vælg for at downloade OSM-data i det valgte område."
+
+msgid "Raw GPS data"
+msgstr "Rå GPS-data"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Vælg for at downloade GPS-spor i det valgte område."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Vælg for at downloade noter i det valgte området."
+
+msgid "Please select a download area first."
+msgstr "Vælg et downloadområde først."
+
+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>Hverken <strong>{0}</strong> heller ikke <strong>{1}</strong> heller "
+"ikke <strong>{2}</strong> er aktiveret.<br>Vælg enten download OSM-data, "
+"eller GPX-data eller Noter, eller alle.</html>"
+
+msgid "No area selected yet"
+msgstr "Intet område valgt endnu"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Downloadområdet er for stort; vil sandsynligvis blive afvist af serveren"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Downloadområdets størrelse er ok, størrelsen vil sandsynligvis blive "
+"accepteret af serveren"
+
+msgid "Download from Overpass API"
+msgstr "Download fra Overpass API"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+"Lav en Overpass forespørgsel ved hjælp af værktøjet Overpass Turbo "
+"forespørgsels guide"
+
+msgid "Query Wizard"
+msgstr "Forespørgsels guide"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+"Placer din overpass forespørgsel nedenfor eller generer en ved hjælp af "
+"Overpass Turbo forespørgsels guiden"
+
+msgid "Your saved queries:"
+msgstr "Dine gemte forespørgsler:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Vis/skjul Overpass uddragsliste"
+
+msgid "Overpass query:"
+msgstr "Overpass forespørgsel:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+"Du har indtastet en tom forespørgsel. Vil du downloade alle data i dette "
+"område i stedet?"
+
+msgid "Download all data?"
+msgstr "Download alle data?"
+
+msgid "Add new snippet"
+msgstr "Tilføj nyt uddrag"
+
+msgid "Delete selected snippet"
+msgstr "Slet valgt uddrag"
+
+msgid "Edit selected snippet"
+msgstr "Rediger valgt uddrag"
+
+msgid "history"
+msgstr "historik"
+
 msgid "Please select an item first"
 msgstr "Vælg et emne først"
 
@@ -8655,9 +8892,6 @@ msgstr "Overpass guiden kunne ikke fortolke følgende forespørgsel:"
 msgid "Parse error"
 msgstr "Fortolkningsfejl"
 
-msgid "Query Wizard"
-msgstr "Forespørgsels guide"
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8782,7 +9016,7 @@ msgid "JOSM Help Browser"
 msgstr "JOSM’s Hjælp-browser"
 
 msgid "Failed to read CSS file ''help-browser.css''. Exception is: {0}"
-msgstr "Kunne ikke læse CSS-filen ''help-browser.css''. Handling er: {0}"
+msgstr "Kunne ikke læse CSS-filen ''help-browser.css''. Hændelse er: {0}"
 
 msgid ""
 "<html><p class=\"warning-header\">Help content for help topic missing</p><p "
@@ -8847,7 +9081,7 @@ msgid "Go to the JOSM help home page"
 msgstr "Gå til JOSM’s Hjælp-hjemmeside"
 
 msgid "Bad location in HTML document. Exception was: {0}"
-msgstr "Dårlig placering i HTML-dokument. Handlingen var: {0}"
+msgstr "Dårlig placering i HTML-dokument. Hændelse var: {0}"
 
 msgid "Failed to open help page. The target URL is empty."
 msgstr "Kunne ikke åbne hjælpeside. URL’en er tom."
@@ -9076,7 +9310,7 @@ msgid "Click to download all referring objects for {0}"
 msgstr "Klik for at downloade alle objekter der henviser til {0}"
 
 msgid "Click to cancel and to resume editing the map"
-msgstr "Klik for at annullere og genoptage redigering af kortet"
+msgstr "Klik for at afbryde og genoptage redigering af kortet"
 
 msgid ""
 "Click <strong>{0}</strong> to load them now.<br>If necessary JOSM will "
@@ -9181,7 +9415,7 @@ msgid "Close the selected open changesets"
 msgstr "Luk de markerede åbne rettesæt"
 
 msgid "Cancel closing of changesets"
-msgstr "Annuller lukning af rettesæt"
+msgstr "Afbryd lukning af rettesæt"
 
 msgid "Closing changeset"
 msgstr "Lukker rettesæt"
@@ -9192,8 +9426,8 @@ msgstr "Lukker rettesæt {0}"
 msgid ""
 "Failed to put Credential Dialog always on top. Caught security exception."
 msgstr ""
-"Kunne ikke sætte legitimationsoplysninger altid øverst. Fangede en sikkerhed "
-"handling."
+"Kunne ikke sætte legitimationsoplysninger altid øverst. Fangede en "
+"sikkerhedshændelse."
 
 msgid "Enter credentials for OSM API"
 msgstr "Indtast brugeroplysninger for OSM-API"
@@ -9263,7 +9497,19 @@ msgid "Authenticate with the supplied username and password"
 msgstr "Få godkendelse med den givne brugernavn og adgangskode"
 
 msgid "Cancel authentication"
-msgstr "Annullér godkendelse"
+msgstr "Afbryd godkendelse"
+
+msgid "Question"
+msgstr "Spørgsmål"
+
+msgid "Message"
+msgstr "Besked"
+
+msgid "Enter text"
+msgstr "Indtast tekst"
+
+msgid "Installing plugins"
+msgstr "Installerer udvidelser"
 
 msgid "Downloading file"
 msgstr "Downloader fil"
@@ -9301,7 +9547,7 @@ msgstr "Mangler brugeridentitet"
 msgid ""
 "Failed to retrieve user infos for the current JOSM user. Exception was: {0}"
 msgstr ""
-"Kunne ikke hente brugerinfo for den aktuelle JOSM bruger. Handlingen var: {0}"
+"Kunne ikke hente brugerinfo for den aktuelle JOSM bruger. Hændelse var: {0}"
 
 msgid "Initializing nodes to download ..."
 msgstr "Klargør punkter der skal downloades ..."
@@ -9335,8 +9581,8 @@ msgid ""
 "Either edit the path manually in the text field or click the \"...\" button "
 "to open a file chooser."
 msgstr ""
-"Du skal enten redigere stien manuelt i tekstfeltet eller klikke på \"...\" "
-"knappen for at åbne en filvælger."
+"Enten rediger stien manuelt i tekstfeltet eller klikke på \"...\" knappen "
+"for at åbne en filvælger."
 
 msgid "The bold text is the name of the layer."
 msgstr "Den fremhævede tekst er navnet på laget."
@@ -9489,10 +9735,10 @@ msgid_plural ""
 "canceled or have failed.</html>"
 msgstr[0] ""
 "<html>En upload og/eller gemme handling for et lag med ændringer <br>blev "
-"annulleret eller mislykkedes.</html>"
+"afbrudt eller mislykkedes.</html>"
 msgstr[1] ""
 "<html>En upload og/eller gemme handling for {0} lag med ændringer <br>blev "
-"annulleret eller mislykkedes.</html>"
+"afbrudt eller mislykkedes.</html>"
 
 msgid "Incomplete upload and/or save"
 msgstr "Ufuldstændig upload og/eller gemme handling"
@@ -9612,7 +9858,7 @@ msgstr ""
 "Gå til foregående dialogboks for at udfylde en mere beskrivende kommentar"
 
 msgid "Cancel and return to the previous dialog"
-msgstr "Fortryd og gå til foregående dialogboks"
+msgstr "Afbryd og gå til foregående dialogboks"
 
 msgid "Please enter a valid chunk size first"
 msgstr "Indtast først en gyldig størrelse for bidderne"
@@ -9640,7 +9886,7 @@ msgid "Empty metadata"
 msgstr "Tom metadata"
 
 msgid "Cancel the upload and resume editing"
-msgstr "Annuller uploaden og genoptag redigeringen"
+msgstr "Afbryd uploaden og genoptag redigeringen"
 
 msgid "Tags of changeset {0}"
 msgstr "Tags i rettesæt {0}"
@@ -9795,7 +10041,7 @@ msgstr[1] "Uploader {0} objekter..."
 msgid ""
 "Ignoring caught exception because upload is canceled. Exception is: {0}"
 msgstr ""
-"Ignorerer fangede handling fordi upload blev annulleret. Handling er: {0}"
+"Ignorerer fanget hændelse fordi upload blev afbrudt. Hændelse er: {0}"
 
 msgid "Upload successful!"
 msgstr "Upload lykkedes!"
@@ -9818,10 +10064,7 @@ msgid "Select objects to upload"
 msgstr "Vælg objekter at uploade"
 
 msgid "Cancel uploading"
-msgstr "Annuller upload"
-
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Uventet værdi for nøgle ''{0}'' i indstillinger, fik ''{1}''"
+msgstr "Afbryd upload"
 
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Fyld et rettesæt op og returner til upload-dialogen"
@@ -9908,6 +10151,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objekt at slette:"
 msgstr[1] "{0} objekter at slette:"
 
+msgid "All Formats"
+msgstr "Alle formater"
+
+msgid "Could not export ''{0}''."
+msgstr "Kunne ikke eksportere ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Kunne ikke importere ''{0}''."
+
+msgid "Could not import files."
+msgstr "Kunne ikke importere filer."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Kunne ikke læse filen \"{0}\".<br>Fejlen er:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Kunne ikke indlæse filerne.<br>Fejlen er:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON filer"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Laget \"{0}\" er ikke understøttet"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Bemærk: GPL er ikke kompatibel med OSM-licensen. Upload ikke GPL-licenserede "
+"spor."
+
+msgid "GPS track description"
+msgstr "Beskrivelse af gps-spor"
+
+msgid "Add author information"
+msgstr "Angiv forfatter"
+
+msgid "Real name"
+msgstr "Rigtige navn"
+
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgid "Copyright (URL)"
+msgstr "Ophavsret (URL)"
+
+msgid "Predefined"
+msgstr "Forudindstillet"
+
+msgid "Copyright year"
+msgstr "År for ophavsret"
+
+msgid "Keywords"
+msgstr "Nøgleord"
+
+msgid "Export options"
+msgstr "Eksporter indstillinger"
+
+msgid "Export and Save"
+msgstr "Eksporter og gem"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Fejl ved eksport af {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Vælg en forudangivet licens"
+
+msgid "GPX Files"
+msgstr "GPX-filer"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Fortolkning af data for laget \"{0}\" mislykkedes"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"En fejl opstod ved behandling af gpx-data for laget ''{0}''. Kun en del af "
+"filen vil være tilgængelig."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"En fejl opstod ved behandling af gpx-filen ''{0}''. Kun en del af filen vil "
+"være tilgængelig."
+
+msgid "Image Files"
+msgstr "Billedfiler"
+
+msgid "folder"
+msgstr "mappe"
+
+msgid "Looking for image files"
+msgstr "Leder efter billedfiler"
+
+msgid "No image files found."
+msgstr "Ingen billedfiler fundet."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183-filer"
+
+msgid "Coordinates imported: {0}"
+msgstr "Koordinater importeret: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Misdannede sætninger: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Cheksumfejl: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Ukendte sætninger: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nul-koordinater: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA import succes:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA import fejl!"
+
+msgid "Note Files"
+msgstr "Notefiler"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM serverfiler bzip2-komprimeret"
+
+msgid "OsmChange File"
+msgstr "OsmChange fil"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Fil ''{0}'' findes ikke."
+
+msgid "No data found in file {0}."
+msgstr "Ingen data fundet i filen {0}."
+
+msgid "Open OsmChange file"
+msgstr "Åbn OsmChange fil"
+
+msgid "OSM Server Files"
+msgstr "OSM-serverfiler"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Der opstod en fejl ved forsøg på at gemme.<br>Fejlen er:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Der opstod en fejl ved forsøg på at gendanne backupfilen.<br>Fejlen "
+"er:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM serverfiler gzip komprimeret"
+
+msgid "Invalid dataset"
+msgstr "Ugyldigt datasæt"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Ingen data fundet for laget \"{0}\"."
+
+msgid "No data found in file ''{0}''."
+msgstr "Ingen data fundet i filen \"{0}\"."
+
+msgid "Open OSM file"
+msgstr "Åbn OSM fil"
+
+msgid "Validation Error Files"
+msgstr "Valideringsfejlfil"
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Filer (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "WMS-filversion ikke understøttet; fandt {0}, forventede {1}"
+
 msgid "Native projections"
 msgstr "Oprindelig projektion"
 
@@ -10018,6 +10444,34 @@ msgstr "Vis ikke denne besked igen"
 msgid "Hide this message and never show it again"
 msgstr "Skjul denne besked og vis den aldrig igen"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Kunne ikke oprette mappen {0}, autogem er slået fra"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Kunne ikke oprette filen {0}, andet filnavn vil blive brugt"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"IO-fejl ved oprettelse af filen, autogem vil blive sprunget over: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Kunne ikke slette gammel backupfil {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Dit arbejde er blevet gemt automatisk."
+
+msgid "Restoring files"
+msgstr "Gendanner filer"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Kan ikke slette backupfil {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Kan ikke slette PIDfil {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Kan ikke slette arkiveret backupfil {0}"
+
 msgid "Customize Color"
 msgstr "Tilpas farve"
 
@@ -10121,6 +10575,9 @@ msgstr "Noter totalt:"
 msgid "Changes need uploading?"
 msgstr "Ændringer behøver upload?"
 
+msgid "Save Note file"
+msgstr "Gem notefil"
+
 msgid "outside downloaded area"
 msgstr "Uden for det downloadede område"
 
@@ -10196,6 +10653,9 @@ msgstr "Valideringsfejl"
 msgid "No validation errors"
 msgstr "Ingen valideringsfejl"
 
+msgid "Save Validation errors file"
+msgstr "Gem valideringsfejlfil"
+
 msgid "Set WMS Bookmark"
 msgstr "Sæt WMS-bogmærke"
 
@@ -10245,7 +10705,7 @@ msgid ""
 "read on the photo and select a timezone<hr></html>"
 msgstr ""
 "<html>Tag et billede af din GPS-modtager, mens den viser klokken.<br>Vis "
-"billedet her.<br>Notér derefter tidspunktet, du kan aflæse på billedet og "
+"billedet her.<br>Noter derefter tidspunktet, du kan aflæse på billedet og "
 "vælg en tidszone<hr></html>"
 
 msgid "Photo time (from exif):"
@@ -10616,7 +11076,7 @@ msgid "Click to download"
 msgstr "Klik for at downloade"
 
 msgid "Click to cancel"
-msgstr "Klik for at annullere"
+msgstr "Klik for at afbryde"
 
 msgid "Download from OSM along this track"
 msgstr "Download fra OSM langs dette spor"
@@ -10816,9 +11276,6 @@ msgstr "(URL var: "
 msgid "Select the map painting styles"
 msgstr "Vælg korttegningsstilene"
 
-msgid "loading style ''{0}''..."
-msgstr "indlæser stilart \"{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10832,9 +11289,11 @@ msgstr[1] ""
 "Der opstod {0} fejl ved indlæsning af denne stilart. Vælg \"Info\" fra "
 "højrekliks-menuen for detaljer."
 
+msgid "loading style ''{0}''..."
+msgstr "indlæser stilart \"{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
-msgstr ""
-"Kunne ikke indlæse korttegningsstile fra ''{0}''. Handlingen var: {1}"
+msgstr "Kunne ikke indlæse korttegningsstile fra ''{0}''. Hændelse var: {1}"
 
 msgid "Failed to parse Mappaint styles from ''{0}''. Error was: {1}"
 msgstr "Kunne ikke fortolke korttegningsstile fra ''{0}''. Fejlen var: {1}"
@@ -11360,27 +11819,6 @@ msgstr "Download udvidelser"
 msgid "Icon paths:"
 msgstr "Ikonstier:"
 
-msgid "Short Description:"
-msgstr "Kort beskrivelse:"
-
-msgid "Author:"
-msgstr "Forfatter:"
-
-msgid "Webpage:"
-msgstr "Webside:"
-
-msgid "Description:"
-msgstr "Beskrivelse:"
-
-msgid "Version:"
-msgstr "Version:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimum JOSM version:"
-
-msgid "by {0}"
-msgstr "af {0}"
-
 msgid "Name (optional):"
 msgstr "Navn (valgfrit):"
 
@@ -12537,20 +12975,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "Advarsel: Ulovligt format for linje i stilliste ''{0}''. Fik ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM standard (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Intern stil der skal bruges som grundlag for udskiftbare overlay stilarter"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "den primære Potlatch 2 stilart"
-
 msgid "Map Settings"
 msgstr "Indstillinger for kort"
 
@@ -12649,12 +13073,6 @@ msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 "Advarsel: ugyldigt format af emne i prædefineret listen \"{0}\". Fik \"{1}\""
 
-msgid "Internal Preset"
-msgstr "Intern prædefinition"
-
-msgid "The default preset for JOSM"
-msgstr "Standard prædefinition for JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Udvidelsen {0} er stadig krævet af denne udvidelse:"
@@ -13009,7 +13427,7 @@ msgid "Download objects to new layer"
 msgstr "Download objekter til et nyt lag"
 
 msgid "Confirm all Remote Control actions manually"
-msgstr "Bekræft alle fjernstyringshændelser manuelt"
+msgstr "Bekræft alle fjernstyringshandlinger manuelt"
 
 msgid ""
 "Allows JOSM to be controlled from other applications, e.g. from a web "
@@ -13156,9 +13574,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Kunne ikke hente OSM legitimationsoplysninger fra legitimationsstyring."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Nuværende legitimationsstyring er af typen \"{0}\""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Kunne ikke gemme OSM legitimationsoplysninger til legitimationsstyring."
@@ -13179,12 +13594,6 @@ msgstr ""
 "Angiver antallet af dage en note skal være lukket for ikke længere at blive "
 "downloadet"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Kunne ikke hente OAuth adgangsudtryk fra legitimationsstyring"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "Kunne ikke gemme OAuth adgangsudtryk til legitimationsstyring"
-
 msgid "Save to preferences"
 msgstr "Gem i indstillinger"
 
@@ -13379,69 +13788,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr "Advarsel: Illegal format af post i regelliste ''{0}''. Fik ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Kontrollerer for fejl i adresser"
-
-msgid "Tag combinations"
-msgstr "Tag kombinationer"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Kontrollererl for manglende tag eller mistænkelige kombinationer"
-
-msgid "Deprecated features"
-msgstr "Forældede funktioner"
-
-msgid "Checks for deprecated features"
-msgstr "Kontrollerer for forældede funktioner"
-
-msgid "Geometry"
-msgstr "Geometri"
-
-msgid "Checks for geometry errors"
-msgstr "Kontrollerer for geometri fejl"
-
-msgid "Checks for errors on highways"
-msgstr "Kontrollerer for fejl på veje"
-
-msgid "Multiple values"
-msgstr "Flere værdier"
-
-msgid "Checks for wrong multiple values"
-msgstr "Kontrollerer for forkerte flere værdier"
-
-msgid "Numeric values"
-msgstr "Numeriske værdier"
-
-msgid "Checks for wrong numeric values"
-msgstr "Kontrollerer for forkerte numeriske værdier"
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr "Kontrollerer for fejl på religiøse objekter"
-
-msgid "Checks for errors on relations"
-msgstr "Kontrollerer for fejl i relationer"
-
-msgid "Territories"
-msgstr "Territorier"
-
-msgid "Checks for territories-specific features"
-msgstr "Tjek for territorier specifikke træk"
-
-msgid "Unnecessary tags"
-msgstr "Unødvendige tags"
-
-msgid "Checks for unnecessary tags"
-msgstr "Kontrollerer for unødvendige tags"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Kontrollerer for forkerte wikipedia tags"
-
 msgid "Tag checker rules"
 msgstr "Tag kontrolregler"
 
@@ -13674,7 +14020,7 @@ msgid "Select auto-increment of {0} for this field"
 msgstr "Vælg auto-forøgelse på {0} for dette felt"
 
 msgid "Cancel auto-increment for this field"
-msgstr "Annuller auto-forøgelse for dette felt"
+msgstr "Afbryd auto-forøgelse for dette felt"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13698,6 +14044,37 @@ msgstr "Alle filer(*.*)"
 msgid "Received error page:"
 msgstr "Modtaget fejlside:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Indstilling med nøgle ''{0}'' omfatter ikke ''{1}''. Kan ikke genskabe "
+"vinduesgeometri ud fra indstillinger."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Indstilling med nøgle ''{0}'' giver ikke en heltalsværdi for ''{1}''. Fik "
+"{2}. Kan ikke genskabe vinduesgeometri ud fra indstillinger."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Kunne ikke fortolke feltet ''{1}'' i indstilling med nøgle ''{0}''. Hændelse "
+"var: {2}. Kan ikke genskabe vinduesgeometri ud fra indstillinger."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Indstilling med nøgle ''{0}'' findes ikke. Kan ikke genskabe vinduesgeometri "
+"ud fra indstillinger."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorerer misdannet geometri: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. breddegrad"
 
@@ -13830,9 +14207,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Slettet medlem {0} bruges af relationen {1}"
 
-msgid "All Formats"
-msgstr "Alle formater"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Downloader punkterne {0} til {1}..."
 
@@ -13850,7 +14224,7 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 "Kunne ikke åbne fil med type ''{2}'' og navnedel ''{3}'' i zip-fil ''{0}''. "
-"Handlingen var: {1}"
+"Hændelse var: {1}"
 
 msgid "The requested URL {0} was not found"
 msgstr "Den anmodede webadresse {0} blev ikke fundet"
@@ -13934,7 +14308,7 @@ msgstr ""
 msgid ""
 "Connection to proxy ''{0}'' for URI ''{1}'' failed. Exception was: {2}"
 msgstr ""
-"Tilslutning til proxy ''{0}'' for URI ''{1}'' fejlede. Handlingen var: {2}"
+"Tilslutning til proxy ''{0}'' for URI ''{1}'' fejlede. Hændelse var: {2}"
 
 msgid ""
 "The JVM is not configured to lookup proxies from the system settings. The "
@@ -13951,94 +14325,6 @@ msgstr "Fortolker svar fra server..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Uventet XML-element med navn \"{0}\""
 
-msgid "Could not export ''{0}''."
-msgstr "Kunne ikke eksportere ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Kunne ikke importere ''{0}''."
-
-msgid "Could not import files."
-msgstr "Kunne ikke importere filer."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Kunne ikke læse filen \"{0}\".<br>Fejlen er:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Kunne ikke indlæse filerne.<br>Fejlen er:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON filer"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Laget \"{0}\" er ikke understøttet"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Bemærk: GPL er ikke kompatibel med OSM-licensen. Upload ikke GPL-licenserede "
-"spor."
-
-msgid "GPS track description"
-msgstr "Beskrivelse af gps-spor"
-
-msgid "Add author information"
-msgstr "Angiv forfatter"
-
-msgid "Real name"
-msgstr "Rigtige navn"
-
-msgid "E-Mail"
-msgstr "E-mail"
-
-msgid "Copyright (URL)"
-msgstr "Ophavsret (URL)"
-
-msgid "Predefined"
-msgstr "Forudindstillet"
-
-msgid "Copyright year"
-msgstr "År for ophavsret"
-
-msgid "Keywords"
-msgstr "Nøgleord"
-
-msgid "Export options"
-msgstr "Eksporter indstillinger"
-
-msgid "Export and Save"
-msgstr "Eksporter og gem"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Fejl ved eksport af {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Vælg en forudangivet licens"
-
-msgid "GPX Files"
-msgstr "GPX-filer"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Fortolkning af data for laget \"{0}\" mislykkedes"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"En fejl opstod ved behandling af gpx-data for laget ''{0}''. Kun en del af "
-"filen vil være tilgængelig."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"En fejl opstod ved behandling af gpx-filen ''{0}''. Kun en del af filen vil "
-"være tilgængelig."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Fortolkningsfejl: ugyldig dokumentstruktur for GPX dokument."
 
@@ -14048,18 +14334,6 @@ msgstr "(ved linje {0}, kolonne {1})"
 msgid "Unknown mode {0}."
 msgstr "Ukendt tilstand {0}."
 
-msgid "Image Files"
-msgstr "Billedfiler"
-
-msgid "folder"
-msgstr "mappe"
-
-msgid "Looking for image files"
-msgstr "Leder efter billedfiler"
-
-msgid "No image files found."
-msgstr "Ingen billedfiler fundet."
-
 msgid "get number of unread messages"
 msgstr "få antallet af ulæste beskeder"
 
@@ -14113,35 +14387,8 @@ msgstr "Henter relation med ID {0} fra ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server svarede med svarkode 404 for ID {0}. Springer over."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183-filer"
-
-msgid "Coordinates imported: {0}"
-msgstr "Koordinater importeret: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Misdannede sætninger: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Cheksumfejl: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Ukendte sætninger: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nul-koordinater: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA import succes:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA import fejl!"
-
 msgid "Null pointer exception, possibly some missing tags."
-msgstr "Null pointer-fejl, sikkert på grund af nogle manglende tags."
-
-msgid "Note Files"
-msgstr "Notefiler"
+msgstr "Null pointer hændelse, sikkert på grund af nogle manglende tags."
 
 msgid "OSM API"
 msgstr "OSM API"
@@ -14234,9 +14481,6 @@ msgstr "(Kode={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Serveren meldte en fejl med kode {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM serverfiler bzip2-komprimeret"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Indledning til OsmChange dokumentet er allerede skrevet. Skriv den kun en "
@@ -14246,18 +14490,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Indledning til OsmChange dokument ikke skrevet endnu. Skriv den først."
 
-msgid "OsmChange File"
-msgstr "OsmChange fil"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Fil ''{0}'' findes ikke."
-
-msgid "No data found in file {0}."
-msgstr "Ingen data fundet i filen {0}."
-
-msgid "Open OsmChange file"
-msgstr "Åbn OsmChange fil"
-
 msgid "Unsupported version: {0}"
 msgstr "Ikke understøttet version: {0}"
 
@@ -14311,40 +14543,11 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Uventet værdi for indstilling ''{0}''. Fik ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM-serverfiler"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Der opstod en fejl ved forsøg på at gemme.<br>Fejlen er:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Der opstod en fejl ved forsøg på at gendanne backupfilen.<br>Fejlen "
-"er:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM serverfiler gzip komprimeret"
-
 msgid "Parsing OSM history data ..."
 msgstr "Fortolker OSM historikdata ..."
 
-msgid "Invalid dataset"
-msgstr "Ugyldigt datasæt"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Ingen data fundet for laget \"{0}\"."
-
-msgid "No data found in file ''{0}''."
-msgstr "Ingen data fundet i filen \"{0}\"."
-
-msgid "Open OSM file"
-msgstr "Åbn OSM fil"
-
 msgid "Reading was canceled"
-msgstr "Læsning blev annulleret"
+msgstr "Læsning blev afbrudt"
 
 msgid ""
 "Missing mandatory attributes on element ''bounds''. Got "
@@ -14485,6 +14688,9 @@ msgstr "Forbinder til server..."
 msgid "Downloading OSM notes..."
 msgstr "Downloader OSM noter..."
 
+msgid "Downloading data..."
+msgstr "Downloader data..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "Kunne ikke forbinde til osm serveren. Tjek din internetforbindelse."
@@ -14542,14 +14748,8 @@ msgstr "Uventet id 0 fundet for osm primitiv"
 msgid "Failed to evaluate {0}"
 msgstr "Kunne ikke evaluere {0}"
 
-msgid "Downloading data..."
-msgstr "Downloader data..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Filer (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "WMS-filversion ikke understøttet; fandt {0}, forventede {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Uventet værdi for nøgle ''{0}'' i indstillinger, fik ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bytes er blevet læst"
@@ -15144,7 +15344,7 @@ msgstr "Klik for at deaktivere udvidelsen \"{0}\""
 
 msgid ""
 "An unexpected exception occurred that may have come from the ''{0}'' plugin."
-msgstr "En uventet fejl opstod, som kan stamme fra \"{0}\"-udvidelsen."
+msgstr "En uventet hændelse opstod, kan stamme fra \"{0}\"-udvidelsen."
 
 msgid "According to the information within the plugin, the author is {0}."
 msgstr "Ifølge udvidelsen medfølgende information, så er {0} forfatteren."
@@ -15255,7 +15455,7 @@ msgid ""
 "Exception was: {1}"
 msgstr ""
 "Kunne ikke fortolke dokument med udvidelsesliste fra webstedet ''{0}''. "
-"Springer over webstedet. Handling var: {1}"
+"Springer over webstedet. Hændelse var: {1}"
 
 msgid "Processing plugin list from site ''{0}''"
 msgstr "Behandler udvidelseslisten fra webstedet \"{0}\""
@@ -15652,13 +15852,13 @@ msgstr ""
 "konfigurationsproblem. JOSM vil holde op med at virke."
 
 msgid "Failed to handle zip file ''{0}''. Exception was: {1}"
-msgstr "Kunne ikke håndtere zip-fil ''{0}''. Handlingen var: {1}"
+msgstr "Kunne ikke håndtere zip-fil ''{0}''. Hændelse var: {1}"
 
 msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 msgstr ""
 "Kunne ikke få adgang til mappen ''{0}'' af sikkerhedsmæssige årsager. "
-"Handlingen var: {1}"
+"Hændelse var: {1}"
 
 msgid "Cause: "
 msgstr "Årsag: "
@@ -15690,39 +15890,6 @@ msgstr "Åbner URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL indeholder ikke {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Forældet Java version"
-
-msgid "Update Java"
-msgstr "Opdater Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Du bruger Java version {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Denne version er ikke længere understøttet af {0} siden {1} og frarådes at "
-"bruge."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM vil snart ikke virke med denne version; vi anbefaler dig meget at "
-"opdatere til Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Du kan blive udsat for kritiske Java-fejl; Vi anbefaler dig stærkt at "
-"opdatere til Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Vil du opdatere nu?"
-
 msgid "reserved"
 msgstr "reserveret"
 
@@ -15793,22 +15960,6 @@ msgstr "Mistænkelige tegn i nøglen:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Værdien er for lang (maks {0} tegn):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Ønsker du at indsætte disse tags?"
-
-msgid "Clear buffer"
-msgstr "Ryd buffer"
-
-msgid "Ignore warnings"
-msgstr "Ignorer advarsler"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Beklager, det er ikke muligt at indsætte tags fra udklipsholderen. "
-"Den indeholder ikke noget JOSM objekt, eller passende tekst. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Kan ikke slette fil {0}"
 
@@ -15832,130 +15983,15 @@ msgid_plural "days"
 msgstr[0] "dag"
 msgstr[1] "dage"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Indstilling med nøgle ''{0}'' omfatter ikke ''{1}''. Kan ikke genskabe "
-"vinduesgeometri ud fra indstillinger."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Indstilling med nøgle ''{0}'' giver ikke en heltalsværdi for ''{1}''. Fik "
-"{2}. Kan ikke genskabe vinduesgeometri ud fra indstillinger."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Kunne ikke fortolke feltet ''{1}'' i indstilling med nøgle ''{0}''. "
-"Handlingen var: {2}. Kan ikke genskabe vinduesgeometri ud fra indstillinger."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Indstilling med nøgle ''{0}'' findes ikke. Kan ikke genskabe vinduesgeometri "
-"ud fra indstillinger."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorerer misdannet geometri: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Kunne ikke indlæse XML skemaet."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Du er stødt på en fejl i JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Der opstod en uventet handling.\n"
-"Dette er altid en kodefejl. Hvis du bruger den nyeste version af JOSM, "
-"overvej da at indsende en fejlrapport."
-
-msgid "Debug information"
-msgstr "Fejlsøgnings information"
-
-msgid "Manually report at:"
-msgstr "Manuelt rapporterer på:"
-
-msgid "Is JOSM up to date?"
-msgstr "Er JOSM opdateret?"
-
-msgid "Send bug report"
-msgstr "Send fejlrapport"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Hvis du bruger den nyeste version af JOSM og udvidelser, kan du indsende en "
-"fejlrapport i vores fejlrapporteringssystem.\n"
-"Her burde fejl-informationen allerede være udfyldt for dig. Tilføj "
-"informationer om hvordan fejlen kan genskabes, og giv så mange detaljer som "
-"muligt."
-
-msgid "Report Bug"
-msgstr "Rapporter fejl"
-
-msgid "Suppress this error for this session."
-msgstr "Undertryk denne fejl for denne session."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Undertryk yderligere fejldialoger for denne session."
-
-msgid "Ignore this error."
-msgstr "Ignorer denne fejl."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Åbning af fejlrapport mislykkedes. Rapporter manuelt ved hjælp af denne "
 "hjemmeside:"
 
-msgid "Include the system status report."
-msgstr "Medtag system statusrapporten."
-
-msgid "Include information about the data you were working on."
-msgstr "Medtag oplysninger om de data du arbejdede med."
-
-msgid "Include all stack traces."
-msgstr "Medtag alle stak-oplysninger."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Din nuværende version af JOSM er {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM søger efter opdateringer..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Der opstod en fejl under tjek af om din JOSM instans er opdateret."
-
-msgid "JOSM is up to date."
-msgstr "JOSM er opdateret."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM er forældet. Den aktuelle version er {0}. Prøv at opdatere JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Før du indsender en fejlrapport sørg du har opdateret til den nyeste version "
-"af JOSM her:"
-
-msgid "Update JOSM"
-msgstr "Opdater JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19708,9 +19744,6 @@ msgstr "Tavle indhold"
 msgid "notice"
 msgstr "oplysning"
 
-msgid "history"
-msgstr "historik"
-
 msgid "nature"
 msgstr "natur"
 
@@ -20292,6 +20325,9 @@ msgstr "Sociale faciliteter"
 msgid "Nursing Home"
 msgstr "Plejecenter"
 
+msgid "Nursing Home (Legacy)"
+msgstr "Plejehjem (gammel)"
+
 msgid "Group Home"
 msgstr "Plejehjem"
 
@@ -22734,6 +22770,9 @@ msgstr "Gave/Souvenir"
 msgid "Variety Store"
 msgstr "Småtingsbutik"
 
+msgid "Charity"
+msgstr "Velgørenhed"
+
 msgid "Bookmaker"
 msgstr "Spilleudbyder"
 
@@ -23611,6 +23650,78 @@ msgstr "Erhverv"
 msgid "Industrial"
 msgstr "Industri"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr "bageri"
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr "bryggeri"
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr "teglværk"
+
+msgctxt "industrial"
+msgid "depot"
+msgstr "depot"
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr "distributør"
+
+msgctxt "industrial"
+msgid "factory"
+msgstr "fabrik"
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr "mølleri"
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr "fjernvarme"
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr "maskinehandel"
+
+msgctxt "industrial"
+msgid "mine"
+msgstr "mine"
+
+msgctxt "industrial"
+msgid "oil"
+msgstr "olie"
+
+msgctxt "industrial"
+msgid "port"
+msgstr "havn"
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr "saltdam"
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr "savværk"
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr "losseplads"
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr "skibsværft"
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr "slagteri"
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr "lager"
+
 msgid "Garages"
 msgstr "Garager"
 
@@ -24316,6 +24427,9 @@ msgstr ""
 "earth’s landmass, with 30-60cm or resolution where available, backfilled by "
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 
+msgid "Esri World Imagery"
+msgstr "Esri World Imagery"
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25087,6 +25201,9 @@ msgstr "Matrikel"
 msgid "French land registry"
 msgstr "French land registry"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr "CRAIG - Auvergne 2016 - 25 cm"
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25199,15 +25316,6 @@ msgstr "Old map of Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -28356,7 +28464,7 @@ msgid "Select two ways with a node in common"
 msgstr "Vælg to veje med et fælles punkt"
 
 msgid "Select two ways with alone a node in common"
-msgstr "Vælg to veje med kun ét fælles punkt"
+msgstr "Vælg to veje med kun et fælles punkt"
 
 msgid "Create a grid of ways"
 msgstr "Opret et net af veje"
@@ -28571,7 +28679,7 @@ msgid "Add fixed points on spacebar"
 msgstr "Tilføj faste punkter med mellemrumstast"
 
 msgid "Allow edit existing ways"
-msgstr "Tillad at rediger eksisterende veje"
+msgstr "Tillad at redigere eksisterende veje"
 
 msgid "Draw closed polygons only"
 msgstr "Tegn kun lukkede polygoner"
@@ -28932,7 +29040,7 @@ msgid ""
 "appears for the first time, simply try it again. This might have been an "
 "issue with the internet connection."
 msgstr ""
-"En handling opstod under forsøget på at indsende et rettesæt. Hvis det sker "
+"En hændelse opstod under forsøget på at indsende et rettesæt. Hvis det sker "
 "gentagne gange, overvej da at rapportere en fejl via menuen Hjælp. Hvis "
 "denne meddelelse vises for første gang, så prøv igen. Der kan have været et "
 "problem med internetforbindelsen."
@@ -29191,7 +29299,7 @@ msgid "From existing image layer"
 msgstr "Fra eksisterende billedlag"
 
 msgid "Import exception"
-msgstr "Import handling"
+msgstr "Import hændelse"
 
 msgid "Could not import the image ''{0}''!"
 msgstr "Kunne ikke importere billedet ''{0}''!"
@@ -30217,7 +30325,7 @@ msgid "No address was found for this object."
 msgstr "Der blev ikke fundet nogen adresse for dette objekt."
 
 msgid "An unexpected exception occurred:"
-msgstr "Der opstod en uventet handling:"
+msgstr "Der opstod en uventet hændelse:"
 
 msgid "Building Generalization"
 msgstr "Bygnings generalisering"
@@ -30386,7 +30494,7 @@ msgid ""
 "or action canceled"
 msgstr ""
 "By {0} ikke fundet eller ikke tilgængelig\n"
-"eller handling annulleret"
+"eller handling afbrudt"
 
 msgid "Choose from..."
 msgstr "Vælg mellem..."
@@ -30408,8 +30516,7 @@ msgstr ""
 msgid ""
 "Warning: failed to put option pane dialog always on top. Exception was: {0}"
 msgstr ""
-"Advarsel: kunne ikke sætte dialogfanevalg til altid øverst. Hændelsen var: "
-"{0}"
+"Advarsel: kunne ikke sætte dialogfanevalg til altid øverst. Hændelse var: {0}"
 
 msgid ""
 "To enable the cadastre WMS plugin, change\n"
@@ -31347,7 +31454,7 @@ msgid ""
 msgstr ""
 "Undertryk dialogen med forløb, som vises mens der downloades. Ved valg af "
 "denne indstilling er der ingen indikation af at noget bliver gjort, og ingen "
-"måde at annullere overførslen."
+"måde at afbryde overførslen."
 
 msgid "Split area"
 msgstr "Opdel område"
@@ -31748,7 +31855,7 @@ msgid ""
 "Syntax exception in access ruleset:\n"
 "{0}"
 msgstr ""
-"Syntaks handling i adgangs regelsæt:\n"
+"Syntaks hændelse i adgangs regelsæt:\n"
 "{0}"
 
 msgid ""
@@ -33142,7 +33249,7 @@ msgid "View the full text of this license"
 msgstr "Se den fulde ordlyd af denne licens"
 
 msgid "I refuse these terms and conditions. Cancel download."
-msgstr "Jeg afviser disse vilkår og betingelser. Annuller download."
+msgstr "Jeg afviser disse vilkår og betingelser. Afbryder download."
 
 msgid "Module bundled with opendata plugin"
 msgstr "Modul der følger med opendata udvidelse"
@@ -33581,7 +33688,7 @@ msgid ""
 "Exception was: {1}"
 msgstr ""
 "Kunne ikke fortolke modul liste dokument fra websted ''{0}''. Springer over "
-"websted. Handlingen var: {1}"
+"websted. Hændelse var: {1}"
 
 msgid "Processing module list from site ''{0}''"
 msgstr "Behandler modul liste fra webstedet ''{0}''"
@@ -33861,15 +33968,21 @@ msgstr "til forrige værdi (uændret mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Foto geotaggings udvidelse"
 
-msgid "Writing position information to image files..."
-msgstr "Skriver positions information til billedfiler..."
-
 msgid "Could not read mtime."
 msgstr "Kunne ikke læse mtime."
 
 msgid "Could not write mtime."
 msgstr "Kunne ikke skrive mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Skriver positions information til billedfiler..."
+
+msgid "Retry"
+msgstr "Prøv igen"
+
+msgid "Unable to process file ''{0}'':"
+msgstr "Kan ikke behandle fil ''{0}'':"
+
 msgid "File could not be deleted!"
 msgstr "Fil kunne ikke slettes!"
 
@@ -34150,7 +34263,7 @@ msgid "The clipboard data is not an image"
 msgstr "Udklipsholder data er ikke et billede"
 
 msgid "Warning: failed to handle zip file ''{0}''. Exception was: {1}"
-msgstr "Advarsel: kunne ikke håndtere zip fil \"{0}\". Handling var: {1}"
+msgstr "Advarsel: kunne ikke håndtere zip fil \"{0}\". Hændelse var: {1}"
 
 msgid "A calibration file associated to the picture file was found: {0}\n"
 msgstr "En kalibrerings fil knyttet til billedfilen blev fundet: {0}\n"
@@ -34274,7 +34387,7 @@ msgid "Print"
 msgstr "Udskriv"
 
 msgid "Printing has been cancelled."
-msgstr "Udskrivning er blevet annulleret."
+msgstr "Udskrivning er blevet afbrudt."
 
 msgid "Printing stopped"
 msgstr "Udskrivning stoppede"
@@ -34380,6 +34493,9 @@ msgstr "Ret fejl"
 msgid "PT: dummy test warning"
 msgstr "OT: dummy test advarsel"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr "PT: Rute skal sorteres, fandt tag fixme: relation=order members"
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "OT: Rute indeholder et hul, der kan rettes ved at sortere"
 
@@ -34390,6 +34506,9 @@ msgstr ""
 "OT: Rute huller antal kan falde ved at sortere medlemmer. Yderligere "
 "valideringer vil blive påkrævet"
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr "OT: Hul i rute kan lukkes ved at tilføje en enkelt vej"
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
@@ -34494,7 +34613,7 @@ msgid "File \"{0}\" does not exist"
 msgstr "Fil \"{0}\" findes ikke"
 
 msgid "IOException \"{0}\" occurred"
-msgstr "IOException \"{0}\" opstod"
+msgstr "IO hændelse \"{0}\" opstod"
 
 msgid ""
 "There exists no dataset. Try to download data from the server or open an OSM "
@@ -35452,7 +35571,7 @@ msgstr ""
 "kontaktadresse"
 
 msgid "Edit tags"
-msgstr "Ret tags"
+msgstr "Rediger tags"
 
 msgid "Launches the tag editor dialog"
 msgstr "Starter tag-redigeringsdialogen"
@@ -35541,7 +35660,7 @@ msgid "Housenumbers do not match odd/even setting"
 msgstr "Husnummer stemmer ikke med ulige/lige indstilling"
 
 msgid "Segment must be a number greater 1"
-msgstr "Segmenter skal være ét nummer større"
+msgstr "Segmenter skal være et nummer større"
 
 msgid "{0} must be greater than 0"
 msgstr "{0} skal være større end 0"
@@ -35899,7 +36018,7 @@ msgstr "Download underskrevet data"
 
 msgid "Warning: Ignoring exception because task was canceled. Exception: {0}"
 msgstr ""
-"Advarsel: Ignorerer handling da opgaven blev annulleret. Handling: {0}"
+"Advarsel: Ignorerer hændelse fordi opgave blev afbrudt. Hændelse: {0}"
 
 msgid ""
 "Generating new Keypair.\n"
@@ -36880,7 +36999,7 @@ msgid "Start undeleting"
 msgstr "Start gendannelse"
 
 msgid "Close dialog and cancel"
-msgstr "Luk dialog og annuller"
+msgstr "Luk dialog og afbryd"
 
 msgid "Add nodes at intersections"
 msgstr "Tilføj punkter ved overskæringer"
@@ -37516,7 +37635,7 @@ msgstr ""
 "<html>Der er ikke flere forbundne veje at downloade.<br>En potentiel "
 "duplikation af det nu markerede punkt blev dog fundet.<br><br>Det nu "
 "markerede punkt er ''{0}''<br>Det potentielt duplikerede punkt er "
-"''{1}''<br>Forén det duplikerede punkt med det nu markerede punkt og fortsæt "
+"''{1}''<br>Foren det duplikerede punkt med det nu markerede punkt og fortsæt "
 "vej-download?</html>"
 
 msgid "Merge duplicate node?"
diff --git a/i18n/po/de.po b/i18n/po/de.po
index e02e4a0..e549c7f 100644
--- a/i18n/po/de.po
+++ b/i18n/po/de.po
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-11 16:13+0000\n"
-"Last-Translator: RobinD <Unknown>\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-31 06:26+0000\n"
+"Last-Translator: vsandre <Unknown>\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-08-13 04:43+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:43+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: de\n"
 "X-Poedit-SearchPath-0: .\n"
@@ -59,54 +59,9 @@ msgstr ""
 "Das Öffnen von Links wird von der derzeitigen Plattform (''{0}'') nicht "
 "unterstützt"
 
-msgid "Executing platform startup hook"
-msgstr "Plattform-Einschaltmethode wird ausgeführt"
-
-msgid "Building main menu"
-msgstr "Hauptmenü wird aufgebaut"
-
-msgid "Help"
-msgstr "Hilfe"
-
-msgid "Initializing internal boundaries data"
-msgstr "Interne Grenzdaten werden initialisiert"
-
-msgid "Initializing OSM API"
-msgstr "OSM-API wird initialisiert"
-
-msgid "Initializing internal traffic data"
-msgstr "Interne Verkehrsdaten werden initialisiert"
-
-msgid "Initializing validator"
-msgstr "Prüfer wird initialisiert"
-
-msgid "Initializing presets"
-msgstr "Objektvorlagen werden initialisiert"
-
-msgid "Initializing map styles"
-msgstr "Kartenstile werden initialisiert"
-
-msgid "Loading imagery preferences"
-msgstr "Bildeinstellungen werden geladen"
-
-msgid "Updating user interface"
-msgstr "Benutzeroberfläche wird aktualisiert"
-
 msgid "Failed to save default preferences."
 msgstr "Speichern der Standardeinstellungen ist fehlgeschlagen."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ungültige Adresse wird ignoriert: »{0}«"
-
-msgid "Warning"
-msgstr "Achtung"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ungültige Dateiadresse wird ignoriert: »{0}«"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter »downloadgps« unterstützt keine Dateinamen oder Adressen."
-
 msgid "About"
 msgstr "Über"
 
@@ -189,6 +144,9 @@ msgstr "Abbrechen"
 msgid "Click to abort launching external browsers"
 msgstr "Klicken Sie, um den Start externer Browser abzubrechen."
 
+msgid "Warning"
+msgstr "Achtung"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Bitte mindestens ein bereits zum Server hochgeladenes Element (Punkt, Linie "
@@ -486,14 +444,11 @@ msgstr ""
 "* Eine nicht-selbstkreuzende Linie mit maximal zwei ihrer Punkte,\n"
 "* Drei Punkte."
 
-msgid "Download from OSM..."
-msgstr "Von OSM herunterladen …"
-
-msgid "Download map data from the OSM server."
-msgstr "Kartendaten vom OSM-Server herunterladen."
+msgid "Download data"
+msgstr "Daten herunterladen"
 
-msgid "Please select a download area first."
-msgstr "Bitte wählen Sie zunächst einen Ladebereich aus."
+msgid "Download map data from a server of your choice"
+msgstr "Kartendaten von einem Server deiner Wahl herunterladen"
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -502,9 +457,6 @@ msgstr ""
 "<html>Diese Aktion benötigt {0} individuelle Serveranfragen.<br>Möchten Sie "
 "fortfahren?</html>"
 
-msgid "Download data"
-msgstr "Daten herunterladen"
-
 msgid "Download notes in current view"
 msgstr "Hinweise in aktueller Ansicht herunterladen"
 
@@ -573,6 +525,9 @@ msgstr "Nichts zu exportieren. Es sind keine Daten vorhanden."
 msgid "Export GPX file"
 msgstr "GPX-Datei exportieren"
 
+msgid "Help"
+msgstr "Hilfe"
+
 msgid "History"
 msgstr "Chronik"
 
@@ -1150,25 +1105,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Bitte Linien mit Winkel von ungefähr 90 oder 180 Grad auswählen."
 
-msgid "Download from Overpass API ..."
-msgstr "Mittels Overpass-API herunterladen …"
-
-msgid "Download map data from Overpass API server."
-msgstr "Kartendaten mittels Overpass-API laden"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr "Erstelle eine Overpass-Abfrage mit dem Overpass Turbo Abfrage-Wizard"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-"Geben Sie Ihre Overpass-Abfrage unterhalb ein oder erstellen Sie eine durch "
-"Verwendung des  Overpass Turbo Abfrage-Wizards."
-
-msgid "Show/hide Overpass snippet list"
-msgstr "Zeige/Verstecke die Overpass Schnipsel-Liste"
-
 msgid "Paste"
 msgstr "Einfügen"
 
@@ -1798,7 +1734,7 @@ msgid "Performs the data validation"
 msgstr "Datenprüfung ausführen"
 
 msgid "Validating"
-msgstr "Validieren"
+msgstr "Prüfe"
 
 msgid "Test {0}/{1}: Starting {2}"
 msgstr "Test {0}/{1}: {2} starten"
@@ -2564,36 +2500,6 @@ msgstr "Relation zusätzlich auswählen"
 msgid "Select relation"
 msgstr "Relation auswählen"
 
-msgid "<not>"
-msgstr "<nicht>"
-
-msgid "<or>"
-msgstr "<oder>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<linker Elternteil>"
-
-msgid "<right parent>"
-msgstr "<rechter Elternteil>"
-
-msgid "<colon>"
-msgstr "<Doppelpunkt>"
-
-msgid "<equals>"
-msgstr "<Gleichheitszeichen>"
-
-msgid "<key>"
-msgstr "<Schlüssel>"
-
-msgid "<question mark>"
-msgstr "<Fragezeichen>"
-
-msgid "<end-of-file>"
-msgstr "<Dateiende>"
-
 msgid "Search..."
 msgstr "Suchen …"
 
@@ -2899,95 +2805,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Suche in {0} Objekt"
 msgstr[1] "Suche in {0} Objekten"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Der reguläre Ausdruck »{0}« hat einen Fehler an Position {1}.\n"
-"Fehlermeldung:\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Der reguläre Ausdruck »{0}« hat einen Fehler. Fehlermeldung:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Kann Zeitstempel ''{0}'' nicht parsen"
-
-msgid "Expecting {0} after {1}"
-msgstr "{0} wird nach {1} erwartet"
-
-msgid "Range of primitive ids expected"
-msgstr "Bereich von Objektkennungen erwartet"
-
-msgid "Range of changeset ids expected"
-msgstr "Bereich von Änderungssatzkennungen erwartet"
-
-msgid "Range of versions expected"
-msgstr "Bereich von Versionsnummern erwartet"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Schlüssel kann bei Gleichheitsoperator nicht leer sein. Beispiel: feld=wert"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Unbekannter OSM-Typ: {0}. Erlaubte Werte sind \"node\", \"way\" oder "
-"\"relation\"."
-
-msgid "Positive integer expected"
-msgstr "Positive Ganzzahl erwartet"
-
-msgid "Range of numbers expected"
-msgstr "Erwarte einen Zahlenbereich"
-
-msgid "Unknown preset name: "
-msgstr "Unbekannter Vorlagen-Name: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Unerwartete Kennung: erwartet {0}, erhalten {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Fehler beim Einlesen des MapCSS-Selektors"
-
-msgid "Unexpected token: {0}"
-msgstr "Unerwartete Daten: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Fehlendes Argument für ''OR''"
-
-msgid "Missing parameter for XOR"
-msgstr "Fehlender Parameter für XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Fehlender Operator für ''NOT''."
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Automatisches Abschneiden der Wertmarkierung ''{0}'' am gelöschten Objekt {1}"
@@ -3010,9 +2827,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Anforderungen des API verletzt"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Gegenseitige Abhängigkeiten zwischen den Relationen:"
-
 msgid "Removed obsolete tags"
 msgstr "Veraltete Merkmale entfernen"
 
@@ -3393,66 +3207,12 @@ msgstr "Rollen in Relationen beziehen sich auf"
 msgid "Automatic tag correction"
 msgstr "Automatische Merkmalskorrektur"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Verzeichnis {0} konnte nicht erstellt werden, Automatische Sicherungen "
-"wurden deaktiviert."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Dateiname {0} konnte nicht benutzt werden, ein anderer Dateiname wird "
-"verwendet."
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Ein-/Ausgabefehler beim speichern der Datei. Automatische Sicherungen "
-"deaktiviert: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Fehler bei Löschung der alten Backup-Datei {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Ihre Arbeit wurde automatisch gespeichert."
-
-msgid "Restoring files"
-msgstr "Dateien wiederherstellen"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Sicherungsdatei {0} kann nicht gelöscht werden"
-
-msgid "Unable to delete PID file {0}"
-msgstr "PID-Datei {0} kann nicht gelöscht werden"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Archivierte Sicherungsdatei {0} kann nicht gelöscht werden"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Ungültiger Breitenwert ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Ungültiger Längenwert ''{0}''"
 
-msgid "Question"
-msgstr "Frage"
-
-msgid "Message"
-msgstr "Nachricht"
-
-msgid "Enter text"
-msgstr "Text eingeben"
-
-msgid "Installing plugins"
-msgstr "Erweiterungen installieren"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Die Einstellungsdateien möchte einen Wert an <b>{0}</b> anhängen,<br/> "
-"aber dessen Standardwert ist nicht bekannt.<br/> Bitte aktivieren Sie die "
-"entsprechende Funktion manuell und wiederholen Sie den Import."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 "Erstellen des fehlenden Zwischenspeicherverzeichnisses fehlgeschlagen: {0}"
@@ -3567,6 +3327,15 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "Einstellung {0} wird nicht länger benutzt und wurde deshalb entfernt."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Die Einstellungsdateien möchte einen Wert an <b>{0}</b> anhängen,<br/> "
+"aber dessen Standardwert ist nicht bekannt.<br/> Bitte aktivieren Sie die "
+"entsprechende Funktion manuell und wiederholen Sie den Import."
+
 msgid "Metric"
 msgstr "Metrisch"
 
@@ -3709,6 +3478,17 @@ msgstr ""
 msgid "Note"
 msgstr "Hinweis"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Empfang der OAuth-Zugangsmarke vom Berechtigungsverwalter fehlgeschlagen."
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Aktueller Berechtigungsverwalter ist vom Typ ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Speichern der OAuth-Zugangsmarke beim Berechtigungsverwalter fehlgeschlagen."
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Kennung >= 0 erwartet, jedoch {0} erhalten."
 
@@ -3725,6 +3505,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Ein Objekt mit Kennung = 0 darf nicht unsichtbar sein."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Gegenseitige Abhängigkeiten zwischen den Relationen:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3778,6 +3561,59 @@ msgstr "Daten vereinen …"
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' in {1} beendet"
 
+msgid "incomplete"
+msgstr "unvollständig"
+
+msgid "House {0}"
+msgstr "Haus {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Hausnummer {0} in {1}"
+
+msgid "House number {0}"
+msgstr "Hausnummer {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "Punkt"
+msgstr[1] "Punkte"
+
+msgid "highway"
+msgstr "Straße"
+
+msgid "railway"
+msgstr "Gleise"
+
+msgid "waterway"
+msgstr "Gewässer"
+
+msgid "landuse"
+msgstr "Landfläche"
+
+msgid "building"
+msgstr "Gebäude"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} Punkt"
+msgstr[1] "{0} Punkte"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} Element"
+msgstr[1] "{0} Elemente"
+
+msgid "public transport"
+msgstr "Öffentlicher Verkehr"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "Relation"
+msgstr[1] "Relationen"
+
+msgid "Changeset {0}"
+msgstr "Änderungssatz {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Fehler in Filter <code>{0}</code>:<br>{1}"
 
@@ -3815,21 +3651,11 @@ msgstr ""
 "Zwei Objekte mit unterschiedlichen Kennungen können nicht zusammengeführt "
 "werden. Die Kennung dieses Objekts ist {0}, die Kennung des anderen {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "Punkt"
-msgstr[1] "Punkte"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "Linie"
 msgstr[1] "Linien"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "Relation"
-msgstr[1] "Relationen"
-
 msgid "closedway"
 msgstr "geschlossene Linie"
 
@@ -3869,6 +3695,125 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parameter {0} außerhalb des Bereichs 0..{1}: Wert ist {2}"
 
+msgid "<not>"
+msgstr "<nicht>"
+
+msgid "<or>"
+msgstr "<oder>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<linker Elternteil>"
+
+msgid "<right parent>"
+msgstr "<rechter Elternteil>"
+
+msgid "<colon>"
+msgstr "<Doppelpunkt>"
+
+msgid "<equals>"
+msgstr "<Gleichheitszeichen>"
+
+msgid "<key>"
+msgstr "<Schlüssel>"
+
+msgid "<question mark>"
+msgstr "<Fragezeichen>"
+
+msgid "<end-of-file>"
+msgstr "<Dateiende>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Der reguläre Ausdruck »{0}« hat einen Fehler an Position {1}.\n"
+"Fehlermeldung:\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Der reguläre Ausdruck »{0}« hat einen Fehler. Fehlermeldung:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Kann Zeitstempel ''{0}'' nicht parsen"
+
+msgid "Expecting {0} after {1}"
+msgstr "{0} wird nach {1} erwartet"
+
+msgid "Range of primitive ids expected"
+msgstr "Bereich von Objektkennungen erwartet"
+
+msgid "Range of changeset ids expected"
+msgstr "Bereich von Änderungssatzkennungen erwartet"
+
+msgid "Range of versions expected"
+msgstr "Bereich von Versionsnummern erwartet"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Schlüssel kann bei Gleichheitsoperator nicht leer sein. Beispiel: feld=wert"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Unbekannter OSM-Typ: {0}. Erlaubte Werte sind \"node\", \"way\" oder "
+"\"relation\"."
+
+msgid "Positive integer expected"
+msgstr "Positive Ganzzahl erwartet"
+
+msgid "Range of numbers expected"
+msgstr "Erwarte einen Zahlenbereich"
+
+msgid "Unknown preset name: "
+msgstr "Unbekannter Vorlagen-Name: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Fehler beim Einlesen des MapCSS-Selektors"
+
+msgid "Unexpected token: {0}"
+msgstr "Unerwartete Daten: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Fehlendes Argument für ''OR''"
+
+msgid "Missing parameter for XOR"
+msgstr "Fehlender Parameter für XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Fehlender Operator für ''NOT''."
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Unerwartete Kennung: erwartet {0}, erhalten {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Laden der Kartenrenderer-Klasse ''{0}'' fehlgeschlagen. Die Klasse wurde "
@@ -3954,6 +3899,123 @@ msgstr "Erwartetes Element ''{0}'', aber ''{1}'' erhalten"
 msgid "value expected"
 msgstr "Wert erwartet"
 
+msgid "Short Description:"
+msgstr "Kurzbeschreibung:"
+
+msgid "URL:"
+msgstr "Adresse:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Internetseite:"
+
+msgid "Description:"
+msgstr "Beschreibung:"
+
+msgid "Version:"
+msgstr "Version:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimale JOSM-Version:"
+
+msgid "by {0}"
+msgstr "von {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM Standard (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Interner Stil zur Nutzung als Basis für zur Laufzeit wechselbare "
+"Einblendungsstile"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "Hauptstil von Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Interne Objektvorlage"
+
+msgid "The default preset for JOSM"
+msgstr "Die Standardvorlage von JOSM"
+
+msgid "Addresses"
+msgstr "Adressen"
+
+msgid "Checks for errors on addresses"
+msgstr "Prüft auf Fehler in Adressen"
+
+msgid "Tag combinations"
+msgstr "Merkmalskombinationen"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Prüft auf fehlende Merkmale oder verdächtige Kombinationen"
+
+msgid "Deprecated features"
+msgstr "Veraltete Eigenschaften"
+
+msgid "Checks for deprecated features"
+msgstr "Auf veraltete Eigenschaften überprüfen"
+
+msgid "Geometry"
+msgstr "Geometrie"
+
+msgid "Checks for geometry errors"
+msgstr "Auf Geometriefehler überprüfen"
+
+msgid "Highways"
+msgstr "Straßen"
+
+msgid "Checks for errors on highways"
+msgstr "Prüft auf Fehler auf Straßen"
+
+msgid "Multiple values"
+msgstr "Mehrere Werte"
+
+msgid "Checks for wrong multiple values"
+msgstr "Prüft auf fälschliche Verwendung von mehreren Werten"
+
+msgid "Numeric values"
+msgstr "Zahlenwerte"
+
+msgid "Checks for wrong numeric values"
+msgstr "Auf falsche Zahlenwerte überprüfen"
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr "Prüft auf Fehler auf religiösen Objekten"
+
+msgid "Relations"
+msgstr "Relationen"
+
+msgid "Checks for errors on relations"
+msgstr "Prüft auf Fehler auf Relationen"
+
+msgid "Territories"
+msgstr "Territorien"
+
+msgid "Checks for territories-specific features"
+msgstr "Prüft auf territorialspezifische Eigenschaften"
+
+msgid "Unnecessary tags"
+msgstr "Unnötige Merkmale"
+
+msgid "Checks for unnecessary tags"
+msgstr "Prüft auf unnötige Merkmale"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Prüft auf falsche Wikipedia-Merkmale"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM-Projektion (''+proj=utm'') erfordert Parameter ''+zone=...''."
 
@@ -4150,9 +4212,6 @@ msgstr "Adresse enthält ein ungültiges Fragment: {0}"
 msgid "URL validator"
 msgstr "URL-Prüfer"
 
-msgid "Addresses"
-msgstr "Adressen"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Auf Fehler in Adressen und associatedStreet-Relationen überprüfen."
 
@@ -4347,9 +4406,6 @@ msgstr "Punkte doppelt in Linie"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Prüft auf Linien mit identischen aufeinanderfolgenden Punkten"
 
-msgid "Highways"
-msgstr "Straßen"
-
 msgid "Performs semantic checks on highways."
 msgstr "Semantik-Prüfungen bei Straßen"
 
@@ -4358,8 +4414,8 @@ msgstr "Ungültiger Kreisverkehr (highway: {0} anstatt {1})"
 
 msgid "Highway link is not linked to adequate highway/link"
 msgstr ""
-"Straßenanschluss ist nicht mit mit entsprechender Straße bzw. mit "
-"entsprechendem Anschluss verknüpft"
+"Straßenanschluss ist nicht mit entsprechender Straße bzw. mit entsprechendem "
+"Anschluss verknüpft"
 
 msgid "Missing pedestrian crossing information"
 msgstr "Fehlende Angabe zum Fußgängerübergang"
@@ -4926,9 +4982,6 @@ msgstr "Wasserstraßentyp {0}"
 msgid "boundary type {0}"
 msgstr "Grenz-Typ {0}"
 
-msgid "building"
-msgstr "Gebäude"
-
 msgid "area"
 msgstr "Fläche"
 
@@ -5049,45 +5102,14 @@ msgstr "Nicht noch einmal anzeigen (Sitzung)"
 msgid "Do not show again (remembers choice)"
 msgstr "Nicht noch einmal anzeigen (merkt sich die Auswahl)"
 
-msgid "incomplete"
-msgstr "unvollständig"
-
-msgid "House {0}"
-msgstr "Haus {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Hausnummer {0} in {1}"
-
-msgid "House number {0}"
-msgstr "Hausnummer {0}"
-
-msgid "highway"
-msgstr "Straße"
-
-msgid "railway"
-msgstr "Gleise"
-
-msgid "waterway"
-msgstr "Gewässer"
-
-msgid "landuse"
-msgstr "Landfläche"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} Punkt"
-msgstr[1] "{0} Punkte"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} Element"
-msgstr[1] "{0} Elemente"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ungültige Adresse wird ignoriert: »{0}«"
 
-msgid "public transport"
-msgstr "Öffentlicher Verkehr"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ungültige Dateiadresse wird ignoriert: »{0}«"
 
-msgid "Changeset {0}"
-msgstr "Änderungssatz {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter »downloadgps« unterstützt keine Dateinamen oder Adressen."
 
 msgid "Precondition violation"
 msgstr "Vorbedingung nicht erfüllt"
@@ -5179,6 +5201,72 @@ msgstr ""
 "Für den Parameter ''{0}'' wird ein nicht-leerer Wert benötigt (versucht "
 "wurde: ''{1}'')"
 
+msgid "Outdated Java version"
+msgstr "Veraltete Java-Version"
+
+msgid "Update Java"
+msgstr "Java aktualisieren"
+
+msgid "You are running version {0} of Java."
+msgstr "Sie verwenden die Java-Version {0}"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Diese Version wird von {0} seit {1} nicht mehr unterstützt. Deshalb wird von "
+"der Verwendung abgeraten."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM wird mit dieser Version bald nicht mehr funktionieren; wir empfehlen "
+"eindringlich eine Aktualisierung auf Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Sie könnten mit kritischen Java-Fehlern konfrontiert werden. Wir empfehlen "
+"Ihnen, auf Java {0} zu aktualisieren."
+
+msgid "Would you like to update now ?"
+msgstr "Möchten Sie jetzt die Aktualisierung durchführen?"
+
+msgid "Starting file watcher"
+msgstr "Dateiwächter starten"
+
+msgid "Executing platform startup hook"
+msgstr "Plattform-Einschaltmethode wird ausgeführt"
+
+msgid "Building main menu"
+msgstr "Hauptmenü wird aufgebaut"
+
+msgid "Updating user interface"
+msgstr "Benutzeroberfläche wird aktualisiert"
+
+msgid "Initializing internal boundaries data"
+msgstr "Interne Grenzdaten werden initialisiert"
+
+msgid "Initializing OSM API"
+msgstr "OSM-API wird initialisiert"
+
+msgid "Initializing internal traffic data"
+msgstr "Interne Verkehrsdaten werden initialisiert"
+
+msgid "Initializing validator"
+msgstr "Prüfer wird initialisiert"
+
+msgid "Initializing presets"
+msgstr "Objektvorlagen werden initialisiert"
+
+msgid "Initializing map styles"
+msgstr "Kartenstile werden initialisiert"
+
+msgid "Loading imagery preferences"
+msgstr "Bildeinstellungen werden geladen"
+
 msgid "usage"
 msgstr "Verwendung"
 
@@ -5684,6 +5772,93 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Der aktuelle Wert ist kein gültiger Kachelindex für die angegebene Zoomstufe"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Sie sind auf einen Fehler in JOSM gestoßen."
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Eine unerwartete Ausnahme ist aufgetreten.\n"
+"Dies ist immer ein Programmierfehler. Wenn Sie die neueste Version von JOSM "
+"ausführen, seien Sie bitte freundlich und füllen einen Fehlerbericht aus."
+
+msgid "Debug information"
+msgstr "Fehlersuchinformationen"
+
+msgid "Manually report at:"
+msgstr "Manuell melden bei:"
+
+msgid "Is JOSM up to date?"
+msgstr "Ist JOSM auf dem neuesten Stand?"
+
+msgid "Send bug report"
+msgstr "Fehlerbericht senden"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Wenn Sie die neueste Version von JOSM und der Erweiterungen verwenden, "
+"füllen Sie bitte einen Fehlerbericht im Bugtracker aus.\n"
+"Die Fehlerinformationen sollten bereits vorausgefüllt sein. Bitte "
+"beschreiben detailliert Sie, wie der Fehler nachvollzogen werden kann."
+
+msgid "Report Bug"
+msgstr "Programmfehler melden"
+
+msgid "Suppress this error for this session."
+msgstr "Diesen Fehler für diese Sitzung unterdrücken."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Weitere Fehlermeldungen für diese Sitzung unterdrücken."
+
+msgid "Ignore this error."
+msgstr "Diesen Fehler ignorieren."
+
+msgid "Include the system status report."
+msgstr "Systemstatusbericht miteinbeziehen."
+
+msgid "Include information about the data you were working on."
+msgstr ""
+"Informationen über die Daten, an denen Sie gearbeitet haben, miteinbeziehen."
+
+msgid "Include all stack traces."
+msgstr "Stapelspeicherzurückverfolgungen miteinbeziehen."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ihre aktuelle Version von JOSM ist {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM sucht nach Aktualisierungen..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+"Während der Überprüfung, ob Ihre JOSM-Instanz auf dem neuesten Stand ist, "
+"ist ein Fehler aufgetreten."
+
+msgid "JOSM is up to date."
+msgstr "JOSM ist auf dem neuesten Stand."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM ist auf einem alten Stand. Die aktuelle Version ist {0}. Versuchen Sie, "
+"JOSM zu aktualisieren."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Bevor Sie einen Fehlerbericht senden, stellen Sie sicher, dass Sie die "
+"neueste Version von JOSM verwenden:"
+
+msgid "Update JOSM"
+msgstr "JOSM aktualisieren"
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikt-Hintergrund: Kein Konflikt"
 
@@ -6459,6 +6634,23 @@ msgstr ""
 "die unvollständigen Objekte entfernt. Wollen Sie die Daten ausschließlich "
 "der unvollständigen Objekte einfügen?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Wollen Sie diese Merkmale einfügen?"
+
+msgid "Clear buffer"
+msgstr "Puffer löschen"
+
+msgid "Ignore warnings"
+msgstr "Ignoriere Warnungen"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Es können leider keine Merkmale aus der Zwischenablage eingefügt "
+"werden, da diese keine JOSM-Objekte und keinen passenden Text enthält. "
+"</p></html>"
+
 msgid "For selected objects only"
 msgstr "Nur für ausgewählte Objekte"
 
@@ -7070,9 +7262,6 @@ msgstr "Quelle"
 msgid "Title:"
 msgstr "Titel:"
 
-msgid "URL:"
-msgstr "Adresse:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Eingebauter Stil, Interner Pfad:"
 
@@ -7191,9 +7380,6 @@ msgstr ""
 "Ungültige Kennungsliste angegeben\n"
 "Es kann nicht fortgefahren werden."
 
-msgid "Relations"
-msgstr "Relationen"
-
 msgid "Open a list of all relations."
 msgstr "Eine Liste aller Relationen öffnen."
 
@@ -8730,26 +8916,6 @@ msgstr "Als Breitengrad wird ein Wert im Intervall [-90,90] erwartet."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Als Längengrad wird ein Wert im Intervall [-180,180] erwartet."
 
-msgid "Data Sources and Types:"
-msgstr "Datenquellen und -typen:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap-Daten"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Auswählen, um OSM-Datenobjekte im ausgewählten Ladebereich  herunterzuladen."
-
-msgid "Raw GPS data"
-msgstr "GPS-Rohdaten"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Auswählen, um GPS-Spuren im ausgewählten Ladebereich herunterzuladen."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Auswählen, um Hinweise im ausgewählten Ladebereich herunterzuladen."
-
 msgid "Download as new layer"
 msgstr "Als neue Ebene laden"
 
@@ -8784,15 +8950,6 @@ msgstr ""
 "Linksklick&Bewegen zum Gebiet markieren, Pfeile oder rechte Maustaste zum "
 "Verschieben der Karte, Mausrad oder +/- zum Zoomen."
 
-msgid "No area selected yet"
-msgstr "Es ist kein Bereich ausgewählt"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Bereich zu groß, der Server wird das Laden wahrscheinlich ablehnen"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Bereich korrekt, Größe ist wahrscheinlich akzeptabel für den Server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 "Klicken, um das Fenster zu schließen und das Herunterladen abzubrechen"
@@ -8800,15 +8957,6 @@ msgstr ""
 msgid "Click to download the currently selected area"
 msgstr "Klicken Sie, um die derzeitig ausgewählten Bereiche herunterzuladen"
 
-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>Weder <strong>{0}</strong> noch <strong>{1}</strong> noch "
-"<strong>{2}</strong> ist aktiviert.<br>Bitte entweder OSM-Daten, GPX-Daten, "
-"Hinweise oder mehrere davon zum Herunterladen auswählen.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Verweise herunterladen (Eltern-Relationen)"
 
@@ -8833,6 +8981,97 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr "Verweise herunterladen (Eltern-Relationen und Linien)"
 
+msgid "Download from OSM"
+msgstr "Von OSM herunterladen"
+
+msgid "Data Sources and Types:"
+msgstr "Datenquellen und -typen:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap-Daten"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Auswählen, um OSM-Datenobjekte im ausgewählten Ladebereich  herunterzuladen."
+
+msgid "Raw GPS data"
+msgstr "GPS-Rohdaten"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Auswählen, um GPS-Spuren im ausgewählten Ladebereich herunterzuladen."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Auswählen, um Hinweise im ausgewählten Ladebereich herunterzuladen."
+
+msgid "Please select a download area first."
+msgstr "Bitte wählen Sie zunächst einen Ladebereich aus."
+
+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>Weder <strong>{0}</strong> noch <strong>{1}</strong> noch "
+"<strong>{2}</strong> ist aktiviert.<br>Bitte entweder OSM-Daten, GPX-Daten, "
+"Hinweise oder mehrere davon zum Herunterladen auswählen.</html>"
+
+msgid "No area selected yet"
+msgstr "Es ist kein Bereich ausgewählt"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Bereich zu groß, der Server wird das Laden wahrscheinlich ablehnen"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Bereich korrekt, Größe ist wahrscheinlich akzeptabel für den Server"
+
+msgid "Download from Overpass API"
+msgstr "Von Overpass API herunterladen"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "Erstelle eine Overpass-Abfrage mit dem Overpass Turbo Abfrage-Wizard"
+
+msgid "Query Wizard"
+msgstr "Abfrage-Wizard"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+"Geben Sie Ihre Overpass-Abfrage unterhalb ein oder erstellen Sie eine durch "
+"Verwendung des  Overpass Turbo Abfrage-Wizards."
+
+msgid "Your saved queries:"
+msgstr "Ihre gespeicherten Abfragen:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Zeige/Verstecke die Overpass Schnipsel-Liste"
+
+msgid "Overpass query:"
+msgstr "Overpass Abfrage:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+"Sie gaben eine leere Abfrage ein. Wollen Sie statt dessen alle Daten in "
+"diesem Bereich herunterladen?"
+
+msgid "Download all data?"
+msgstr "Alle Daten herunterladen?"
+
+msgid "Add new snippet"
+msgstr "Neues Schnipsel hinzufügen"
+
+msgid "Delete selected snippet"
+msgstr "Ausgewählten Schnipsel entfernen"
+
+msgid "Edit selected snippet"
+msgstr "Ausgewähltes Schnipsel bearbeiten"
+
+msgid "history"
+msgstr "Chronik"
+
 msgid "Please select an item first"
 msgstr "Bitte wählen Sie zuerst ein Objekt aus"
 
@@ -8875,9 +9114,6 @@ msgstr "Der Overpass Wizard konnte die folgende Abfrage nicht analysieren:"
 msgid "Parse error"
 msgstr "Auswertungsfehler"
 
-msgid "Query Wizard"
-msgstr "Abfrage-Wizard"
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9519,6 +9755,18 @@ msgstr "Mit dem angegebenen Benutzernamen und Passwort authentifizieren"
 msgid "Cancel authentication"
 msgstr "Legitimierung abbrechen"
 
+msgid "Question"
+msgstr "Frage"
+
+msgid "Message"
+msgstr "Nachricht"
+
+msgid "Enter text"
+msgstr "Text eingeben"
+
+msgid "Installing plugins"
+msgstr "Erweiterungen installieren"
+
 msgid "Downloading file"
 msgstr "Datei wird heruntergeladen"
 
@@ -10105,10 +10353,6 @@ msgstr "Objekte zum Hochladen auswählen"
 msgid "Cancel uploading"
 msgstr "Hochladen abbrechen"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Unerwarteter Wert für Schlüssel ''{0}'' in den Einstellungen: ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Einen Änderungssatz füllen und zurück zum Hochlade-Dialog"
 
@@ -10194,6 +10438,193 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} zu löschendes Objekt:"
 msgstr[1] "{0} zu löschende Objekte:"
 
+msgid "All Formats"
+msgstr "Alle Formate"
+
+msgid "Could not export ''{0}''."
+msgstr "Kann \"{0}\" nicht exportieren"
+
+msgid "Could not import ''{0}''."
+msgstr "Konnte ''{0}'' nicht importieren."
+
+msgid "Could not import files."
+msgstr "Dateien konnten nicht importiert werden."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Die Datei ''{0}'' konnte nicht gelesen werden.<br>Fehlermeldung: "
+"<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Dateien konnten nicht gelesen werden.<br>Fehlermeldung:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON-Dateien"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Ebene ''{0}'' nicht unterstützt"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Anmerkung: Die GPL ist nicht kompatibel mit der OSM-Lizenz. Laden Sie keine "
+"GPL-lizenzierten Spuren hoch."
+
+msgid "GPS track description"
+msgstr "Beschreibung der GPS-Spur"
+
+msgid "Add author information"
+msgstr "Information zum Autor hinzufügen."
+
+msgid "Real name"
+msgstr "Voller Name"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Vordefiniert"
+
+msgid "Copyright year"
+msgstr "Jahr des Copyrights"
+
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgid "Export options"
+msgstr "Export-Einstellungen"
+
+msgid "Export and Save"
+msgstr "Exportieren und Speichern"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Fehler beim Exportieren von {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Eine vordefinierte Lizenz auswählen"
+
+msgid "GPX Files"
+msgstr "GPX-Dateien"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Einlesen der Daten für Ebene ''{0}'' fehlgeschlagen"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Fehler beim Einlesen der GPX-Daten für Ebene ''{0}''. Nur ein Teil der Datei "
+"wird verfügbar sein."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Fehler beim Einlesen der GPX-Datei ''{0}''. Nur ein Teil der Datei wird "
+"verfügbar sein."
+
+msgid "Image Files"
+msgstr "Bilddateien"
+
+msgid "folder"
+msgstr "Verzeichnis"
+
+msgid "Looking for image files"
+msgstr "Nach Bilddateien suchen …"
+
+msgid "No image files found."
+msgstr "Keine Bilddateien gefunden."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183-Dateien"
+
+msgid "Coordinates imported: {0}"
+msgstr "Importierte Koordinaten: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Ungültige Einträge: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Prüfsummenfehler: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Unbekannte Einträge: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Leere Koordinaten: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA-Einlesen erfolgreich:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA-Einlesen fehlgeschlagen!"
+
+msgid "Note Files"
+msgstr "OSM-Hinweisdateien"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM-Serverdateien (bzip2-komprimiert)"
+
+msgid "OsmChange File"
+msgstr "OsmChange-Datei"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Die Datei \"{0}\" existiert nicht"
+
+msgid "No data found in file {0}."
+msgstr "Keine Daten in Datei {0} gefunden."
+
+msgid "Open OsmChange file"
+msgstr "OsmChange-Datei öffnen"
+
+msgid "OSM Server Files"
+msgstr "OSM-Serverdateien"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Beim Speichern ist ein Fehler aufgetreten.<br>Der Fehler "
+"lautet:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Beim Wiederherstellen der Sicherheitskopie ist ein Fehler "
+"aufgetreten.<br>Der Fehler lautet:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM-Serverdateien (gzip-komprimiert)"
+
+msgid "Invalid dataset"
+msgstr "Ungültiger Datensatz"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Keine Daten für Ebene ''{0}'' gefunden."
+
+msgid "No data found in file ''{0}''."
+msgstr "Keine Daten in Datei ''{0}'' gefunden."
+
+msgid "Open OSM file"
+msgstr "OSM-Datei öffnen"
+
+msgid "Validation Error Files"
+msgstr "Prüffehler-Datei"
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS-Dateien (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "WMS-Datei-Version nicht unterstützt; gefunden {0}, erwartet {1}"
+
 msgid "Native projections"
 msgstr "Standardprojektionen"
 
@@ -10303,6 +10734,39 @@ msgstr "Diese Meldung nicht mehr anzeigen"
 msgid "Hide this message and never show it again"
 msgstr "Diese Meldung ausblenden und nie wieder anzeigen"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Verzeichnis {0} konnte nicht erstellt werden, Automatische Sicherungen "
+"wurden deaktiviert."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Dateiname {0} konnte nicht benutzt werden, ein anderer Dateiname wird "
+"verwendet."
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Ein-/Ausgabefehler beim speichern der Datei. Automatische Sicherungen "
+"deaktiviert: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Fehler bei Löschung der alten Backup-Datei {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Ihre Arbeit wurde automatisch gespeichert."
+
+msgid "Restoring files"
+msgstr "Dateien wiederherstellen"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Sicherungsdatei {0} kann nicht gelöscht werden"
+
+msgid "Unable to delete PID file {0}"
+msgstr "PID-Datei {0} kann nicht gelöscht werden"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Archivierte Sicherungsdatei {0} kann nicht gelöscht werden"
+
 msgid "Customize Color"
 msgstr "Farben anpassen"
 
@@ -10406,6 +10870,9 @@ msgstr "Hinweise insgesamt:"
 msgid "Changes need uploading?"
 msgstr "Änderungen erfordern Hochladen?"
 
+msgid "Save Note file"
+msgstr "Speichere Notizen-Datei"
+
 msgid "outside downloaded area"
 msgstr "Außerhalb des heruntergeladenen Bereichs"
 
@@ -10481,6 +10948,9 @@ msgstr "Prüffehler"
 msgid "No validation errors"
 msgstr "Keine Prüffehler"
 
+msgid "Save Validation errors file"
+msgstr "Speichere Prüffehler-Datei"
+
 msgid "Set WMS Bookmark"
 msgstr "WMS-Lesezeichen erstellen"
 
@@ -11113,9 +11583,6 @@ msgstr "(Die Adresse lautet: "
 msgid "Select the map painting styles"
 msgstr "Wählen Sie den Kartenstil"
 
-msgid "loading style ''{0}''..."
-msgstr "Stil ''{0}'' wird geladen …"
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11129,6 +11596,9 @@ msgstr[1] ""
 "Beim Laden dieses Stils traten {0} Fehler auf. Wählen Sie ''Info'' aus dem "
 "Rechtsklick-Menü, um weitere Einzelheiten zu erfahren."
 
+msgid "loading style ''{0}''..."
+msgstr "Stil ''{0}'' wird geladen …"
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Kartenstile konnten nicht von ''{0}'' geladen werden. Fehler war: {1}"
@@ -11682,27 +12152,6 @@ msgstr "Erweiterungen herunterladen"
 msgid "Icon paths:"
 msgstr "Bild-Verzeichnisse"
 
-msgid "Short Description:"
-msgstr "Kurzbeschreibung:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Internetseite:"
-
-msgid "Description:"
-msgstr "Beschreibung:"
-
-msgid "Version:"
-msgstr "Version:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimale JOSM-Version:"
-
-msgid "by {0}"
-msgstr "von {0}"
-
 msgid "Name (optional):"
 msgstr "Name (optional):"
 
@@ -12898,21 +13347,6 @@ msgstr ""
 "Warnung: Unzulässiges Format für einen Eintrag in der Stil-Liste ''{0}''. "
 "Der Eintrag ist ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM Standard (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Interner Stil zur Nutzung als Basis für zur Laufzeit wechselbare "
-"Einblendungsstile"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "Hauptstil von Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Karten-Einstellungen"
 
@@ -13012,12 +13446,6 @@ msgstr ""
 "Warnung: Ungültiges Format ''{1}'' des Eintrags in der Objektvorlagenliste "
 "''{0}''."
 
-msgid "Internal Preset"
-msgstr "Interne Objektvorlage"
-
-msgid "The default preset for JOSM"
-msgstr "Die Standardvorlage von JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Erweiterung {0} wird noch von dieser Erweiterung benötigt:"
@@ -13537,9 +13965,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Empfang der OSM-Berechtigungen vom Berechtigungsverwalter fehlgeschlagen."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Aktueller Berechtigungsverwalter ist vom Typ ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Speichern der OSM-Berechtigungen beim Berechtigungsverwalter fehlgeschlagen."
@@ -13560,14 +13985,6 @@ msgstr ""
 "Wie lange muss eine Notiz geschlossen sein muss, um nicht mehr "
 "heruntergeladen zu werden"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Empfang der OAuth-Zugangsmarke vom Berechtigungsverwalter fehlgeschlagen."
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Speichern der OAuth-Zugangsmarke beim Berechtigungsverwalter fehlgeschlagen."
-
 msgid "Save to preferences"
 msgstr "Einstellungen speichern"
 
@@ -13773,69 +14190,6 @@ msgstr ""
 "Warnung: Unzulässiges Format für einen Eintrag in der Regel-Liste ''{0}''. "
 "Der Eintrag ist ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Prüft auf Fehler in Adressen"
-
-msgid "Tag combinations"
-msgstr "Merkmalskombinationen"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Prüft auf fehlende Merkmale oder verdächtige Kombinationen"
-
-msgid "Deprecated features"
-msgstr "Veraltete Eigenschaften"
-
-msgid "Checks for deprecated features"
-msgstr "Auf veraltete Eigenschaften überprüfen"
-
-msgid "Geometry"
-msgstr "Geometrie"
-
-msgid "Checks for geometry errors"
-msgstr "Auf Geometriefehler überprüfen"
-
-msgid "Checks for errors on highways"
-msgstr "Prüft auf Fehler auf Straßen"
-
-msgid "Multiple values"
-msgstr "Mehrere Werte"
-
-msgid "Checks for wrong multiple values"
-msgstr "Prüft auf fälschliche Verwendung von mehreren Werten"
-
-msgid "Numeric values"
-msgstr "Zahlenwerte"
-
-msgid "Checks for wrong numeric values"
-msgstr "Auf falsche Zahlenwerte überprüfen"
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr "Prüft auf Fehler auf religiösen Objekten"
-
-msgid "Checks for errors on relations"
-msgstr "Prüft auf Fehler auf Relationen"
-
-msgid "Territories"
-msgstr "Territorien"
-
-msgid "Checks for territories-specific features"
-msgstr "Prüft auf territorialspezifische Eigenschaften"
-
-msgid "Unnecessary tags"
-msgstr "Unnötige Merkmale"
-
-msgid "Checks for unnecessary tags"
-msgstr "Prüft auf unnötige Merkmale"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Prüft auf falsche Wikipedia-Merkmale"
-
 msgid "Tag checker rules"
 msgstr "Eigenschaftsprüfer-Regeln"
 
@@ -14096,6 +14450,38 @@ msgstr "Alle Dateien (*.*)"
 msgid "Received error page:"
 msgstr "Fehlerseite erhalten:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Voreinstellung des Schlüssels \"{0}\" enthält \"{1}\" nicht. Fenstergröße "
+"kann nicht aus den Einstellungen geladen werden."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Einstellung mit Schlüssel \"{0}\" liefert keinen Ganzzahlwert für \"{1}\", "
+"sondern {2}. Fenstergröße kann nicht aus den Einstellungen geladen werden."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Das Feld \"{1}\" in den Einstellungen mit Schlüssel \"{0}\" konnte nicht "
+"ausgelesen werden. Der Fehler war: {2}. Fenstergröße kann nicht aus den "
+"Einstellungen geladen werden."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Voreinstellung des Schlüssels \"{0}\" existiert nicht. Fenstergröße kann "
+"nicht aus den Einstellungen geladen werden."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ungültige Geometrie wird ignoriert: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. Breite"
 
@@ -14238,9 +14624,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Gelöschtes Element {0} wird in der Relation {1} verwendet"
 
-msgid "All Formats"
-msgstr "Alle Formate"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Punkte {0} bis {1} werden heruntergeladen …"
 
@@ -14374,97 +14757,6 @@ msgstr "Server-Antwort wird verarbeitet …"
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Unerwartetes XML-Element mit dem Namen ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Kann \"{0}\" nicht exportieren"
-
-msgid "Could not import ''{0}''."
-msgstr "Konnte ''{0}'' nicht importieren."
-
-msgid "Could not import files."
-msgstr "Dateien konnten nicht importiert werden."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Die Datei ''{0}'' konnte nicht gelesen werden.<br>Fehlermeldung: "
-"<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Dateien konnten nicht gelesen werden.<br>Fehlermeldung:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON-Dateien"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Ebene ''{0}'' nicht unterstützt"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Anmerkung: Die GPL ist nicht kompatibel mit der OSM-Lizenz. Laden Sie keine "
-"GPL-lizenzierten Spuren hoch."
-
-msgid "GPS track description"
-msgstr "Beschreibung der GPS-Spur"
-
-msgid "Add author information"
-msgstr "Information zum Autor hinzufügen."
-
-msgid "Real name"
-msgstr "Voller Name"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Vordefiniert"
-
-msgid "Copyright year"
-msgstr "Jahr des Copyrights"
-
-msgid "Keywords"
-msgstr "Schlüsselwörter"
-
-msgid "Export options"
-msgstr "Export-Einstellungen"
-
-msgid "Export and Save"
-msgstr "Exportieren und Speichern"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Fehler beim Exportieren von {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Eine vordefinierte Lizenz auswählen"
-
-msgid "GPX Files"
-msgstr "GPX-Dateien"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Einlesen der Daten für Ebene ''{0}'' fehlgeschlagen"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Fehler beim Einlesen der GPX-Daten für Ebene ''{0}''. Nur ein Teil der Datei "
-"wird verfügbar sein."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Fehler beim Einlesen der GPX-Datei ''{0}''. Nur ein Teil der Datei wird "
-"verfügbar sein."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parser-Fehler: ungültige Dokumentenstruktur in GPX-Dokument."
 
@@ -14474,18 +14766,6 @@ msgstr "(in Zeile {0}, Spalte {1})"
 msgid "Unknown mode {0}."
 msgstr "Unbekannter Modus {0}."
 
-msgid "Image Files"
-msgstr "Bilddateien"
-
-msgid "folder"
-msgstr "Verzeichnis"
-
-msgid "Looking for image files"
-msgstr "Nach Bilddateien suchen …"
-
-msgid "No image files found."
-msgstr "Keine Bilddateien gefunden."
-
 msgid "get number of unread messages"
 msgstr "Anzahl der ungelesenen Nachrichten abrufen"
 
@@ -14541,36 +14821,9 @@ msgstr ""
 "Server gab den Antwortcode 404 für die Kennung \"{0}\" zurück. Wird "
 "übersprungen."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183-Dateien"
-
-msgid "Coordinates imported: {0}"
-msgstr "Importierte Koordinaten: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Ungültige Einträge: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Prüfsummenfehler: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Unbekannte Einträge: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Leere Koordinaten: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA-Einlesen erfolgreich:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA-Einlesen fehlgeschlagen!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Nullzeiger-Ausnahme, vielleicht fehlende Merkmale."
 
-msgid "Note Files"
-msgstr "OSM-Hinweisdateien"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14669,9 +14922,6 @@ msgstr "(Kode={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Der Server hat einen Fehler mit Kode [{0} gemeldet"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM-Serverdateien (bzip2-komprimiert)"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Prolog des OsmChange Dokumentes bereits geschrieben. Bitte nur einmal "
@@ -14682,18 +14932,6 @@ msgstr ""
 "Vorspann des OsmChange-Dokuments noch nicht geschrieben. Bitte zuerst "
 "schreiben."
 
-msgid "OsmChange File"
-msgstr "OsmChange-Datei"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Die Datei \"{0}\" existiert nicht"
-
-msgid "No data found in file {0}."
-msgstr "Keine Daten in Datei {0} gefunden."
-
-msgid "Open OsmChange file"
-msgstr "OsmChange-Datei öffnen"
-
 msgid "Unsupported version: {0}"
 msgstr "Nicht unterstützte Version: {0}"
 
@@ -14748,39 +14986,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Unerwarteter Wert für Einstellung ''{0}'': ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM-Serverdateien"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Beim Speichern ist ein Fehler aufgetreten.<br>Der Fehler "
-"lautet:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Beim Wiederherstellen der Sicherheitskopie ist ein Fehler "
-"aufgetreten.<br>Der Fehler lautet:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM-Serverdateien (gzip-komprimiert)"
-
 msgid "Parsing OSM history data ..."
 msgstr "OSM-Chronikdaten werden eingelesen …"
 
-msgid "Invalid dataset"
-msgstr "Ungültiger Datensatz"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Keine Daten für Ebene ''{0}'' gefunden."
-
-msgid "No data found in file ''{0}''."
-msgstr "Keine Daten in Datei ''{0}'' gefunden."
-
-msgid "Open OSM file"
-msgstr "OSM-Datei öffnen"
-
 msgid "Reading was canceled"
 msgstr "Lesevorgang wurde abgebrochen"
 
@@ -14930,6 +15138,9 @@ msgstr "Kontaktaufnahme mit Server ..."
 msgid "Downloading OSM notes..."
 msgstr "OSM-Hinweise werden heruntergeladen …"
 
+msgid "Downloading data..."
+msgstr "Daten werden heruntergeladen …"
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14994,14 +15205,9 @@ msgstr "Unerwartete Kennung 0 für OSM-Primitive gefunden"
 msgid "Failed to evaluate {0}"
 msgstr "Fehler beim Auswerten von {0}"
 
-msgid "Downloading data..."
-msgstr "Daten werden heruntergeladen …"
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS-Dateien (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "WMS-Datei-Version nicht unterstützt; gefunden {0}, erwartet {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Unerwarteter Wert für Schlüssel ''{0}'' in den Einstellungen: ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} Bytes wurden gelesen"
@@ -16192,39 +16398,6 @@ msgstr "Öffne URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL enthält nicht {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Veraltete Java-Version"
-
-msgid "Update Java"
-msgstr "Java aktualisieren"
-
-msgid "You are running version {0} of Java."
-msgstr "Sie verwenden die Java-Version {0}"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Diese Version wird von {0} seit {1} nicht mehr unterstützt. Deshalb wird von "
-"der Verwendung abgeraten."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM wird mit dieser Version bald nicht mehr funktionieren; wir empfehlen "
-"eindringlich eine Aktualisierung auf Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Sie könnten mit kritischen Java-Fehlern konfrontiert werden. Wir empfehlen "
-"Ihnen, auf Java {0} zu aktualisieren."
-
-msgid "Would you like to update now ?"
-msgstr "Möchten Sie jetzt die Aktualisierung durchführen?"
-
 msgid "reserved"
 msgstr "reserviert"
 
@@ -16298,23 +16471,6 @@ msgstr "Verdächtiges Zeichen in Schlüssel:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Wert ist zu lang (höchstens {0} Zeichen)"
 
-msgid "Do you want to paste these tags?"
-msgstr "Wollen Sie diese Merkmale einfügen?"
-
-msgid "Clear buffer"
-msgstr "Puffer löschen"
-
-msgid "Ignore warnings"
-msgstr "Ignoriere Warnungen"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Es können leider keine Merkmale aus der Zwischenablage eingefügt "
-"werden, da diese keine JOSM-Objekte und keinen passenden Text enthält. "
-"</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Datei {0} kann nicht gelöscht werden"
 
@@ -16338,134 +16494,15 @@ msgid_plural "days"
 msgstr[0] "Tag"
 msgstr[1] "Tage"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Voreinstellung des Schlüssels \"{0}\" enthält \"{1}\" nicht. Fenstergröße "
-"kann nicht aus den Einstellungen geladen werden."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Einstellung mit Schlüssel \"{0}\" liefert keinen Ganzzahlwert für \"{1}\", "
-"sondern {2}. Fenstergröße kann nicht aus den Einstellungen geladen werden."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Das Feld \"{1}\" in den Einstellungen mit Schlüssel \"{0}\" konnte nicht "
-"ausgelesen werden. Der Fehler war: {2}. Fenstergröße kann nicht aus den "
-"Einstellungen geladen werden."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Voreinstellung des Schlüssels \"{0}\" existiert nicht. Fenstergröße kann "
-"nicht aus den Einstellungen geladen werden."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ungültige Geometrie wird ignoriert: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Laden des XML-Schemas fehlgeschlagen."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Sie sind auf einen Fehler in JOSM gestoßen."
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Eine unerwartete Ausnahme ist aufgetreten.\n"
-"Dies ist immer ein Programmierfehler. Wenn Sie die neueste Version von JOSM "
-"ausführen, seien Sie bitte freundlich und füllen einen Fehlerbericht aus."
-
-msgid "Debug information"
-msgstr "Fehlersuchinformationen"
-
-msgid "Manually report at:"
-msgstr "Manuell melden bei:"
-
-msgid "Is JOSM up to date?"
-msgstr "Ist JOSM auf dem neuesten Stand?"
-
-msgid "Send bug report"
-msgstr "Fehlerbericht senden"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Wenn Sie die neueste Version von JOSM und der Erweiterungen verwenden, "
-"füllen Sie bitte einen Fehlerbericht im Bugtracker aus.\n"
-"Die Fehlerinformationen sollten bereits vorausgefüllt sein. Bitte "
-"beschreiben detailliert Sie, wie der Fehler nachvollzogen werden kann."
-
-msgid "Report Bug"
-msgstr "Programmfehler melden"
-
-msgid "Suppress this error for this session."
-msgstr "Diesen Fehler für diese Sitzung unterdrücken."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Weitere Fehlermeldungen für diese Sitzung unterdrücken."
-
-msgid "Ignore this error."
-msgstr "Diesen Fehler ignorieren."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Automatisches Erstellen der Fehlermeldung fehlgeschlagen. Bitte melde den "
 "Fehler manuell mithilfe dieser Seite:"
 
-msgid "Include the system status report."
-msgstr "Systemstatusbericht miteinbeziehen."
-
-msgid "Include information about the data you were working on."
-msgstr ""
-"Informationen über die Daten, an denen Sie gearbeitet haben, miteinbeziehen."
-
-msgid "Include all stack traces."
-msgstr "Stapelspeicherzurückverfolgungen miteinbeziehen."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Ihre aktuelle Version von JOSM ist {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM sucht nach Aktualisierungen..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-"Während der Überprüfung, ob Ihre JOSM-Instanz auf dem neuesten Stand ist, "
-"ist ein Fehler aufgetreten."
-
-msgid "JOSM is up to date."
-msgstr "JOSM ist auf dem neuesten Stand."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM ist auf einem alten Stand. Die aktuelle Version ist {0}. Versuchen Sie, "
-"JOSM zu aktualisieren."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Bevor Sie einen Fehlerbericht senden, stellen Sie sicher, dass Sie die "
-"neueste Version von JOSM verwenden:"
-
-msgid "Update JOSM"
-msgstr "JOSM aktualisieren"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20232,9 +20269,6 @@ msgstr "Inhalt"
 msgid "notice"
 msgstr "Notiz"
 
-msgid "history"
-msgstr "Chronik"
-
 msgid "nature"
 msgstr "Natur"
 
@@ -20814,6 +20848,9 @@ msgstr "Sozialeinrichtung"
 msgid "Nursing Home"
 msgstr "Pflegeheim"
 
+msgid "Nursing Home (Legacy)"
+msgstr "Pflegeheim (Alte Variante)"
+
 msgid "Group Home"
 msgstr "Wohngruppe"
 
@@ -23256,6 +23293,9 @@ msgstr "Geschenk/Souvenir"
 msgid "Variety Store"
 msgstr "1-Euro-Laden"
 
+msgid "Charity"
+msgstr "Wohltätigkeit"
+
 msgid "Bookmaker"
 msgstr "Buchmacher (Wettbüro)"
 
@@ -24139,6 +24179,78 @@ msgstr "Gewerbegebiet"
 msgid "Industrial"
 msgstr "Industrie"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr "Bäckerei"
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr "Brauerei"
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr "Ziegelei"
+
+msgctxt "industrial"
+msgid "depot"
+msgstr "Depot"
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr "Handel"
+
+msgctxt "industrial"
+msgid "factory"
+msgstr "Fabrik"
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr "Schleifmühle"
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr "Heizstation"
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr "Zerspanende Teilefertigung"
+
+msgctxt "industrial"
+msgid "mine"
+msgstr "Mine"
+
+msgctxt "industrial"
+msgid "oil"
+msgstr "Öl"
+
+msgctxt "industrial"
+msgid "port"
+msgstr "Umschlagplatz/Hafen"
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr "Saline"
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr "Sägewerk"
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr "Schrottplatz"
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr "Werft"
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr "Schlachthof"
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr "Lagerhalle"
+
 msgid "Garages"
 msgstr "Garagen"
 
@@ -24846,6 +24958,9 @@ msgstr ""
 "zurückgefüllt von Landsat. Das Durchschnittsalter ist 2.31 Jahre mit einigen "
 "Flächen welche 2x pro Jahr aktualisiert werden."
 
+msgid "Esri World Imagery"
+msgstr "Esri Luftbilder"
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25633,6 +25748,9 @@ msgstr "Kataster"
 msgid "French land registry"
 msgstr "Französisches Grundbuchamt"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25745,15 +25863,6 @@ msgstr "Alte Karte von Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topografische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -25791,16 +25900,16 @@ msgid "imagico.de OSM images for mapping: North Sea Coast 2017"
 msgstr "imagico.de OSM Bilder für Mapping: Nordseeküste 2017"
 
 msgid "Saxony latest aerial imagery"
-msgstr "Sachsen neuestes Luftbild"
+msgstr "Sachsen Luftbild aktuell"
 
 msgid "Saxony latest aerial imagery infrared"
-msgstr "Sachsen neuestes Luftbild Infrarot"
+msgstr "Sachsen Luftbild aktuell infrarot"
 
 msgid "Saxony historical aerial imagery 2012-2014"
-msgstr "Historische Luftbilder von Sachsen 2012-2014"
+msgstr "Sachsen Luftbild historisch 2012-2014"
 
 msgid "Saxony historical aerial imagery 2005"
-msgstr "Historische Luftbilder von Sachsen 2005"
+msgstr "Sachsen Luftbild historisch 2005"
 
 msgid "Saxony WebAtlasSN"
 msgstr "Sachsen WebAtlasSN"
@@ -34589,15 +34698,21 @@ msgstr "auf vorherigen Wert (ungeänderte Modifikationszeit)"
 msgid "Photo Geotagging Plugin"
 msgstr "Foto-Geotagging-Erweiterung"
 
-msgid "Writing position information to image files..."
-msgstr "Positionsinformationen werden in Bilddateien gespeichert …"
-
 msgid "Could not read mtime."
 msgstr "Kann die Modifikationszeit der Datei nicht lesen."
 
 msgid "Could not write mtime."
 msgstr "Kann die Modifikationszeit der Datei nicht ändern."
 
+msgid "Writing position information to image files..."
+msgstr "Positionsinformationen werden in Bilddateien gespeichert …"
+
+msgid "Retry"
+msgstr "Wiederholen"
+
+msgid "Unable to process file ''{0}'':"
+msgstr "Datei ''{0}'' kann nicht verarbeitet werden:"
+
 msgid "File could not be deleted!"
 msgstr "Datei konnte nicht gelöscht werden!"
 
@@ -35113,6 +35228,11 @@ msgstr "Fehler beheben"
 msgid "PT: dummy test warning"
 msgstr "ÖV: Pseudotestwarnung"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+"PT: Das Tag „fixme:relation=order“ wurde gefunden. Die Route sollte sortiert "
+"werden."
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 "ÖV: Route enthält eine Lücke, die durch das Sortieren behoben werden kann."
@@ -35124,6 +35244,11 @@ msgstr ""
 "ÖV: Lücken in der Route können durch Sortierung der Elemente verringert "
 "werden. Weitere Prüfungen sind erforderlich"
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+"PT: Die Lücke in der Route kann durch das Hinzufügen eines Weges geschlossen "
+"werden."
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/de_DE.po b/i18n/po/de_DE.po
index da2e298..0abd8ca 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:08+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:07+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,55 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Hilfe"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoriere die ungültige URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Warnung"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoriere die ungültige Datei-URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Der Parameter \"downloadgps\" unterstützt keine Dateinamen oder URLs."
-
 msgid "About"
 msgstr "Über"
 
@@ -181,6 +135,9 @@ msgstr "Abbrechen"
 msgid "Click to abort launching external browsers"
 msgstr "Klicken Sie, um den Start externer Browser abzubrechen."
 
+msgid "Warning"
+msgstr "Warnung"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Bitte mindestens ein bereits zum Server hochgeladenes Element (Knoten, Weg "
@@ -465,13 +422,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Vom OSM-Server herunterladen..."
-
-msgid "Download map data from the OSM server."
-msgstr "Kartendaten vom OSM-Server herunterladen."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -479,9 +433,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -548,6 +499,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Hilfe"
+
 msgid "History"
 msgstr ""
 
@@ -1047,23 +1001,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2318,36 +2255,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2634,86 +2541,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2731,9 +2558,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3080,57 +2904,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3220,6 +2999,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3348,6 +3133,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3362,6 +3156,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3398,14 +3195,67 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -3432,21 +3282,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3480,6 +3320,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3557,6 +3507,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3741,9 +3806,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3928,9 +3990,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4469,9 +4528,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4586,45 +4642,15 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoriere die ungültige URL: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoriere die ungültige Datei-URL: \"{0}\""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"Der Parameter \"downloadgps\" unterstützt keine Dateinamen oder URLs."
 
 msgid "Precondition violation"
 msgstr ""
@@ -4714,6 +4740,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5175,6 +5261,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5869,6 +6028,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6425,9 +6598,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6538,9 +6708,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7933,49 +8100,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
 msgstr ""
 
+msgid "Download object"
+msgstr "Objekt herunterladen"
+
+msgid "Start downloading"
+msgstr "Herunterladen beginnen"
+
 msgid ""
-"<html>Autostart ''Download from OSM'' dialog every time JOSM is "
-"started.<br>You can open it manually from File menu or toolbar.</html>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7987,36 +8192,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Objekt herunterladen"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Herunterladen beginnen"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8061,9 +8277,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8601,6 +8814,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9078,9 +9303,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9159,6 +9381,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9266,6 +9660,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9369,6 +9790,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9442,6 +9866,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10011,9 +10438,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10023,6 +10447,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10436,55 +10863,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11570,19 +11976,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11662,12 +12055,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12133,9 +12520,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12153,12 +12537,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12339,69 +12717,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12645,6 +12960,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12757,9 +13095,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12862,86 +13197,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12951,18 +13206,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13014,36 +13257,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13131,27 +13347,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13197,35 +13398,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13357,6 +13532,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13414,13 +13592,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14356,33 +14528,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14441,20 +14586,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14478,109 +14609,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18296,9 +18331,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18878,6 +18910,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21318,6 +21353,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22178,6 +22216,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22873,6 +22983,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23625,6 +23738,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23735,15 +23851,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31599,13 +31706,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32103,6 +32216,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32111,6 +32227,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/el.po b/i18n/po/el.po
index 2bcd88a..3383e98 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:45+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:45+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: el\n"
 
@@ -56,54 +56,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Το άνοιγμα δεσμού δεν υποστηρίζεται στην τρέχουσα πλατφόρμα (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr "Δημιουργία κύριου μενού"
-
-msgid "Help"
-msgstr "Βοήθεια"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Αρχικοποίηση OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Αρχικοποίηση  Επικυρωτή"
-
-msgid "Initializing presets"
-msgstr "Αρχικοποίηση προεπιλογών"
-
-msgid "Initializing map styles"
-msgstr "Αρχικοποίηση στυλ χάρτη"
-
-msgid "Loading imagery preferences"
-msgstr "Φόρτωση προτιμήσεων υπόβαθρου εικόνων"
-
-msgid "Updating user interface"
-msgstr "Ενημέρωση διεπαφής χρήστη"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Αγνοήθηκε κακοσχηματισμένο URL:\"{0}\""
-
-msgid "Warning"
-msgstr "Προειδοποίηση"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Αγνοήθηκε κακοσχηματισμένο URL αρχείου:\"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Η παράμετρος \"downloadgps\" δεν δέχεται ονόματα ή URL αρχείων"
-
 msgid "About"
 msgstr "Περί"
 
@@ -181,6 +136,9 @@ msgstr "Ακύρωση"
 msgid "Click to abort launching external browsers"
 msgstr "Πιέστε για να ακυρώσετε το άνοιγμα εξωτερικών φυλλομετρητών"
 
+msgid "Warning"
+msgstr "Προειδοποίηση"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Παρακαλώ επιλέξτε τουλάχιστον έναν ήδη απεσταλμένο κόμβο, διαδρομή ή σχέση"
@@ -468,13 +426,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Λήψη από το OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Λήψη δεδομένων χάρτη από τον διακομιστή του OSM"
+msgid "Download data"
+msgstr "Λήψη δεδομένων"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -484,9 +439,6 @@ msgstr ""
 "<html>Αυτή η ενέργεια απαιτεί {0} ξεχωριστές<br>αιτήσεις λήψης. "
 "Επιθυμείτε<br>να συνεχίσετε;</html>"
 
-msgid "Download data"
-msgstr "Λήψη δεδομένων"
-
 msgid "Download notes in current view"
 msgstr "Λήψη σημειώσεων στην τρέχουσα προβολή"
 
@@ -556,6 +508,9 @@ msgstr "Τίποτα προς εξαγωγή. Λάβετε κάποια δεδο
 msgid "Export GPX file"
 msgstr "Εξαγωγή αρχείου GPX"
 
+msgid "Help"
+msgstr "Βοήθεια"
+
 msgid "History"
 msgstr "Ιστορικό"
 
@@ -1115,23 +1070,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Παρακαλώ επιλέξτε διαδρομές με γωνίες που πλησιάζουν τις 90 ή τις 180 μοίρες."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Επικόλληση"
 
@@ -2459,36 +2397,6 @@ msgstr "Επιλογή συσχέτισης (προσθήκη)"
 msgid "Select relation"
 msgstr "Επιλογή σχέσης"
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Αναζήτηση..."
 
@@ -2778,86 +2686,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2875,9 +2703,6 @@ msgstr "{0} κόμβοι στη διαδρομή {1} ξεπερνούν τον 
 msgid "API Capabilities Violation"
 msgstr "Παραβίαση Δυνατοτήτων API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Κυκλική εξάρτηση μεταξύ των σχέσεων"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3247,60 +3072,12 @@ msgstr "Ρόλοι σε σχέσεις που αναφέροντε στο"
 msgid "Automatic tag correction"
 msgstr "Αυτόματη διόρθωση ετικέτας"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Αδυναμία δημιουργίας του καταλόγου {0}, η αυτόματη αποθήκευση θα "
-"απενεργοποιηθεί"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Αδυναμία δημιουργίας του αρχείου {0}, άλλο όνομα αρχείου θα χρησιμοποιηθεί"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Αδυναμία διαγραφής του παλιού εφεδρικού αρχείου {0}"
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Επαναφορά αρχείων"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Μη αποδεκτή τιμή Γ/Πλάτους \"{0}\""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Μη αποδεκτή τιμή Γ/Μήκους \"{0}\""
 
-msgid "Question"
-msgstr "Ερώτηση"
-
-msgid "Message"
-msgstr "Μήνυμα"
-
-msgid "Enter text"
-msgstr "Εισαγάγετε κείμενο"
-
-msgid "Installing plugins"
-msgstr "Εγκατάσταση προσθέτων"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3391,6 +3168,12 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "Η ρύθμιση προτιμήσεων {0} έχει αφαιρεθεί μιας και δεν χρησιμοποιείται πια."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "Μετρικό"
 
@@ -3519,6 +3302,15 @@ msgstr ""
 msgid "Note"
 msgstr "Σημείωση"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3533,6 +3325,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr "Κυκλική εξάρτηση μεταξύ των σχέσεων"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3569,8 +3364,61 @@ msgstr "Συγχώνευση δεδομένων..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
+msgid "incomplete"
+msgstr "μη ολοκληρωμένη"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr "Αριθμός σπιτιού {0} στην {1}"
+
+msgid "House number {0}"
+msgstr "Αριθμός σπιτιού {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "κόμβος"
+msgstr[1] "κόμβοι"
+
+msgid "highway"
+msgstr "οδική αρτηρία"
+
+msgid "railway"
+msgstr "σιδηρόδρομος"
+
+msgid "waterway"
+msgstr "υδατοδιαδρομή"
+
+msgid "landuse"
+msgstr "χρήση γής"
+
+msgid "building"
+msgstr "κτίριο"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} κόμβος"
+msgstr[1] "{0} κόμβοι"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} μέλος"
+msgstr[1] "{0} μέλη"
+
+msgid "public transport"
+msgstr "μέσα μαζικής μεταφοράς"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "σχέση"
+msgstr[1] "σχέσεις"
+
+msgid "Changeset {0}"
+msgstr "Ομάδα αλλαγών {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
 
 msgid "Error in filter"
 msgstr "Σφάλμα στο φίλτρο"
@@ -3603,21 +3451,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "κόμβος"
-msgstr[1] "κόμβοι"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "διαδρομή"
 msgstr[1] "διαδρομές"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "σχέση"
-msgstr[1] "σχέσεις"
-
 msgid "closedway"
 msgstr ""
 
@@ -3651,6 +3489,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Η παράμετρος {0} δεν είναι στο εύρος 0...{1}. Είναι ''{2}''."
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3728,6 +3676,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Σύντομη περιγραφή:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr "Ιστοσελίδα:"
+
+msgid "Description:"
+msgstr "Περιγραφή:"
+
+msgid "Version:"
+msgstr "Έκδοση:"
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Διευθύνσεις"
+
+msgid "Checks for errors on addresses"
+msgstr "Ελέγχει για σφάλματα στις διευθύνσεις"
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr "Παρωχημένα χαρακτηριστικά"
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr "Γεωμετρία"
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Λεωφόροι"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Θρησκεία"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Σχέσεις"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3914,9 +3977,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Διευθύνσεις"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4105,9 +4165,6 @@ msgstr "Διπλασιασμένοι κόμβοι διαδρομής"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Ελέγχει για διαδρομές με πανομοιότυπους συνεχόμενους κόμβους."
 
-msgid "Highways"
-msgstr "Λεωφόροι"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4655,9 +4712,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "κτίριο"
-
 msgid "area"
 msgstr "περιοχή"
 
@@ -4779,45 +4833,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Να μην εμφανιστεί ξανά (απομνημόνευση επιλογής)"
 
-msgid "incomplete"
-msgstr "μη ολοκληρωμένη"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr "Αριθμός σπιτιού {0} στην {1}"
-
-msgid "House number {0}"
-msgstr "Αριθμός σπιτιού {0}"
-
-msgid "highway"
-msgstr "οδική αρτηρία"
-
-msgid "railway"
-msgstr "σιδηρόδρομος"
-
-msgid "waterway"
-msgstr "υδατοδιαδρομή"
-
-msgid "landuse"
-msgstr "χρήση γής"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} κόμβος"
-msgstr[1] "{0} κόμβοι"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} μέλος"
-msgstr[1] "{0} μέλη"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Αγνοήθηκε κακοσχηματισμένο URL:\"{0}\""
 
-msgid "public transport"
-msgstr "μέσα μαζικής μεταφοράς"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Αγνοήθηκε κακοσχηματισμένο URL αρχείου:\"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Ομάδα αλλαγών {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Η παράμετρος \"downloadgps\" δεν δέχεται ονόματα ή URL αρχείων"
 
 msgid "Precondition violation"
 msgstr "Παραβίαση προϋπόθεσης"
@@ -4867,45 +4890,105 @@ msgstr "Υπέρβαση ορίου εύρους δεδομένων"
 msgid "Communication with OSM server failed"
 msgstr "Η επικοινωνία με το διακομιστή OSM απέτυχε"
 
-msgid "Authentication failed"
-msgstr "Αποτυχία Πιστοποίησης"
+msgid "Authentication failed"
+msgstr "Αποτυχία Πιστοποίησης"
+
+msgid "Unknown host"
+msgstr "Άγνωστος υπολογιστής"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "Το αντικείμενο διαγράφηκε"
+msgstr[1] "Τα αντικείμενα διαγράφηκαν"
+
+msgid "Show help information"
+msgstr "Εμφάνιση πληροφοριών βοήθειας"
+
+msgid "Downloading \"Message of the day\""
+msgstr "Λήψη \"Μηνύματος Ημέρας\""
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr ""
+
+msgid "Message of the day not available"
+msgstr "Το μήνυμα της ημέρας δεν είναι διαθέσιμο"
+
+msgid "Click to close the dialog"
+msgstr "Κλικ για κλείσιμο του διαλόγου"
+
+msgid "Imagery offset"
+msgstr "Μετατόπιση υπόβαθρου εικόνων"
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr "Υπόβαθρο εικόνων"
+
+msgctxt "layer"
+msgid "Offset"
+msgstr "Μετατόπιση"
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr ""
+
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
 
-msgid "Unknown host"
-msgstr "Άγνωστος υπολογιστής"
+msgid "Would you like to update now ?"
+msgstr ""
 
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "Το αντικείμενο διαγράφηκε"
-msgstr[1] "Τα αντικείμενα διαγράφηκαν"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Show help information"
-msgstr "Εμφάνιση πληροφοριών βοήθειας"
+msgid "Executing platform startup hook"
+msgstr ""
 
-msgid "Downloading \"Message of the day\""
-msgstr "Λήψη \"Μηνύματος Ημέρας\""
+msgid "Building main menu"
+msgstr "Δημιουργία κύριου μενού"
 
-msgid "Failed to read MOTD. Exception was: {0}"
+msgid "Updating user interface"
+msgstr "Ενημέρωση διεπαφής χρήστη"
+
+msgid "Initializing internal boundaries data"
 msgstr ""
 
-msgid "Message of the day not available"
-msgstr "Το μήνυμα της ημέρας δεν είναι διαθέσιμο"
+msgid "Initializing OSM API"
+msgstr "Αρχικοποίηση OSM API"
 
-msgid "Click to close the dialog"
-msgstr "Κλικ για κλείσιμο του διαλόγου"
+msgid "Initializing internal traffic data"
+msgstr ""
 
-msgid "Imagery offset"
-msgstr "Μετατόπιση υπόβαθρου εικόνων"
+msgid "Initializing validator"
+msgstr "Αρχικοποίηση  Επικυρωτή"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr "Υπόβαθρο εικόνων"
+msgid "Initializing presets"
+msgstr "Αρχικοποίηση προεπιλογών"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr "Μετατόπιση"
+msgid "Initializing map styles"
+msgstr "Αρχικοποίηση στυλ χάρτη"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr ""
+msgid "Loading imagery preferences"
+msgstr "Φόρτωση προτιμήσεων υπόβαθρου εικόνων"
 
 msgid "usage"
 msgstr "χρήση"
@@ -5380,6 +5463,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Αναφορά σφάλματος"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -6088,6 +6244,20 @@ msgstr ""
 "επικόλληση τα μη ολοκληρωμένα αντικείμενα αφαιρούνται. Θέλετε να "
 "επικολλήσετε τα δεδομένα χωρίς τα μη ολοκληρωμένα αντικείμενα."
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "Για επιλεγμένα αντικείμενα μόνο"
 
@@ -6654,9 +6824,6 @@ msgstr "Πηγή"
 msgid "Title:"
 msgstr "Τίτλος:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6767,9 +6934,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Σχέσεις"
-
 msgid "Open a list of all relations."
 msgstr "Άνοιγμα λίστας όλων των σχέσεων."
 
@@ -8188,24 +8352,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Πηγές και τύποι δεδομένων:"
-
-msgid "OpenStreetMap data"
-msgstr "Δεδομένα OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "Ακατέργαστα δεδομένα GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Λήψη σαν νέο επίπεδο"
 
@@ -8233,6 +8379,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Λήψη Αντικειμένου"
+
+msgid "Start downloading"
+msgstr "Εκκίνηση λήψης"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "Επιλέξτε αν θα πρέπει να ληφθούν επίσης και τα μέλη μιας συσχέτισης"
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Πηγές και τύποι δεδομένων:"
+
+msgid "OpenStreetMap data"
+msgstr "Δεδομένα OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "Ακατέργαστα δεδομένα GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8245,38 +8447,49 @@ msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 "Η περιοχή λήψης είναι εντάξει, μέγεθος πιθανότατα αποδεκτό από διακομιστή"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Λήψη Αντικειμένου"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Εκκίνηση λήψης"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "Επιλέξτε αν θα πρέπει να ληφθούν επίσης και τα μέλη μιας συσχέτισης"
+msgid "Download all data?"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "ιστορία"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8316,10 +8529,7 @@ msgstr ""
 msgid "The Overpass wizard could not parse the following query:"
 msgstr ""
 
-msgid "Parse error"
-msgstr ""
-
-msgid "Query Wizard"
+msgid "Parse error"
 msgstr ""
 
 msgid ""
@@ -8871,6 +9081,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr "Ακύρωση πιστοποίησης"
 
+msgid "Question"
+msgstr "Ερώτηση"
+
+msgid "Message"
+msgstr "Μήνυμα"
+
+msgid "Enter text"
+msgstr "Εισαγάγετε κείμενο"
+
+msgid "Installing plugins"
+msgstr "Εγκατάσταση προσθέτων"
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9385,9 +9607,6 @@ msgstr "Επιλέξτε αντικείμενα προς αποστολή"
 msgid "Cancel uploading"
 msgstr "Ακύρωση αποστολής"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9467,6 +9686,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} αντικείμενο προς διαγραφή:"
 msgstr[1] "{0} αντικείμενα προς διαγραφή:"
 
+msgid "All Formats"
+msgstr "Όλοι οι τύποι"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Σημείωση: Το GPL δεν είνα συμβατό με την άδεια χρήσης OSM. Μην ανεβάζετε "
+"τροχιές που είναι υπό την άδεια του GPL."
+
+msgid "GPS track description"
+msgstr "περιγραφή ίχνους GPS"
+
+msgid "Add author information"
+msgstr "Προσθήκη πληροφοριών συγγραφέα"
+
+msgid "Real name"
+msgstr "Πραγματικό όνομα"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Προκαθορισμένο"
+
+msgid "Copyright year"
+msgstr "Έτος Copyright"
+
+msgid "Keywords"
+msgstr "Λέξεις κλειδιά"
+
+msgid "Export options"
+msgstr "Επιλογές εξαγωγής"
+
+msgid "Export and Save"
+msgstr "Εξαγωγή και Αποθήκευση"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Σφάλμα κατά την εξαγωγή {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Επιλέξτε μια προκαθορισμένη άδεια"
+
+msgid "GPX Files"
+msgstr "Αρχεία GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr "Αρχεία Εικόνων"
+
+msgid "folder"
+msgstr "φάκελος"
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "Αρχεία NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Εισηγμένες συντεταγμένες: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "Αποτυχία εισαγωγής NMEA!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr "Το αρχείο \"{0}\" δεν υπάρχει"
+
+msgid "No data found in file {0}."
+msgstr "Δεν βρέθηκαν δεδομένα στο αρχείο {0}."
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "Αρχεία Διακομιστή OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Μη υποστηριζόμενη έκδοση αρχείου WMS΄ βρέθηκε {0}, αναμενόταν {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9574,6 +9969,36 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Αδυναμία δημιουργίας του καταλόγου {0}, η αυτόματη αποθήκευση θα "
+"απενεργοποιηθεί"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Αδυναμία δημιουργίας του αρχείου {0}, άλλο όνομα αρχείου θα χρησιμοποιηθεί"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Αδυναμία διαγραφής του παλιού εφεδρικού αρχείου {0}"
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Επαναφορά αρχείων"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Προσαρμογή Χρώματος"
 
@@ -9677,6 +10102,9 @@ msgstr "Σύνολο σημειώσεων:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "εκτός περιοχής λήψης"
 
@@ -9750,6 +10178,9 @@ msgstr "Σφάλματα επικύρωσης"
 msgid "No validation errors"
 msgstr "Κανένα σφάλμα επικύρωσης"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10326,9 +10757,6 @@ msgstr "Το URL ήταν: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10338,6 +10766,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10766,41 +11197,20 @@ msgstr "Λειτουργία για προχωρημένους"
 msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-"Πρέπει να επανεκινήσετε το JOSM για να εφαρμοστούν κάποιες ρυθμίσεις."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr "Λήψη πρόσθετων"
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
-msgstr "Σύντομη περιγραφή:"
-
-msgid "Author:"
-msgstr ""
-
-msgid "Webpage:"
-msgstr "Ιστοσελίδα:"
-
-msgid "Description:"
-msgstr "Περιγραφή:"
+msgid "Save the preferences and close the dialog"
+msgstr ""
 
-msgid "Version:"
-msgstr "Έκδοση:"
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr ""
+"Πρέπει να επανεκινήσετε το JOSM για να εφαρμοστούν κάποιες ρυθμίσεις."
 
-msgid "Minimum JOSM Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "by {0}"
+msgid "Download plugins"
+msgstr "Λήψη πρόσθετων"
+
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11904,19 +12314,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Ρυθμίσεις Χάρτη"
 
@@ -11996,12 +12393,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12473,9 +12864,6 @@ msgstr "OSM κωδικός:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12493,12 +12881,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12687,69 +13069,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr "Ελέγχει για σφάλματα στις διευθύνσεις"
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr "Παρωχημένα χαρακτηριστικά"
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr "Γεωμετρία"
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Θρησκεία"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12994,6 +13313,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -13106,9 +13448,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Όλοι οι τύποι"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Λήψη σημείων {0} ως {1}..."
 
@@ -13211,90 +13550,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Σημείωση: Το GPL δεν είνα συμβατό με την άδεια χρήσης OSM. Μην ανεβάζετε "
-"τροχιές που είναι υπό την άδεια του GPL."
-
-msgid "GPS track description"
-msgstr "περιγραφή ίχνους GPS"
-
-msgid "Add author information"
-msgstr "Προσθήκη πληροφοριών συγγραφέα"
-
-msgid "Real name"
-msgstr "Πραγματικό όνομα"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Προκαθορισμένο"
-
-msgid "Copyright year"
-msgstr "Έτος Copyright"
-
-msgid "Keywords"
-msgstr "Λέξεις κλειδιά"
-
-msgid "Export options"
-msgstr "Επιλογές εξαγωγής"
-
-msgid "Export and Save"
-msgstr "Εξαγωγή και Αποθήκευση"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Σφάλμα κατά την εξαγωγή {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Επιλέξτε μια προκαθορισμένη άδεια"
-
-msgid "GPX Files"
-msgstr "Αρχεία GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13304,18 +13559,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr "Αρχεία Εικόνων"
-
-msgid "folder"
-msgstr "φάκελος"
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13367,36 +13610,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "Αρχεία NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Εισηγμένες συντεταγμένες: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "Αποτυχία εισαγωγής NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13484,27 +13700,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr "Το αρχείο \"{0}\" δεν υπάρχει"
-
-msgid "No data found in file {0}."
-msgstr "Δεν βρέθηκαν δεδομένα στο αρχείο {0}."
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13550,35 +13751,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "Αρχεία Διακομιστή OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13710,6 +13885,9 @@ msgstr "Επικοινωνία με τον Διακομιστή..."
 msgid "Downloading OSM notes..."
 msgstr "Λήψη σημειώσεων OSM"
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13769,15 +13947,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Μη υποστηριζόμενη έκδοση αρχείου WMS΄ βρέθηκε {0}, αναμενόταν {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14737,33 +14909,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14822,20 +14967,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14859,109 +14990,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Αναφορά σφάλματος"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18677,9 +18712,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "ιστορία"
-
 msgid "nature"
 msgstr "φύση"
 
@@ -19259,6 +19291,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21699,6 +21734,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr "Ψιλικατζίδικο"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22559,6 +22597,78 @@ msgstr ""
 msgid "Industrial"
 msgstr "Βιομηχανική"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23254,6 +23364,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -24006,6 +24119,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24116,15 +24232,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32010,13 +32117,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32514,6 +32627,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32522,6 +32638,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/en_AU.po b/i18n/po/en_AU.po
index b051bf1..17efd60 100644
--- a/i18n/po/en_AU.po
+++ b/i18n/po/en_AU.po
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2015-06-08 12:52+0000\n"
-"Last-Translator: Mark Pulley <mrpulley at lizzy.com.au>\n"
+"Last-Translator: Mark Pulley <mrpulley at iinet.net.au>\n"
 "Language-Team: English (Australia) <en_AU 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-08-13 05:06+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:06+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr "Background Terms of Use"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Opening link not supported on current platform (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Executing platform startup hook"
-
-msgid "Building main menu"
-msgstr "Building main menu"
-
-msgid "Help"
-msgstr "Help"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Initialising OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Initialising validator"
-
-msgid "Initializing presets"
-msgstr "Initialising presets"
-
-msgid "Initializing map styles"
-msgstr "Initialising map styles"
-
-msgid "Loading imagery preferences"
-msgstr "Loading imagery preferences"
-
-msgid "Updating user interface"
-msgstr "Updating user interface"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoring malformed URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Warning"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoring malformed file URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
-
 msgid "About"
 msgstr "About"
 
@@ -184,6 +139,9 @@ msgstr "Cancel"
 msgid "Click to abort launching external browsers"
 msgstr "Click to abort launching external browsers"
 
+msgid "Warning"
+msgstr "Warning"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Please select at least one already uploaded node, way, or relation."
 
@@ -473,14 +431,11 @@ msgstr ""
 "* One no self-crossing way with at most two of its nodes;\n"
 "* Three nodes."
 
-msgid "Download from OSM..."
-msgstr "Download from OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Download map data from the OSM server."
+msgid "Download data"
+msgstr "Download data"
 
-msgid "Please select a download area first."
-msgstr "Please select a download area first."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -489,9 +444,6 @@ msgstr ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 
-msgid "Download data"
-msgstr "Download data"
-
 msgid "Download notes in current view"
 msgstr "Download notes in current view"
 
@@ -558,6 +510,9 @@ msgstr "Nothing to export. Get some data first."
 msgid "Export GPX file"
 msgstr "Export GPX file"
 
+msgid "Help"
+msgstr "Help"
+
 msgid "History"
 msgstr "History"
 
@@ -1109,23 +1064,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Please select ways with angles of approximately 90 or 180 degrees."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Paste"
 
@@ -2472,36 +2410,6 @@ msgstr "Select relation (add)"
 msgid "Select relation"
 msgstr "Select relation"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Search..."
 
@@ -2798,93 +2706,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "Range of primitive ids expected"
-
-msgid "Range of changeset ids expected"
-msgstr "Range of changeset ids expected"
-
-msgid "Range of versions expected"
-msgstr "Range of versions expected"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "Key cannot be empty when tag operator is used. Sample use: key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Unknown primitive type: {0}. Allowed values are node, way or relation"
-
-msgid "Positive integer expected"
-msgstr "Positive integer expected"
-
-msgid "Range of numbers expected"
-msgstr "Range of numbers expected"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Unexpected token. Expected {0}, found {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Unexpected token: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Missing parameter for OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Missing parameter for XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Missing operator for NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 
@@ -2904,9 +2725,6 @@ msgstr "{0} nodes in way {1} exceed the max. allowed number of nodes {2}"
 msgid "API Capabilities Violation"
 msgstr "API Capabilities Violation"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cyclic dependency between relations:"
-
 msgid "Removed obsolete tags"
 msgstr "Removed obsolete tags"
 
@@ -3284,60 +3102,12 @@ msgstr "Roles in relations referring to"
 msgid "Automatic tag correction"
 msgstr "Automatic tag correction"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Unable to create directory {0}, autosave will be disabled"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Unable to create file {0}, other filename will be used"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError while creating file, autosave will be skipped: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Unable to delete old backup file {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Your work has been saved automatically."
-
-msgid "Restoring files"
-msgstr "Restoring files"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Illegal latitude value ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Illegal longitude value ''{0}''"
 
-msgid "Question"
-msgstr "Question"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Enter text"
-msgstr "Enter text"
-
-msgid "Installing plugins"
-msgstr "Installing plugins"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Failed to create missing cache directory: {0}"
 
@@ -3444,6 +3214,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Preference setting {0} has been removed since it is no longer used."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+
 msgid "Metric"
 msgstr "Metric"
 
@@ -3572,6 +3351,15 @@ msgstr ""
 msgid "Note"
 msgstr "Note"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Current credential manager is of type ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 expected. Got {0}."
 
@@ -3588,6 +3376,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "A primitive with ID = 0 cannot be invisible."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cyclic dependency between relations:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3630,6 +3421,59 @@ msgstr "Merging data..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' completed in {1}"
 
+msgid "incomplete"
+msgstr "incomplete"
+
+msgid "House {0}"
+msgstr "House {0}"
+
+msgid "House number {0} at {1}"
+msgstr "House number {0} at {1}"
+
+msgid "House number {0}"
+msgstr "House number {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "node"
+msgstr[1] "nodes"
+
+msgid "highway"
+msgstr "highway"
+
+msgid "railway"
+msgstr "railway"
+
+msgid "waterway"
+msgstr "waterway"
+
+msgid "landuse"
+msgstr "landuse"
+
+msgid "building"
+msgstr "building"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+msgstr[1] "{0} nodes"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} member"
+msgstr[1] "{0} members"
+
+msgid "public transport"
+msgstr "public transport"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relation"
+msgstr[1] "relations"
+
+msgid "Changeset {0}"
+msgstr "Changeset {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3667,21 +3511,11 @@ msgid ""
 msgstr ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "node"
-msgstr[1] "nodes"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "way"
 msgstr[1] "ways"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relation"
-msgstr[1] "relations"
-
 msgid "closedway"
 msgstr "closed way"
 
@@ -3718,6 +3552,123 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "parameter {0} not in range 0..{1}, got {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "Range of primitive ids expected"
+
+msgid "Range of changeset ids expected"
+msgstr "Range of changeset ids expected"
+
+msgid "Range of versions expected"
+msgstr "Range of versions expected"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "Key cannot be empty when tag operator is used. Sample use: key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Unknown primitive type: {0}. Allowed values are node, way or relation"
+
+msgid "Positive integer expected"
+msgstr "Positive integer expected"
+
+msgid "Range of numbers expected"
+msgstr "Range of numbers expected"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Unexpected token: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Missing parameter for OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Missing parameter for XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Missing operator for NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Unexpected token. Expected {0}, found {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Failed to load map renderer class ''{0}''. The class wasn''t found."
 
@@ -3800,6 +3751,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Addresses"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Highways"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relations"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3988,9 +4054,6 @@ msgstr "URL contains an invalid fragment: {0}"
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Addresses"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Checks for errors in addresses and associatedStreet relations."
 
@@ -4182,9 +4245,6 @@ msgstr "Duplicated way nodes"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Checks for ways with identical consecutive nodes."
 
-msgid "Highways"
-msgstr "Highways"
-
 msgid "Performs semantic checks on highways."
 msgstr "Performs semantic checks on highways."
 
@@ -4739,9 +4799,6 @@ msgstr "waterway type {0}"
 msgid "boundary type {0}"
 msgstr "boundary type {0}"
 
-msgid "building"
-msgstr "building"
-
 msgid "area"
 msgstr "area"
 
@@ -4856,45 +4913,14 @@ msgstr "Do not show again (this session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Do not show again (remembers choice)"
 
-msgid "incomplete"
-msgstr "incomplete"
-
-msgid "House {0}"
-msgstr "House {0}"
-
-msgid "House number {0} at {1}"
-msgstr "House number {0} at {1}"
-
-msgid "House number {0}"
-msgstr "House number {0}"
-
-msgid "highway"
-msgstr "highway"
-
-msgid "railway"
-msgstr "railway"
-
-msgid "waterway"
-msgstr "waterway"
-
-msgid "landuse"
-msgstr "landuse"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-msgstr[1] "{0} nodes"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} member"
-msgstr[1] "{0} members"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoring malformed URL: \"{0}\""
 
-msgid "public transport"
-msgstr "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoring malformed file URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
 msgid "Precondition violation"
 msgstr "Precondition violation"
@@ -4984,6 +5010,66 @@ msgstr "Offset"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Executing platform startup hook"
+
+msgid "Building main menu"
+msgstr "Building main menu"
+
+msgid "Updating user interface"
+msgstr "Updating user interface"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Initialising OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Initialising validator"
+
+msgid "Initializing presets"
+msgstr "Initialising presets"
+
+msgid "Initializing map styles"
+msgstr "Initialising map styles"
+
+msgid "Loading imagery preferences"
+msgstr "Loading imagery preferences"
+
 msgid "usage"
 msgstr "usage"
 
@@ -5473,6 +5559,79 @@ msgstr "Please enter a tile index"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "The current value isn''t a valid tile index for the given zoom level"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "You have encountered a bug in JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Report Bug"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr "Conflict background: no conflict"
 
@@ -6227,6 +6386,20 @@ msgstr ""
 "objects are removed.  Do you want to paste the data without the incomplete "
 "objects?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "For selected objects only"
 
@@ -6809,9 +6982,6 @@ msgstr "Source"
 msgid "Title:"
 msgstr "Title:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Built-in Style, internal path:"
 
@@ -6924,9 +7094,6 @@ msgstr ""
 "Invalid ID list specified\n"
 "Cannot continue."
 
-msgid "Relations"
-msgstr "Relations"
-
 msgid "Open a list of all relations."
 msgstr "Open a list of all relations."
 
@@ -8404,24 +8571,6 @@ msgstr "Value for latitude in range [-90,90] required."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Value for longitude in range [-180,180] required."
 
-msgid "Data Sources and Types:"
-msgstr "Data Sources and Types:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap data"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Select to download OSM data in the selected download area."
-
-msgid "Raw GPS data"
-msgstr "Raw GPS data"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Select to download GPS traces in the selected download area."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Select to download notes in the selected download area."
-
 msgid "Download as new layer"
 msgstr "Download as new layer"
 
@@ -8455,30 +8604,12 @@ msgstr ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
 
-msgid "No area selected yet"
-msgstr "No area selected yet"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Download area too large, will probably be rejected by server"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Download area ok, size probably acceptable to server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Click to close the dialogue and to abort downloading"
 
 msgid "Click to download the currently selected area"
 msgstr "Click to download the currently selected area"
 
-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>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>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Download referrers (parent relations)"
 
@@ -8501,6 +8632,91 @@ msgstr "Select if the members of a relation should be downloaded as well"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Download referrers (parent relations and ways)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Data Sources and Types:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap data"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Select to download OSM data in the selected download area."
+
+msgid "Raw GPS data"
+msgstr "Raw GPS data"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Select to download GPS traces in the selected download area."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Select to download notes in the selected download area."
+
+msgid "Please select a download area first."
+msgstr "Please select a download area first."
+
+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>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>"
+
+msgid "No area selected yet"
+msgstr "No area selected yet"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Download area too large, will probably be rejected by server"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Download area ok, size probably acceptable to server"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "history"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8543,9 +8759,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9134,6 +9347,18 @@ msgstr "Authenticate with the supplied username and password"
 msgid "Cancel authentication"
 msgstr "Cancel authentication"
 
+msgid "Question"
+msgstr "Question"
+
+msgid "Message"
+msgstr "Message"
+
+msgid "Enter text"
+msgstr "Enter text"
+
+msgid "Installing plugins"
+msgstr "Installing plugins"
+
 msgid "Downloading file"
 msgstr "Downloading file"
 
@@ -9688,9 +9913,6 @@ msgstr "Select objects to upload"
 msgid "Cancel uploading"
 msgstr "Cancel uploading"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Fill up one changeset and return to the Upload Dialogue"
 
@@ -9773,6 +9995,184 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} object to delete:"
 msgstr[1] "{0} objects to delete:"
 
+msgid "All Formats"
+msgstr "All Formats"
+
+msgid "Could not export ''{0}''."
+msgstr "Could not export \"{0}\""
+
+msgid "Could not import ''{0}''."
+msgstr "Could not import ''{0}''."
+
+msgid "Could not import files."
+msgstr "Could not import files."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Could not read files.<br>Error is:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Note: GPL is not compatible with the OSM licence. Do not upload GPL licensed "
+"tracks."
+
+msgid "GPS track description"
+msgstr "gps track description"
+
+msgid "Add author information"
+msgstr "Add author information"
+
+msgid "Real name"
+msgstr "Real name"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefined"
+
+msgid "Copyright year"
+msgstr "Copyright year"
+
+msgid "Keywords"
+msgstr "Keywords"
+
+msgid "Export options"
+msgstr "Export options"
+
+msgid "Export and Save"
+msgstr "Export and Save"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Error while exporting {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Choose a predefined licence"
+
+msgid "GPX Files"
+msgstr "GPX Files"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr "Image Files"
+
+msgid "folder"
+msgstr "folder"
+
+msgid "Looking for image files"
+msgstr "Looking for image files"
+
+msgid "No image files found."
+msgstr "No image files found."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 Files"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "NMEA import failure!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM Server Files bzip2 compressed"
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr "File \"{0}\" does not exist"
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "OSM Server Files"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>An error occurred while saving.<br>Error is: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>An error occurred while restoring backup file.<br>Error is: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM Server Files gzip compressed"
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Files (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Unsupported WMS file version; found {0}, expected {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9880,6 +10280,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Hide this message and never show it again"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Unable to create directory {0}, autosave will be disabled"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Unable to create file {0}, other filename will be used"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError while creating file, autosave will be skipped: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Unable to delete old backup file {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Your work has been saved automatically."
+
+msgid "Restoring files"
+msgstr "Restoring files"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Customise Colour"
 
@@ -9983,6 +10410,9 @@ msgstr "Total notes:"
 msgid "Changes need uploading?"
 msgstr "Changes need uploading?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "outside downloaded area"
 
@@ -10058,6 +10488,9 @@ msgstr "Validation errors"
 msgid "No validation errors"
 msgstr "No validation errors"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Set WMS Bookmark"
 
@@ -10676,9 +11109,6 @@ msgstr "(URL was: "
 msgid "Select the map painting styles"
 msgstr "Select the map painting styles"
 
-msgid "loading style ''{0}''..."
-msgstr "loading style ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10692,6 +11122,9 @@ msgstr[1] ""
 "There were {0} errors when loading this style. Select ''Info'' from the "
 "right click menu for details."
 
+msgid "loading style ''{0}''..."
+msgstr "loading style ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 
@@ -11212,27 +11645,6 @@ msgstr "Download plug-ins"
 msgid "Icon paths:"
 msgstr ""
 
-msgid "Short Description:"
-msgstr ""
-
-msgid "Author:"
-msgstr ""
-
-msgid "Webpage:"
-msgstr ""
-
-msgid "Description:"
-msgstr ""
-
-msgid "Version:"
-msgstr ""
-
-msgid "Minimum JOSM Version:"
-msgstr ""
-
-msgid "by {0}"
-msgstr ""
-
 msgid "Name (optional):"
 msgstr ""
 
@@ -12346,19 +12758,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Map Settings"
 
@@ -12438,12 +12837,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12932,9 +13325,6 @@ msgstr "OSM password:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Current credential manager is of type ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12952,12 +13342,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr "Save to preferences"
 
@@ -13148,69 +13532,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13456,6 +13777,37 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr "Min. latitude"
 
@@ -13584,9 +13936,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Deleted member {0} is used by relation {1}"
 
-msgid "All Formats"
-msgstr "All Formats"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Downloading points {0} to {1}..."
 
@@ -13693,90 +14042,6 @@ msgstr "Parsing response from server..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Unexpected XML element with name ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Could not export \"{0}\""
-
-msgid "Could not import ''{0}''."
-msgstr "Could not import ''{0}''."
-
-msgid "Could not import files."
-msgstr "Could not import files."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Could not read files.<br>Error is:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Note: GPL is not compatible with the OSM licence. Do not upload GPL licensed "
-"tracks."
-
-msgid "GPS track description"
-msgstr "gps track description"
-
-msgid "Add author information"
-msgstr "Add author information"
-
-msgid "Real name"
-msgstr "Real name"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefined"
-
-msgid "Copyright year"
-msgstr "Copyright year"
-
-msgid "Keywords"
-msgstr "Keywords"
-
-msgid "Export options"
-msgstr "Export options"
-
-msgid "Export and Save"
-msgstr "Export and Save"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Error while exporting {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Choose a predefined licence"
-
-msgid "GPX Files"
-msgstr "GPX Files"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parse error: invalid document structure for gpx document"
 
@@ -13786,18 +14051,6 @@ msgstr "(at line {0}, column {1})"
 msgid "Unknown mode {0}."
 msgstr "Unknown mode {0}."
 
-msgid "Image Files"
-msgstr "Image Files"
-
-msgid "folder"
-msgstr "folder"
-
-msgid "Looking for image files"
-msgstr "Looking for image files"
-
-msgid "No image files found."
-msgstr "No image files found."
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13849,36 +14102,9 @@ msgstr "Fetching relation with id {0} from ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server replied with response code 404 for id {0}. Skipping."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 Files"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "NMEA import failure!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer exception, possibly some missing tags."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13969,9 +14195,6 @@ msgstr "(Code={0})"
 msgid "The server replied an error with code {0}."
 msgstr "The server replied an error with code {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM Server Files bzip2 compressed"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Prolog of OsmChange document already written. Please write only once."
@@ -13979,18 +14202,6 @@ msgstr ""
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr "File \"{0}\" does not exist"
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr "Unsupported version: {0}"
 
@@ -14038,37 +14249,9 @@ msgstr "Failed to sign a HTTP connection with an OAuth Authentication header"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM Server Files"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>An error occurred while saving.<br>Error is: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>An error occurred while restoring backup file.<br>Error is: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM Server Files gzip compressed"
-
 msgid "Parsing OSM history data ..."
 msgstr "Parsing OSM history data ..."
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -14206,6 +14389,9 @@ msgstr "Contacting Server..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14264,14 +14450,8 @@ msgstr "Unexpected id 0 for osm primitive found"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Files (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -15278,33 +15458,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -15363,20 +15516,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15400,117 +15539,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "You have encountered a bug in JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Report Bug"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19227,9 +19262,6 @@ msgstr "Board Content"
 msgid "notice"
 msgstr "notice"
 
-msgid "history"
-msgstr "history"
-
 msgid "nature"
 msgstr "nature"
 
@@ -19809,6 +19841,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22249,6 +22284,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -23109,6 +23147,78 @@ msgstr "Commercial"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23804,6 +23914,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24556,6 +24669,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24666,15 +24782,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32627,15 +32734,21 @@ msgstr "to previous value (unchanged mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Photo Geotagging Plug-in"
 
-msgid "Writing position information to image files..."
-msgstr "Writing position information to image files..."
-
 msgid "Could not read mtime."
 msgstr "Could not read mtime."
 
 msgid "Could not write mtime."
 msgstr "Could not write mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Writing position information to image files..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "File could not be deleted!"
 
@@ -33131,6 +33244,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33139,6 +33255,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/en_CA.po b/i18n/po/en_CA.po
index dcf0fe5..cc5db3a 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:08+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:08+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Help"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoring malformed URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Warning"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoring malformed file URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
-
 msgid "About"
 msgstr "About"
 
@@ -180,6 +135,9 @@ msgstr "Cancel"
 msgid "Click to abort launching external browsers"
 msgstr "Click to abort launching external browsers"
 
+msgid "Warning"
+msgstr "Warning"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Please select at least one already uploaded node, way, or relation."
 
@@ -462,13 +420,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Download from OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Download map data from the OSM server."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -476,9 +431,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -545,6 +497,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Help"
+
 msgid "History"
 msgstr ""
 
@@ -1044,23 +999,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2315,36 +2253,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2631,86 +2539,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2728,9 +2556,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3077,57 +2902,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3217,6 +2997,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3345,6 +3131,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3359,6 +3154,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3395,15 +3193,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3429,21 +3280,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3477,6 +3318,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3554,6 +3505,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3738,9 +3804,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3925,9 +3988,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4466,9 +4526,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4583,45 +4640,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoring malformed URL: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoring malformed file URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4711,6 +4737,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5172,6 +5258,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5866,6 +6025,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6422,9 +6595,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6535,9 +6705,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7930,49 +8097,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
 msgstr ""
 
+msgid "Download object"
+msgstr "Download object"
+
+msgid "Start downloading"
+msgstr "Start downloading"
+
 msgid ""
-"<html>Autostart ''Download from OSM'' dialog every time JOSM is "
-"started.<br>You can open it manually from File menu or toolbar.</html>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7984,36 +8189,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Download object"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Start downloading"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8058,9 +8274,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8598,6 +8811,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9075,9 +9300,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9156,6 +9378,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9263,6 +9657,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9366,6 +9787,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9439,6 +9863,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10008,9 +10435,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10020,6 +10444,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10433,55 +10860,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11567,19 +11973,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11659,12 +12052,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12130,9 +12517,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12150,12 +12534,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12336,69 +12714,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12642,6 +12957,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12754,9 +13092,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12859,86 +13194,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12948,18 +13203,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13011,36 +13254,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13128,27 +13344,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13194,35 +13395,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13354,6 +13529,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13411,13 +13589,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14353,33 +14525,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14438,20 +14583,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14475,109 +14606,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18290,9 +18325,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18872,6 +18904,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21312,6 +21347,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22172,6 +22210,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22867,6 +22977,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23619,6 +23732,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23729,15 +23845,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31589,13 +31696,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32093,6 +32206,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32101,6 +32217,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/en_GB.po b/i18n/po/en_GB.po
index e6055c9..9cb34b0 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +18,7 @@ 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-08-13 05:06+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:05+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: de\n"
 
@@ -58,54 +58,9 @@ msgstr "Background Terms of Use"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Opening link not supported on current platform (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Executing platform startup hook"
-
-msgid "Building main menu"
-msgstr "Building main menu"
-
-msgid "Help"
-msgstr "Help"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Initialising OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Initialising validator"
-
-msgid "Initializing presets"
-msgstr "Initialising presets"
-
-msgid "Initializing map styles"
-msgstr "Initialising map styles"
-
-msgid "Loading imagery preferences"
-msgstr "Loading imagery preferences"
-
-msgid "Updating user interface"
-msgstr "Updating user interface"
-
 msgid "Failed to save default preferences."
 msgstr "Failed to save default preferences."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoring malformed URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Warning"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoring malformed file URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
-
 msgid "About"
 msgstr "About"
 
@@ -187,6 +142,9 @@ msgstr "Cancel"
 msgid "Click to abort launching external browsers"
 msgstr "Click to abort launching external browsers"
 
+msgid "Warning"
+msgstr "Warning"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Please select at least one already uploaded node, way, or relation."
 
@@ -476,14 +434,11 @@ msgstr ""
 "* One no self-crossing way with at most two of its nodes;\n"
 "* Three nodes."
 
-msgid "Download from OSM..."
-msgstr "Download from OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Download map data from the OSM server."
+msgid "Download data"
+msgstr "Download data"
 
-msgid "Please select a download area first."
-msgstr "Please select a download area first."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -492,9 +447,6 @@ msgstr ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 
-msgid "Download data"
-msgstr "Download data"
-
 msgid "Download notes in current view"
 msgstr "Download notes in current view"
 
@@ -561,6 +513,9 @@ msgstr "Nothing to export. Get some data first."
 msgid "Export GPX file"
 msgstr "Export GPX file"
 
+msgid "Help"
+msgstr "Help"
+
 msgid "History"
 msgstr "History"
 
@@ -1112,23 +1067,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Please select ways with angles of approximately 90 or 180 degrees."
 
-msgid "Download from Overpass API ..."
-msgstr "Download from Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Download map data from Overpass API server."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Paste"
 
@@ -2479,36 +2417,6 @@ msgstr "Select relation (add)"
 msgid "Select relation"
 msgstr "Select relation"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Search..."
 
@@ -2805,93 +2713,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Searching in {0} object"
 msgstr[1] "Searching in {0} objects"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Cannot parse timestamp ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Expecting {0} after {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Range of primitive ids expected"
-
-msgid "Range of changeset ids expected"
-msgstr "Range of changeset ids expected"
-
-msgid "Range of versions expected"
-msgstr "Range of versions expected"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "Key cannot be empty when tag operator is used. Sample use: key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Unknown primitive type: {0}. Allowed values are node, way or relation"
-
-msgid "Positive integer expected"
-msgstr "Positive integer expected"
-
-msgid "Range of numbers expected"
-msgstr "Range of numbers expected"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Unexpected token. Expected {0}, found {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Failed to parse MapCSS selector"
-
-msgid "Unexpected token: {0}"
-msgstr "Unexpected token: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Missing parameter for OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Missing parameter for XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Missing operator for NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 
@@ -2911,9 +2732,6 @@ msgstr "{0} nodes in way {1} exceed the max. allowed number of nodes {2}"
 msgid "API Capabilities Violation"
 msgstr "API Capabilities Violation"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cyclic dependency between relations:"
-
 msgid "Removed obsolete tags"
 msgstr "Removed obsolete tags"
 
@@ -3291,60 +3109,12 @@ msgstr "Roles in relations referring to"
 msgid "Automatic tag correction"
 msgstr "Automatic tag correction"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Unable to create directory {0}, autosave will be disabled"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Unable to create file {0}, other filename will be used"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError while creating file, autosave will be skipped: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Unable to delete old backup file {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Your work has been saved automatically."
-
-msgid "Restoring files"
-msgstr "Restoring files"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Unable to delete backup file {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Unable to delete PID file {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Unable to delete archived backup file {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Illegal latitude value ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Illegal longitude value ''{0}''"
 
-msgid "Question"
-msgstr "Question"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Enter text"
-msgstr "Enter text"
-
-msgid "Installing plugins"
-msgstr "Installing plugins"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Failed to create missing cache directory: {0}"
 
@@ -3451,6 +3221,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Preference setting {0} has been removed since it is no longer used."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+
 msgid "Metric"
 msgstr "Metric"
 
@@ -3584,6 +3363,15 @@ msgstr ""
 msgid "Note"
 msgstr "Note"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Failed to retrieve OAuth Access Token from credential manager"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Current credential manager is of type ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "Failed to store OAuth Access Token to credentials manager"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 expected. Got {0}."
 
@@ -3600,6 +3388,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "A primitive with ID = 0 cannot be invisible."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cyclic dependency between relations:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3642,6 +3433,59 @@ msgstr "Merging data..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' completed in {1}"
 
+msgid "incomplete"
+msgstr "incomplete"
+
+msgid "House {0}"
+msgstr "House {0}"
+
+msgid "House number {0} at {1}"
+msgstr "House number {0} at {1}"
+
+msgid "House number {0}"
+msgstr "House number {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "node"
+msgstr[1] "nodes"
+
+msgid "highway"
+msgstr "highway"
+
+msgid "railway"
+msgstr "railway"
+
+msgid "waterway"
+msgstr "waterway"
+
+msgid "landuse"
+msgstr "landuse"
+
+msgid "building"
+msgstr "building"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+msgstr[1] "{0} nodes"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} member"
+msgstr[1] "{0} members"
+
+msgid "public transport"
+msgstr "public transport"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relation"
+msgstr[1] "relations"
+
+msgid "Changeset {0}"
+msgstr "Changeset {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Error in filter <code>{0}</code>:<br>{1}"
 
@@ -3679,21 +3523,11 @@ msgid ""
 msgstr ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "node"
-msgstr[1] "nodes"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "way"
 msgstr[1] "ways"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relation"
-msgstr[1] "relations"
-
 msgid "closedway"
 msgstr "closed way"
 
@@ -3730,6 +3564,123 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "parameter {0} not in range 0..{1}, got {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Cannot parse timestamp ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Expecting {0} after {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Range of primitive ids expected"
+
+msgid "Range of changeset ids expected"
+msgstr "Range of changeset ids expected"
+
+msgid "Range of versions expected"
+msgstr "Range of versions expected"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "Key cannot be empty when tag operator is used. Sample use: key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Unknown primitive type: {0}. Allowed values are node, way or relation"
+
+msgid "Positive integer expected"
+msgstr "Positive integer expected"
+
+msgid "Range of numbers expected"
+msgstr "Range of numbers expected"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Failed to parse MapCSS selector"
+
+msgid "Unexpected token: {0}"
+msgstr "Unexpected token: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Missing parameter for OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Missing parameter for XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Missing operator for NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Unexpected token. Expected {0}, found {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Failed to load map renderer class ''{0}''. The class wasn''t found."
 
@@ -3812,6 +3763,122 @@ msgstr "Expected element ''{0}'', but got ''{1}''"
 msgid "value expected"
 msgstr "value expected"
 
+msgid "Short Description:"
+msgstr "Short description:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Author:"
+
+msgid "Webpage:"
+msgstr "Webpage:"
+
+msgid "Description:"
+msgstr "Description:"
+
+msgid "Version:"
+msgstr "Version:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimum JOSM version:"
+
+msgid "by {0}"
+msgstr "by {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM default (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Internal style to be used as base for runtime switchable overlay styles"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "the main Potlatch 2 style"
+
+msgid "Internal Preset"
+msgstr "Internal preset"
+
+msgid "The default preset for JOSM"
+msgstr "The default preset for JOSM"
+
+msgid "Addresses"
+msgstr "Addresses"
+
+msgid "Checks for errors on addresses"
+msgstr "Checks for errors on addresses"
+
+msgid "Tag combinations"
+msgstr "Tag combinations"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Checks for missing tag or suspicious combinations"
+
+msgid "Deprecated features"
+msgstr "Deprecated features"
+
+msgid "Checks for deprecated features"
+msgstr "Checks for deprecated features"
+
+msgid "Geometry"
+msgstr "Geometry"
+
+msgid "Checks for geometry errors"
+msgstr "Checks for geometry errors"
+
+msgid "Highways"
+msgstr "Highways"
+
+msgid "Checks for errors on highways"
+msgstr "Checks for errors on highways"
+
+msgid "Multiple values"
+msgstr "Multiple values"
+
+msgid "Checks for wrong multiple values"
+msgstr "Checks for wrong multiple values"
+
+msgid "Numeric values"
+msgstr "Numeric values"
+
+msgid "Checks for wrong numeric values"
+msgstr "Checks for wrong numeric values"
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr "Checks for errors on religious objects"
+
+msgid "Relations"
+msgstr "Relations"
+
+msgid "Checks for errors on relations"
+msgstr "Checks for errors on relations"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Unnecessary tags"
+
+msgid "Checks for unnecessary tags"
+msgstr "Checks for unnecessary tags"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Checks for wrong wikipedia tags"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 
@@ -4000,9 +4067,6 @@ msgstr "URL contains an invalid fragment: {0}"
 msgid "URL validator"
 msgstr "URL validator"
 
-msgid "Addresses"
-msgstr "Addresses"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Checks for errors in addresses and associatedStreet relations."
 
@@ -4194,9 +4258,6 @@ msgstr "Duplicated way nodes"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Checks for ways with identical consecutive nodes."
 
-msgid "Highways"
-msgstr "Highways"
-
 msgid "Performs semantic checks on highways."
 msgstr "Performs semantic checks on highways."
 
@@ -4753,9 +4814,6 @@ msgstr "waterway type {0}"
 msgid "boundary type {0}"
 msgstr "boundary type {0}"
 
-msgid "building"
-msgstr "building"
-
 msgid "area"
 msgstr "area"
 
@@ -4870,45 +4928,14 @@ msgstr "Do not show again (this session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Do not show again (remembers choice)"
 
-msgid "incomplete"
-msgstr "incomplete"
-
-msgid "House {0}"
-msgstr "House {0}"
-
-msgid "House number {0} at {1}"
-msgstr "House number {0} at {1}"
-
-msgid "House number {0}"
-msgstr "House number {0}"
-
-msgid "highway"
-msgstr "highway"
-
-msgid "railway"
-msgstr "railway"
-
-msgid "waterway"
-msgstr "waterway"
-
-msgid "landuse"
-msgstr "landuse"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-msgstr[1] "{0} nodes"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} member"
-msgstr[1] "{0} members"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoring malformed URL: \"{0}\""
 
-msgid "public transport"
-msgstr "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoring malformed file URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
 msgid "Precondition violation"
 msgstr "Precondition violation"
@@ -4998,6 +5025,70 @@ msgstr "Offset"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Outdated Java version"
+
+msgid "Update Java"
+msgstr "Update Java"
+
+msgid "You are running version {0} of Java."
+msgstr "You are running version {0} of Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Would you like to update now ?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Executing platform startup hook"
+
+msgid "Building main menu"
+msgstr "Building main menu"
+
+msgid "Updating user interface"
+msgstr "Updating user interface"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Initialising OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Initialising validator"
+
+msgid "Initializing presets"
+msgstr "Initialising presets"
+
+msgid "Initializing map styles"
+msgstr "Initialising map styles"
+
+msgid "Loading imagery preferences"
+msgstr "Loading imagery preferences"
+
 msgid "usage"
 msgstr "usage"
 
@@ -5492,6 +5583,89 @@ msgstr "Please enter a tile index"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "The current value isn''t a valid tile index for the given zoom level"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "You have encountered a bug in JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+
+msgid "Debug information"
+msgstr "Debug information"
+
+msgid "Manually report at:"
+msgstr "Manually report at:"
+
+msgid "Is JOSM up to date?"
+msgstr "Is JOSM up to date?"
+
+msgid "Send bug report"
+msgstr "Send bug report"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+
+msgid "Report Bug"
+msgstr "Report Bug"
+
+msgid "Suppress this error for this session."
+msgstr "Suppress this error for this session."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Suppress further error dialogues for this session."
+
+msgid "Ignore this error."
+msgstr "Ignore this error."
+
+msgid "Include the system status report."
+msgstr "Include the system status report."
+
+msgid "Include information about the data you were working on."
+msgstr "Include information about the data you were working on."
+
+msgid "Include all stack traces."
+msgstr "Include all stack traces."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Your current version of JOSM is {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM is searching for updates..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "An error occured while checking if your JOSM instance is up to date."
+
+msgid "JOSM is up to date."
+msgstr "JOSM is up to date."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM is out of date. The current version is {0}. Try updating JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+
+msgid "Update JOSM"
+msgstr "Update JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflict background: no conflict"
 
@@ -6246,6 +6420,22 @@ msgstr ""
 "objects are removed.  Do you want to paste the data without the incomplete "
 "objects?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Do you want to paste these tags?"
+
+msgid "Clear buffer"
+msgstr "Clear buffer"
+
+msgid "Ignore warnings"
+msgstr "Ignore warnings"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+
 msgid "For selected objects only"
 msgstr "For selected objects only"
 
@@ -6840,9 +7030,6 @@ msgstr "Source"
 msgid "Title:"
 msgstr "Title:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Built-in Style, internal path:"
 
@@ -6957,9 +7144,6 @@ msgstr ""
 "Invalid ID list specified\n"
 "Cannot continue."
 
-msgid "Relations"
-msgstr "Relations"
-
 msgid "Open a list of all relations."
 msgstr "Open a list of all relations."
 
@@ -8444,24 +8628,6 @@ msgstr "Value for latitude in range [-90,90] required."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Value for longitude in range [-180,180] required."
 
-msgid "Data Sources and Types:"
-msgstr "Data Sources and Types:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap data"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Select to download OSM data in the selected download area."
-
-msgid "Raw GPS data"
-msgstr "Raw GPS data"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Select to download GPS traces in the selected download area."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Select to download notes in the selected download area."
-
 msgid "Download as new layer"
 msgstr "Download as new layer"
 
@@ -8495,30 +8661,12 @@ msgstr ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
 "map, wheel or +/- to zoom."
 
-msgid "No area selected yet"
-msgstr "No area selected yet"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Download area too large, will probably be rejected by server"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Download area ok, size probably acceptable to server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Click to close the dialogue and to abort downloading"
 
 msgid "Click to download the currently selected area"
 msgstr "Click to download the currently selected area"
 
-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>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>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Download referrers (parent relations)"
 
@@ -8541,6 +8689,91 @@ msgstr "Select if the members of a relation should be downloaded as well"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Download referrers (parent relations and ways)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Data Sources and Types:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap data"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Select to download OSM data in the selected download area."
+
+msgid "Raw GPS data"
+msgstr "Raw GPS data"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Select to download GPS traces in the selected download area."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Select to download notes in the selected download area."
+
+msgid "Please select a download area first."
+msgstr "Please select a download area first."
+
+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>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>"
+
+msgid "No area selected yet"
+msgstr "No area selected yet"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Download area too large, will probably be rejected by server"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Download area ok, size probably acceptable to server"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "history"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8583,9 +8816,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Parse error"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9176,6 +9406,18 @@ msgstr "Authenticate with the supplied username and password"
 msgid "Cancel authentication"
 msgstr "Cancel authentication"
 
+msgid "Question"
+msgstr "Question"
+
+msgid "Message"
+msgstr "Message"
+
+msgid "Enter text"
+msgstr "Enter text"
+
+msgid "Installing plugins"
+msgstr "Installing plugins"
+
 msgid "Downloading file"
 msgstr "Downloading file"
 
@@ -9730,9 +9972,6 @@ msgstr "Select objects to upload"
 msgid "Cancel uploading"
 msgstr "Cancel uploading"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Fill up one changeset and return to the Upload dialogue"
 
@@ -9815,6 +10054,188 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} object to delete:"
 msgstr[1] "{0} objects to delete:"
 
+msgid "All Formats"
+msgstr "All Formats"
+
+msgid "Could not export ''{0}''."
+msgstr "Could not export \"{0}\""
+
+msgid "Could not import ''{0}''."
+msgstr "Could not import ''{0}''."
+
+msgid "Could not import files."
+msgstr "Could not import files."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Could not read files.<br>Error is:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON Files"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Layer ''{0}'' not supported"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Note: GPL is not compatible with the OSM licence. Do not upload GPL licenced "
+"tracks."
+
+msgid "GPS track description"
+msgstr "gps track description"
+
+msgid "Add author information"
+msgstr "Add author information"
+
+msgid "Real name"
+msgstr "Real name"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefined"
+
+msgid "Copyright year"
+msgstr "Copyright year"
+
+msgid "Keywords"
+msgstr "Keywords"
+
+msgid "Export options"
+msgstr "Export options"
+
+msgid "Export and Save"
+msgstr "Export and Save"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Error while exporting {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Choose a predefined licence"
+
+msgid "GPX Files"
+msgstr "GPX Files"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Parsing data for layer ''{0}'' failed"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+
+msgid "Image Files"
+msgstr "Image Files"
+
+msgid "folder"
+msgstr "folder"
+
+msgid "Looking for image files"
+msgstr "Looking for image files"
+
+msgid "No image files found."
+msgstr "No image files found."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 Files"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordinates imported: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Malformed sentences: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Checksum errors: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Unknown sentences: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Zero coordinates: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA import success:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA import failure!"
+
+msgid "Note Files"
+msgstr "Note Files"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM Server Files bzip2 compressed"
+
+msgid "OsmChange File"
+msgstr "OsmChange File"
+
+msgid "File ''{0}'' does not exist."
+msgstr "File \"{0}\" does not exist"
+
+msgid "No data found in file {0}."
+msgstr "No data found in file {0}."
+
+msgid "Open OsmChange file"
+msgstr "Open OsmChange file"
+
+msgid "OSM Server Files"
+msgstr "OSM Server Files"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>An error occurred while saving.<br>Error is: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>An error occurred while restoring backup file.<br>Error is: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM Server Files gzip compressed"
+
+msgid "Invalid dataset"
+msgstr "Invalid dataset"
+
+msgid "No data found for layer ''{0}''."
+msgstr "No data found for layer ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "No data found in file ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Open OSM file"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Files (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Unsupported WMS file version; found {0}, expected {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9924,6 +10345,33 @@ msgstr "Do not show this message again"
 msgid "Hide this message and never show it again"
 msgstr "Hide this message and never show it again"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Unable to create directory {0}, autosave will be disabled"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Unable to create file {0}, other filename will be used"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError while creating file, autosave will be skipped: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Unable to delete old backup file {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Your work has been saved automatically."
+
+msgid "Restoring files"
+msgstr "Restoring files"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Unable to delete backup file {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Unable to delete PID file {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Unable to delete archived backup file {0}"
+
 msgid "Customize Color"
 msgstr "Customise Colour"
 
@@ -10027,6 +10475,9 @@ msgstr "Total notes:"
 msgid "Changes need uploading?"
 msgstr "Changes need uploading?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "outside downloaded area"
 
@@ -10102,6 +10553,9 @@ msgstr "Validation errors"
 msgid "No validation errors"
 msgstr "No validation errors"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Set WMS Bookmark"
 
@@ -10720,9 +11174,6 @@ msgstr "(URL was: "
 msgid "Select the map painting styles"
 msgstr "Select the map painting styles"
 
-msgid "loading style ''{0}''..."
-msgstr "loading style ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10736,6 +11187,9 @@ msgstr[1] ""
 "There were {0} errors when loading this style. Select ''Info'' from the "
 "right click menu for details."
 
+msgid "loading style ''{0}''..."
+msgstr "loading style ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 
@@ -11259,27 +11713,6 @@ msgstr "Download plug-ins"
 msgid "Icon paths:"
 msgstr "Icon paths:"
 
-msgid "Short Description:"
-msgstr "Short description:"
-
-msgid "Author:"
-msgstr "Author:"
-
-msgid "Webpage:"
-msgstr "Webpage:"
-
-msgid "Description:"
-msgstr "Description:"
-
-msgid "Version:"
-msgstr "Version:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimum JOSM version:"
-
-msgid "by {0}"
-msgstr "by {0}"
-
 msgid "Name (optional):"
 msgstr "Name (optional):"
 
@@ -12427,20 +12860,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM default (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Internal style to be used as base for runtime switchable overlay styles"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "the main Potlatch 2 style"
-
 msgid "Map Settings"
 msgstr "Map Settings"
 
@@ -12533,12 +12952,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr "Warning: Illegal format of entry in preset list ''{0}''. Got ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Internal preset"
-
-msgid "The default preset for JOSM"
-msgstr "The default preset for JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Plugin {0} is still required by this plugin:"
@@ -13038,9 +13451,6 @@ msgstr "OSM password:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Failed to retrieve OSM credentials from credential manager."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Current credential manager is of type ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Failed to save OSM credentials to credential manager."
 
@@ -13060,12 +13470,6 @@ msgstr ""
 "Specifies the number of days a note needs to be closed to no longer be "
 "downloaded"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Failed to retrieve OAuth Access Token from credential manager"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "Failed to store OAuth Access Token to credentials manager"
-
 msgid "Save to preferences"
 msgstr "Save to preferences"
 
@@ -13260,69 +13664,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr "Warning: Illegal format of entry in rule list ''{0}''. Got ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Checks for errors on addresses"
-
-msgid "Tag combinations"
-msgstr "Tag combinations"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Checks for missing tag or suspicious combinations"
-
-msgid "Deprecated features"
-msgstr "Deprecated features"
-
-msgid "Checks for deprecated features"
-msgstr "Checks for deprecated features"
-
-msgid "Geometry"
-msgstr "Geometry"
-
-msgid "Checks for geometry errors"
-msgstr "Checks for geometry errors"
-
-msgid "Checks for errors on highways"
-msgstr "Checks for errors on highways"
-
-msgid "Multiple values"
-msgstr "Multiple values"
-
-msgid "Checks for wrong multiple values"
-msgstr "Checks for wrong multiple values"
-
-msgid "Numeric values"
-msgstr "Numeric values"
-
-msgid "Checks for wrong numeric values"
-msgstr "Checks for wrong numeric values"
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr "Checks for errors on religious objects"
-
-msgid "Checks for errors on relations"
-msgstr "Checks for errors on relations"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Unnecessary tags"
-
-msgid "Checks for unnecessary tags"
-msgstr "Checks for unnecessary tags"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Checks for wrong wikipedia tags"
-
 msgid "Tag checker rules"
 msgstr "Tag checker rules"
 
@@ -13580,6 +13921,37 @@ msgstr "All files (*.*)"
 msgid "Received error page:"
 msgstr "Received error page:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignoring malformed geometry: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. latitude"
 
@@ -13710,9 +14082,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Deleted member {0} is used by relation {1}"
 
-msgid "All Formats"
-msgstr "All Formats"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Downloading points {0} to {1}..."
 
@@ -13834,94 +14203,6 @@ msgstr "Parsing response from server..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Unexpected XML element with name ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Could not export \"{0}\""
-
-msgid "Could not import ''{0}''."
-msgstr "Could not import ''{0}''."
-
-msgid "Could not import files."
-msgstr "Could not import files."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Could not read files.<br>Error is:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON Files"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Layer ''{0}'' not supported"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Note: GPL is not compatible with the OSM licence. Do not upload GPL licenced "
-"tracks."
-
-msgid "GPS track description"
-msgstr "gps track description"
-
-msgid "Add author information"
-msgstr "Add author information"
-
-msgid "Real name"
-msgstr "Real name"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefined"
-
-msgid "Copyright year"
-msgstr "Copyright year"
-
-msgid "Keywords"
-msgstr "Keywords"
-
-msgid "Export options"
-msgstr "Export options"
-
-msgid "Export and Save"
-msgstr "Export and Save"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Error while exporting {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Choose a predefined licence"
-
-msgid "GPX Files"
-msgstr "GPX Files"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Parsing data for layer ''{0}'' failed"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parse error: invalid document structure for gpx document"
 
@@ -13931,18 +14212,6 @@ msgstr "(at line {0}, column {1})"
 msgid "Unknown mode {0}."
 msgstr "Unknown mode {0}."
 
-msgid "Image Files"
-msgstr "Image Files"
-
-msgid "folder"
-msgstr "folder"
-
-msgid "Looking for image files"
-msgstr "Looking for image files"
-
-msgid "No image files found."
-msgstr "No image files found."
-
 msgid "get number of unread messages"
 msgstr "get number of unread messages"
 
@@ -13996,36 +14265,9 @@ msgstr "Fetching relation with id {0} from ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server replied with response code 404 for id {0}. Skipping."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 Files"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordinates imported: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Malformed sentences: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Checksum errors: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Unknown sentences: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Zero coordinates: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA import success:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA import failure!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer exception, possibly some missing tags."
 
-msgid "Note Files"
-msgstr "Note Files"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14116,9 +14358,6 @@ msgstr "(Code={0})"
 msgid "The server replied an error with code {0}."
 msgstr "The server replied an error with code {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM Server Files bzip2 compressed"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Prolog of OsmChange document already written. Please write only once."
@@ -14126,18 +14365,6 @@ msgstr ""
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr "Prolog of OsmChange document not written yet. Please write first."
 
-msgid "OsmChange File"
-msgstr "OsmChange File"
-
-msgid "File ''{0}'' does not exist."
-msgstr "File \"{0}\" does not exist"
-
-msgid "No data found in file {0}."
-msgstr "No data found in file {0}."
-
-msgid "Open OsmChange file"
-msgstr "Open OsmChange file"
-
 msgid "Unsupported version: {0}"
 msgstr "Unsupported version: {0}"
 
@@ -14189,37 +14416,9 @@ msgstr "Failed to sign a HTTP connection with an OAuth Authentication header"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Unexpected value for preference ''{0}''. Got ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM Server Files"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>An error occurred while saving.<br>Error is: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>An error occurred while restoring backup file.<br>Error is: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM Server Files gzip compressed"
-
 msgid "Parsing OSM history data ..."
 msgstr "Parsing OSM history data ..."
 
-msgid "Invalid dataset"
-msgstr "Invalid dataset"
-
-msgid "No data found for layer ''{0}''."
-msgstr "No data found for layer ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "No data found in file ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Open OSM file"
-
 msgid "Reading was canceled"
 msgstr "Reading was cancelled"
 
@@ -14359,6 +14558,9 @@ msgstr "Contacting Server..."
 msgid "Downloading OSM notes..."
 msgstr "Downloading OSM notes..."
 
+msgid "Downloading data..."
+msgstr "Downloading data..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14417,14 +14619,8 @@ msgstr "Unexpected id 0 for osm primitive found"
 msgid "Failed to evaluate {0}"
 msgstr "Failed to evaluate {0}"
 
-msgid "Downloading data..."
-msgstr "Downloading data..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Files (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bytes have been read"
@@ -15555,37 +15751,6 @@ msgstr "Opening URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL does not contain {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Outdated Java version"
-
-msgid "Update Java"
-msgstr "Update Java"
-
-msgid "You are running version {0} of Java."
-msgstr "You are running version {0} of Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Would you like to update now ?"
-
 msgid "reserved"
 msgstr "reserved"
 
@@ -15655,22 +15820,6 @@ msgstr "Suspicious characters in key:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Value is too long (max {0} characters):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Do you want to paste these tags?"
-
-msgid "Clear buffer"
-msgstr "Clear buffer"
-
-msgid "Ignore warnings"
-msgstr "Ignore warnings"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Unable to delete file {0}"
 
@@ -15694,128 +15843,14 @@ msgid_plural "days"
 msgstr[0] "day"
 msgstr[1] "days"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignoring malformed geometry: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Failed to load XML schema."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "You have encountered a bug in JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-
-msgid "Debug information"
-msgstr "Debug information"
-
-msgid "Manually report at:"
-msgstr "Manually report at:"
-
-msgid "Is JOSM up to date?"
-msgstr "Is JOSM up to date?"
-
-msgid "Send bug report"
-msgstr "Send bug report"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-
-msgid "Report Bug"
-msgstr "Report Bug"
-
-msgid "Suppress this error for this session."
-msgstr "Suppress this error for this session."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Suppress further error dialogues for this session."
-
-msgid "Ignore this error."
-msgstr "Ignore this error."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Opening the bug report failed. Please report manually using this website:"
 
-msgid "Include the system status report."
-msgstr "Include the system status report."
-
-msgid "Include information about the data you were working on."
-msgstr "Include information about the data you were working on."
-
-msgid "Include all stack traces."
-msgstr "Include all stack traces."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Your current version of JOSM is {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM is searching for updates..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "An error occured while checking if your JOSM instance is up to date."
-
-msgid "JOSM is up to date."
-msgstr "JOSM is up to date."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM is out of date. The current version is {0}. Try updating JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-
-msgid "Update JOSM"
-msgstr "Update JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19567,9 +19602,6 @@ msgstr "Board Content"
 msgid "notice"
 msgstr "notice"
 
-msgid "history"
-msgstr "history"
-
 msgid "nature"
 msgstr "nature"
 
@@ -20150,6 +20182,9 @@ msgstr "Social Facility"
 msgid "Nursing Home"
 msgstr "Nursing home"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Group Home"
 
@@ -22592,6 +22627,9 @@ msgstr "Gift/Souvenir"
 msgid "Variety Store"
 msgstr "Variety Store"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Bookmaker"
 
@@ -23470,6 +23508,78 @@ msgstr "Commercial"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garages"
 
@@ -24169,6 +24279,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -24921,6 +25034,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25033,15 +25149,6 @@ msgstr "Old map of Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -33376,15 +33483,21 @@ msgstr "to previous value (unchanged mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Photo Geotagging Plug-in"
 
-msgid "Writing position information to image files..."
-msgstr "Writing position information to image files..."
-
 msgid "Could not read mtime."
 msgstr "Could not read mtime."
 
 msgid "Could not write mtime."
 msgstr "Could not write mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Writing position information to image files..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "File could not be deleted!"
 
@@ -33892,6 +34005,9 @@ msgstr "Fix error"
 msgid "PT: dummy test warning"
 msgstr "PT: dummy test warning"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "PT: Route contains a gap that can be fixed by sorting"
 
@@ -33900,6 +34016,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/eo.po b/i18n/po/eo.po
index 53a5ce7..3657183 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:41+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:40+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: eo\n"
 
@@ -55,55 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Malfermo de ligilo estas ne subtenata sur nuna platformo (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Ekzekutado de lanĉada hoko de platformo"
-
-msgid "Building main menu"
-msgstr "Konstruado de ĉefa menuo"
-
-msgid "Help"
-msgstr "Helpu"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Pravalorizado de API de OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Pravalorizado de kontrolilo"
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr "Ĝisdatigado de uzantinterfaco"
-
 msgid "Failed to save default preferences."
 msgstr "Malsukcesis konservi defaŭltajn agordojn."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Averto"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Parametro \"downloadgps\" ne akceptas dosiernomojn aŭ URLjn de dosiero."
-
 msgid "About"
 msgstr "Pri"
 
@@ -185,6 +139,9 @@ msgstr "Nuligi"
 msgid "Click to abort launching external browsers"
 msgstr "Klaki por abortigi eksternajn retumilojn"
 
+msgid "Warning"
+msgstr "Averto"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -463,13 +420,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -477,9 +431,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -546,6 +497,9 @@ msgstr "Neniu eksportendaĵo. Unue ricevu datumojn."
 msgid "Export GPX file"
 msgstr "Eksportu GPX dosieron"
 
+msgid "Help"
+msgstr "Helpu"
+
 msgid "History"
 msgstr ""
 
@@ -1045,23 +999,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Algluu"
 
@@ -2316,36 +2253,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr "<ne>"
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2632,86 +2539,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2729,9 +2556,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3078,57 +2902,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3218,6 +2997,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3346,6 +3131,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3360,6 +3154,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3396,11 +3193,64 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
-msgstr ""
+msgid "House {0}"
+msgstr "Domo {0}"
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr "Numero domo {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
 msgid_plural "<p><b>{0}</b> objects hidden"
@@ -3430,21 +3280,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3478,6 +3318,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr "<ne>"
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3555,6 +3505,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3739,9 +3804,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3926,9 +3988,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4467,9 +4526,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4582,47 +4638,17 @@ msgid "Do not show again (this session)"
 msgstr ""
 
 msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr "Domo {0}"
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr "Numero domo {0}"
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"Parametro \"downloadgps\" ne akceptas dosiernomojn aŭ URLjn de dosiero."
 
 msgid "Precondition violation"
 msgstr ""
@@ -4712,6 +4738,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Ekzekutado de lanĉada hoko de platformo"
+
+msgid "Building main menu"
+msgstr "Konstruado de ĉefa menuo"
+
+msgid "Updating user interface"
+msgstr "Ĝisdatigado de uzantinterfaco"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Pravalorizado de API de OSM"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Pravalorizado de kontrolilo"
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5173,6 +5259,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5867,6 +6026,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6423,9 +6596,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6536,9 +6706,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7931,49 +8098,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7985,36 +8190,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8059,9 +8275,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8599,6 +8812,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9076,9 +9301,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9157,6 +9379,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Ĉiuj aranĝoj"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Notu. La GPL-permesilo ne kongruas kun la OSM-permesilo. Bonvolu ne alŝuti "
+"trakojn, kiuj uzas GPL-permesilon."
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr "Aldoni informojn pri la aŭtoro"
+
+msgid "Real name"
+msgstr "Vera nomo"
+
+msgid "E-Mail"
+msgstr "Retpoŝto"
+
+msgid "Copyright (URL)"
+msgstr "Kopirajto (URL)"
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr "Kopirajta jaro"
+
+msgid "Keywords"
+msgstr "Ŝlosilvortoj"
+
+msgid "Export options"
+msgstr "Eksportaj opcioj"
+
+msgid "Export and Save"
+msgstr "Eksporti kaj Konservi"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Eraro dum la eksportado {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9264,6 +9662,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9367,6 +9792,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9440,6 +9868,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10009,9 +10440,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10021,6 +10449,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10440,49 +10871,28 @@ msgid ""
 "later.</html>"
 msgstr ""
 
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11568,19 +11978,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11660,12 +12057,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12131,9 +12522,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12151,12 +12539,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12337,69 +12719,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12643,6 +12962,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12755,9 +13097,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Ĉiuj aranĝoj"
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12860,90 +13199,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Notu. La GPL-permesilo ne kongruas kun la OSM-permesilo. Bonvolu ne alŝuti "
-"trakojn, kiuj uzas GPL-permesilon."
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr "Aldoni informojn pri la aŭtoro"
-
-msgid "Real name"
-msgstr "Vera nomo"
-
-msgid "E-Mail"
-msgstr "Retpoŝto"
-
-msgid "Copyright (URL)"
-msgstr "Kopirajto (URL)"
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr "Kopirajta jaro"
-
-msgid "Keywords"
-msgstr "Ŝlosilvortoj"
-
-msgid "Export options"
-msgstr "Eksportaj opcioj"
-
-msgid "Export and Save"
-msgstr "Eksporti kaj Konservi"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Eraro dum la eksportado {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12953,18 +13208,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13016,36 +13259,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13133,27 +13349,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13199,35 +13400,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13359,6 +13534,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13416,13 +13594,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14358,33 +14530,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14443,20 +14588,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14480,109 +14611,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18295,9 +18330,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18877,6 +18909,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21317,6 +21352,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22177,6 +22215,78 @@ msgstr ""
 msgid "Industrial"
 msgstr "Industriista"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22872,6 +22982,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23624,6 +23737,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23734,15 +23850,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31594,13 +31701,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32098,6 +32211,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32106,6 +32222,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/es.po b/i18n/po/es.po
index f16cb9b..5429b90 100644
--- a/i18n/po/es.po
+++ b/i18n/po/es.po
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-02 01:54+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-26 02:00+0000\n"
 "Last-Translator: Omar Vega <ovruni at gnu.org.pe>\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-08-13 05:01+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:00+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: es\n"
 "X-Language: es_ES\n"
@@ -57,54 +57,9 @@ msgstr "Condiciones de uso de la imagen de fondo"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "La apertura de enlace no se admite en la plataforma actual (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Ejecutando enganche de inicio a la plataforma"
-
-msgid "Building main menu"
-msgstr "Construyendo el menú principal"
-
-msgid "Help"
-msgstr "Ayuda"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicializando datos internos de límites"
-
-msgid "Initializing OSM API"
-msgstr "Inicializando API de OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicializando datos internos de tráfico"
-
-msgid "Initializing validator"
-msgstr "Inicializando validador"
-
-msgid "Initializing presets"
-msgstr "Inicializando predefinidos"
-
-msgid "Initializing map styles"
-msgstr "Inicializando estilos de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "Cargando preferencias de imágenes"
-
-msgid "Updating user interface"
-msgstr "Actualizando interfaz de usuario"
-
 msgid "Failed to save default preferences."
 msgstr "Error al guardar las preferencias predeterminadas."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorando URL incorrecta: \"{0}\""
-
-msgid "Warning"
-msgstr "Atención"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorando URL de archivo incorrecta: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "El parámetro «downloadgps» no acepta nombres ni URL de archivos"
-
 msgid "About"
 msgstr "Acerca de"
 
@@ -186,6 +141,9 @@ msgstr "Cancelar"
 msgid "Click to abort launching external browsers"
 msgstr "Pulse para interrumpir la apertura de los navegadores externos"
 
+msgid "Warning"
+msgstr "Atención"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Por favor, seleccione al menos un nodo, vía o relación ya subida."
 
@@ -477,14 +435,11 @@ msgstr ""
 "* Uno que no cruce el camino con un máximo de dos de sus nodos;\n"
 "* Tres nodos."
 
-msgid "Download from OSM..."
-msgstr "Descargar desde OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Descargar datos del mapa del servidor OSM."
+msgid "Download data"
+msgstr "Descargar datos"
 
-msgid "Please select a download area first."
-msgstr "Por favor, elija primero un área para descargar."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -493,9 +448,6 @@ msgstr ""
 "<html>Esta acción requiere {0} peticiones<br>individuales de "
 "descarga.<br¿Desea continuar?</html>"
 
-msgid "Download data"
-msgstr "Descargar datos"
-
 msgid "Download notes in current view"
 msgstr "Descargar notas en la vista actual"
 
@@ -563,6 +515,9 @@ msgstr "Nada para exportar. Obtenga algún dato primero."
 msgid "Export GPX file"
 msgstr "Exportar archivo GPX"
 
+msgid "Help"
+msgstr "Ayuda"
+
 msgid "History"
 msgstr "Historial"
 
@@ -1052,7 +1007,7 @@ msgid "Download Location"
 msgstr "Descargar ubicación"
 
 msgid "Download URL"
-msgstr "URL de descarga"
+msgstr "Descargar URL"
 
 msgid "Start downloading data"
 msgstr "Iniciar la descarga de datos"
@@ -1136,23 +1091,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Por favor, seleccione formas con angulos de aproximadamente 90 y 180 grados"
 
-msgid "Download from Overpass API ..."
-msgstr "Descargar desde la API Overpass..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Descargar datos del mapa desde el servidor API Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Pegar"
 
@@ -2532,36 +2470,6 @@ msgstr "Seleccione la relación (añadir)"
 msgid "Select relation"
 msgstr "Seleccionar relación"
 
-msgid "<not>"
-msgstr "<no>"
-
-msgid "<or>"
-msgstr "<o>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<padre izquierdo>"
-
-msgid "<right parent>"
-msgstr "<padre derecho>"
-
-msgid "<colon>"
-msgstr "<dos puntos>"
-
-msgid "<equals>"
-msgstr "<igual a>"
-
-msgid "<key>"
-msgstr "<clave>"
-
-msgid "<question mark>"
-msgstr "<signo de interrogacion>"
-
-msgid "<end-of-file>"
-msgstr "<final-del-archivo>"
-
 msgid "Search..."
 msgstr "Buscar…"
 
@@ -2866,97 +2774,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Buscando en {0} objeto"
 msgstr[1] "Buscando en {0} objetos"
 
-msgctxt "search"
-msgid "CS"
-msgstr "Mayúsculas y Minúsculas"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "Recepción (RX)"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"La expresión regular \"{0}\" presenta un error al deserializar en la "
-"posición {1}, error completo:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"La expresión regular \"{0}\" tuvo un error al deserializar, error completo:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "No se puede deserializar la marca de tiempo ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Se esperaba {0} después de {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Rango de ids primitivos esperado"
-
-msgid "Range of changeset ids expected"
-msgstr "Rango de ids de conjuntos de cambios esperado"
-
-msgid "Range of versions expected"
-msgstr "Rango de versiones esperados"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La clave no puede estar vacía cuando se usa el operador de etiqueta. Ejemplo "
-"de uso: clave=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipo de primitivo desconocido: {0}. Los valores permitidos son nodo, vía o "
-"relación"
-
-msgid "Positive integer expected"
-msgstr "Entero positivo esperado"
-
-msgid "Range of numbers expected"
-msgstr "Se esperaba un rango de números"
-
-msgid "Unknown preset name: "
-msgstr "Nombre predefinido desconocido: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Elemento no esperado. Se esperaba {0} pero se encontró {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Hubo un error al deserializar el selector de MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Credencial de autentificación inexperada: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Falta un parámetro para el ''OR''"
-
-msgid "Missing parameter for XOR"
-msgstr "Falta parámetro para XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Falta un para para el ''NOT''"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Truncar automáticamente el valor de la etiqueta ''{0}'' en el objeto "
@@ -2978,9 +2795,6 @@ msgstr "{0} nodos en vía {1} supera el máximo número permitido de nodos {2}"
 msgid "API Capabilities Violation"
 msgstr "Violación de la capacidades del API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependencia cíclica entre las relaciones:"
-
 msgid "Removed obsolete tags"
 msgstr "Eliminar etiquetas obsoletas"
 
@@ -3365,62 +3179,12 @@ msgstr "Funciones en la relaciones referidas a"
 msgid "Automatic tag correction"
 msgstr "Correción automática de etiquetas"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"No se puede crear el directorio {0}. Se deshabilitará el guardado automático."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Imposible crear el archivo {0}, se utilizará otro nombre de archivo"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError creando el archivo. No se guardará automáticamente: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "No se pudo borrar el anterior archivo de copia de seguridad {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Su trabajo se ha guardado automáticamente."
-
-msgid "Restoring files"
-msgstr "Restaurando archivos"
-
-msgid "Unable to delete backup file {0}"
-msgstr "No se puede eliminar el archivo de copia de seguridad {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "No se puede eliminar el archivo PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "No se puede eliminar el archivo de copia de seguridad archivado {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valor de latitud ilegal \"{0}\""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valor de longitud ilegal \"{0}\""
 
-msgid "Question"
-msgstr "Pregunta"
-
-msgid "Message"
-msgstr "Mensaje"
-
-msgid "Enter text"
-msgstr "Introducir texto"
-
-msgid "Installing plugins"
-msgstr "Instalando  complementos"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html> El archivo de configuración pide añadir las preferencias a <b> {0} </ "
-"b><br/> pero su valor por omisión es desconocido en este momento. <br/> Por "
-"favor, active la función correspondiente de forma manual y vuelva a intentar "
-"la importación."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Error al crear el directorio de caché faltante: {0}"
 
@@ -3535,6 +3299,16 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "La opción de configuración {0} ha sido eliminada porque ya no se usa."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html> El archivo de configuración pide añadir las preferencias a <b> {0} </ "
+"b><br/> pero su valor por omisión es desconocido en este momento. <br/> Por "
+"favor, active la función correspondiente de forma manual y vuelva a intentar "
+"la importación."
+
 msgid "Metric"
 msgstr "Métrico"
 
@@ -3677,6 +3451,18 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Error al recuperar el Token de Acceso OAuth desde el administrador de "
+"credenciales"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "El administrador de credenciales actual es \"{0}\""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Error almacenando el Token de Acceso OAuth en el administrador credenciales"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Se esperaba un ID >0. Obtenido {0}"
 
@@ -3693,6 +3479,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "una proimitiva con id=0 no puede ser invisible"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependencia cíclica entre las relaciones:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3737,6 +3526,59 @@ msgstr "Fusionando datos..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test \"{0}\" completado en {1}"
 
+msgid "incomplete"
+msgstr "incompleto"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Número de portal {0} en {1}"
+
+msgid "House number {0}"
+msgstr "Número de portal {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nodo"
+msgstr[1] "nodos"
+
+msgid "highway"
+msgstr "vía"
+
+msgid "railway"
+msgstr "ferrocarril"
+
+msgid "waterway"
+msgstr "curso de agua"
+
+msgid "landuse"
+msgstr "uso del suelo"
+
+msgid "building"
+msgstr "edificio"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nodo"
+msgstr[1] "{0} nodos"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} miembro"
+msgstr[1] "{0} miembros"
+
+msgid "public transport"
+msgstr "transporte público"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relación"
+msgstr[1] "relaciones"
+
+msgid "Changeset {0}"
+msgstr "Conjunto de cambios {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Error en el filtro <code>{0}</code>:<br>{1}"
 
@@ -3775,21 +3617,11 @@ msgstr ""
 "No se pueden unir primitivas con ids diferentes. Este id es {0} y el otro es "
 "{1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nodo"
-msgstr[1] "nodos"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vía"
 msgstr[1] "vías"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relación"
-msgstr[1] "relaciones"
-
 msgid "closedway"
 msgstr "vía cerrada"
 
@@ -3827,6 +3659,127 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "el parametro {0} no está en el intervalo 0..{1}, se obtuvo {2}"
 
+msgid "<not>"
+msgstr "<no>"
+
+msgid "<or>"
+msgstr "<o>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<padre izquierdo>"
+
+msgid "<right parent>"
+msgstr "<padre derecho>"
+
+msgid "<colon>"
+msgstr "<dos puntos>"
+
+msgid "<equals>"
+msgstr "<igual a>"
+
+msgid "<key>"
+msgstr "<clave>"
+
+msgid "<question mark>"
+msgstr "<signo de interrogacion>"
+
+msgid "<end-of-file>"
+msgstr "<final-del-archivo>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"La expresión regular \"{0}\" presenta un error al deserializar en la "
+"posición {1}, error completo:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"La expresión regular \"{0}\" tuvo un error al deserializar, error completo:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "No se puede deserializar la marca de tiempo ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Se esperaba {0} después de {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Rango de ids primitivos esperado"
+
+msgid "Range of changeset ids expected"
+msgstr "Rango de ids de conjuntos de cambios esperado"
+
+msgid "Range of versions expected"
+msgstr "Rango de versiones esperados"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La clave no puede estar vacía cuando se usa el operador de etiqueta. Ejemplo "
+"de uso: clave=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipo de primitivo desconocido: {0}. Los valores permitidos son nodo, vía o "
+"relación"
+
+msgid "Positive integer expected"
+msgstr "Entero positivo esperado"
+
+msgid "Range of numbers expected"
+msgstr "Se esperaba un rango de números"
+
+msgid "Unknown preset name: "
+msgstr "Nombre predefinido desconocido: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Hubo un error al deserializar el selector de MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Credencial de autentificación inexperada: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Falta un parámetro para el ''OR''"
+
+msgid "Missing parameter for XOR"
+msgstr "Falta parámetro para XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Falta un para para el ''NOT''"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Elemento no esperado. Se esperaba {0} pero se encontró {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "Mayúsculas y Minúsculas"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "Recepción (RX)"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Error al cargar la clase de renderizado de mapa ''{0}''. La clase no fue "
@@ -3914,6 +3867,123 @@ msgstr "Elemento esperado ''{0}'', pero se obtuvo ''{1}''"
 msgid "value expected"
 msgstr "valor esperado"
 
+msgid "Short Description:"
+msgstr "Descripción corta:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor/a:"
+
+msgid "Webpage:"
+msgstr "Paguina Web:"
+
+msgid "Description:"
+msgstr "Descripción:"
+
+msgid "Version:"
+msgstr "Versión:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versión Mínima de JOSM:"
+
+msgid "by {0}"
+msgstr "Por {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM por defecto (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estilo interno a usarse para estilos intercambiables en tiempo de ejecución"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "estilo principal de Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Ajuste predeterminado interno"
+
+msgid "The default preset for JOSM"
+msgstr "El ajuste predeterminado de JOSM"
+
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgid "Checks for errors on addresses"
+msgstr "Comprueba si hay errores en las direcciones"
+
+msgid "Tag combinations"
+msgstr "Combinaciones de etiquetas"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+"Verifica que no existan etiquetas faltantes o combinaciones sospechosas"
+
+msgid "Deprecated features"
+msgstr "Características en deshuso"
+
+msgid "Checks for deprecated features"
+msgstr "Verifica la existencia de características en desuso"
+
+msgid "Geometry"
+msgstr "Geometría"
+
+msgid "Checks for geometry errors"
+msgstr "Verifica la existencia de errores de geometría"
+
+msgid "Highways"
+msgstr "Viales"
+
+msgid "Checks for errors on highways"
+msgstr "Verifica la existencia de errores en los caminos"
+
+msgid "Multiple values"
+msgstr "Valores múltiples"
+
+msgid "Checks for wrong multiple values"
+msgstr "Comprueba si hay valores múltiples erróneos"
+
+msgid "Numeric values"
+msgstr "Valores numéricos"
+
+msgid "Checks for wrong numeric values"
+msgstr "Verifica que no haya valores numéricos incorrectos"
+
+msgid "Religion"
+msgstr "Religión"
+
+msgid "Checks for errors on religious objects"
+msgstr "Verifica que no haya errores en objetos religiosos"
+
+msgid "Relations"
+msgstr "Relaciones"
+
+msgid "Checks for errors on relations"
+msgstr "Verifica que no haya errores en las relaciones"
+
+msgid "Territories"
+msgstr "Territorios"
+
+msgid "Checks for territories-specific features"
+msgstr "Comprueba características específicas de los territorios"
+
+msgid "Unnecessary tags"
+msgstr "Etiquetas innecesarias"
+
+msgid "Checks for unnecessary tags"
+msgstr "Verifica la existencia de etiquetas innecesarias"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Verifica la existencia de etiquetas wikipedia incorrectas"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Proyección UTM (''+proj=utm'') requiere el parámetro ''+zone=...''."
 
@@ -4114,9 +4184,6 @@ msgstr "La URL contiene un fragmento inválido: {0}"
 msgid "URL validator"
 msgstr "Validador de URL"
 
-msgid "Addresses"
-msgstr "Direcciones"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Verifique errores en las direcciones y las relaciones de calle asociadas"
@@ -4312,9 +4379,6 @@ msgstr "Nodos de vía duplicados"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Comprueba vías con nodos idénticos consecutivos"
 
-msgid "Highways"
-msgstr "Viales"
-
 msgid "Performs semantic checks on highways."
 msgstr "Ejecuta verificaciones semánticas sobre los caminos."
 
@@ -4894,9 +4958,6 @@ msgstr "tipo de vía fluvial {0}"
 msgid "boundary type {0}"
 msgstr "tipo de límite {0}"
 
-msgid "building"
-msgstr "edificio"
-
 msgid "area"
 msgstr "área"
 
@@ -5015,45 +5076,14 @@ msgstr "No mostrar de nuevo (esta sesión)"
 msgid "Do not show again (remembers choice)"
 msgstr "No mostrar otra vez (recordar elección)"
 
-msgid "incomplete"
-msgstr "incompleto"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Número de portal {0} en {1}"
-
-msgid "House number {0}"
-msgstr "Número de portal {0}"
-
-msgid "highway"
-msgstr "vía"
-
-msgid "railway"
-msgstr "ferrocarril"
-
-msgid "waterway"
-msgstr "curso de agua"
-
-msgid "landuse"
-msgstr "uso del suelo"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nodo"
-msgstr[1] "{0} nodos"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} miembro"
-msgstr[1] "{0} miembros"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorando URL incorrecta: \"{0}\""
 
-msgid "public transport"
-msgstr "transporte público"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorando URL de archivo incorrecta: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conjunto de cambios {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "El parámetro «downloadgps» no acepta nombres ni URL de archivos"
 
 msgid "Precondition violation"
 msgstr "Violación de condición previa"
@@ -5144,6 +5174,70 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "Esperado un valor no-vacío para el parámetro ''{0}'', suministrado ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Versión desactualizada de Java"
+
+msgid "Update Java"
+msgstr "Actualizar Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Está ejecutando la versión {0} de Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr "Esta versión ya no soporta {0} desde {1} y no se recomienda su uso."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"En poco tiempo JOSM dejará de trabajar con esta versión; le recomendamos que "
+"actualice a Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Puede encontrarse con errores de Java críticos; recomendamos que actualice a "
+"Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "¿Desea actualizar ahora?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Ejecutando enganche de inicio a la plataforma"
+
+msgid "Building main menu"
+msgstr "Construyendo el menú principal"
+
+msgid "Updating user interface"
+msgstr "Actualizando interfaz de usuario"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicializando datos internos de límites"
+
+msgid "Initializing OSM API"
+msgstr "Inicializando API de OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicializando datos internos de tráfico"
+
+msgid "Initializing validator"
+msgstr "Inicializando validador"
+
+msgid "Initializing presets"
+msgstr "Inicializando predefinidos"
+
+msgid "Initializing map styles"
+msgstr "Inicializando estilos de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "Cargando preferencias de imágenes"
+
 msgid "usage"
 msgstr "uso"
 
@@ -5657,6 +5751,93 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "El valor actual no es un índice de tesela válido para el nivel de zoom dado"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Ha encontrado un error en JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Se produjo una excepción inesperada.\n"
+"Esto es siempre debido a un error de codificación. Si está ejecutando la "
+"última versión de JOSM, por favor considere esto y  presente un informe de "
+"error."
+
+msgid "Debug information"
+msgstr "Información de depuración"
+
+msgid "Manually report at:"
+msgstr "Reportar manualmente en:"
+
+msgid "Is JOSM up to date?"
+msgstr "¿Se encuentra JOSM actualizado?"
+
+msgid "Send bug report"
+msgstr "Enviar informe de error"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Si está ejecutando la última versión de JOSM y de los complementos por favor "
+"añada un informe de error en nuestro  sistema de gestión de incidencias.\n"
+"Es allí donde deberá rellenar la información sobre el fallo. Por favor, "
+"incluya información de cómo poder volver a reproducirle y trate de "
+"suministrar la mayor cantidad posible de detalles."
+
+msgid "Report Bug"
+msgstr "Informar del error"
+
+msgid "Suppress this error for this session."
+msgstr "Suprimir este error para esta sesión."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Suprimir otros mensajes de error durante esta sesión."
+
+msgid "Ignore this error."
+msgstr "Ignorar este error."
+
+msgid "Include the system status report."
+msgstr "Incluir el informe de estado del sistema."
+
+msgid "Include information about the data you were working on."
+msgstr "Incluir información sobre los datos que estaba trabajando."
+
+msgid "Include all stack traces."
+msgstr "Incluir todas las trazas de la pila."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Su versión actual de JOSM es {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM está buscando actualizaciones ..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+"Se produjo un error al comprobar si su instancia de JOSM se encuentra "
+"actualizada."
+
+msgid "JOSM is up to date."
+msgstr "JOSM se encuentra actualizado."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM no está actualizado. La versión actual es {0}. Intente actualizar JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Antes de presentar un informe de error asegúrese de que ha actualizado a la "
+"última versión de JOSM aquí:"
+
+msgid "Update JOSM"
+msgstr "Actualizar JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflico de fondo: no hay conflicto"
 
@@ -6446,6 +6627,22 @@ msgstr ""
 "eliminarán los objetos incompletos. ¿Quiere pegar los datos sin los objetos "
 "incompletos?"
 
+msgid "Do you want to paste these tags?"
+msgstr "¿Usted desea pegar estas etiquetas?"
+
+msgid "Clear buffer"
+msgstr "Limpiar búfer"
+
+msgid "Ignore warnings"
+msgstr "Ignorar advertencias"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Lo sentimos, es imposible pegar etiquetas desde la memoria. No "
+"contiene ningún objeto de JOSM o un texto adecuado. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Sólo para objetos seleccionados"
 
@@ -7055,9 +7252,6 @@ msgstr "Fuente"
 msgid "Title:"
 msgstr "Título:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Estilo predefinido, ruta interna:"
 
@@ -7176,9 +7370,6 @@ msgstr ""
 "Se especificó una lista de ID incorrecta\n"
 "No se puede continuar."
 
-msgid "Relations"
-msgstr "Relaciones"
-
 msgid "Open a list of all relations."
 msgstr "Abrir una lista de todas las relaciones."
 
@@ -8719,26 +8910,6 @@ msgstr "Para la latitud se requiere un valor en el rango [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Para la longitud se requiere un valor en el rango [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Fuentes y tipos de datos:"
-
-msgid "OpenStreetMap data"
-msgstr "Datos OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Seleccione descargar datos OSM en el área de descarga seleccionada."
-
-msgid "Raw GPS data"
-msgstr "Datos GPS en bruto"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Elija para descargar trazas GPS del área de descarga seleccionada."
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-"Seleccione esta opción para descargar notas en el área de descarga "
-"seleccionada."
-
 msgid "Download as new layer"
 msgstr "Descargar como nueva capa"
 
@@ -8775,34 +8946,12 @@ msgstr ""
 "o el botón derecho del ratón para desplazarse, y la rueda del ratón o las "
 "teclas +/- para el zoom."
 
-msgid "No area selected yet"
-msgstr "No hay ninguna área seleccionada aún"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Área a descargar demasiado grande; probablemente será rechazado por el "
-"servidor"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Área a descargar correcta, el tamaño probablemente será aceptado por el "
-"servidor"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Haga clic para cerrar la caja de diálogo y abortar la descarga"
 
 msgid "Click to download the currently selected area"
 msgstr "Haga click para descargar el área actualmente seleccionada"
 
-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>Ni <strong>{0}</strong> ni <strong>{1}</strong> ni "
-"<strong>{2}</strong> están habilitados.<br>Por favor, elija descargar datos "
-"OSM, GPX, notas o todos ellos.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Descargar referentes (relaciones padre)"
 
@@ -8825,6 +8974,97 @@ msgstr "Elegir si los miembros de una relación también habrán de descargarse"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Descargar referentes (relaciones y vías padre)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Fuentes y tipos de datos:"
+
+msgid "OpenStreetMap data"
+msgstr "Datos OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Seleccione descargar datos OSM en el área de descarga seleccionada."
+
+msgid "Raw GPS data"
+msgstr "Datos GPS en bruto"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Elija para descargar trazas GPS del área de descarga seleccionada."
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+"Seleccione esta opción para descargar notas en el área de descarga "
+"seleccionada."
+
+msgid "Please select a download area first."
+msgstr "Por favor, elija primero un área para descargar."
+
+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>Ni <strong>{0}</strong> ni <strong>{1}</strong> ni "
+"<strong>{2}</strong> están habilitados.<br>Por favor, elija descargar datos "
+"OSM, GPX, notas o todos ellos.</html>"
+
+msgid "No area selected yet"
+msgstr "No hay ninguna área seleccionada aún"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Área a descargar demasiado grande; probablemente será rechazado por el "
+"servidor"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Área a descargar correcta, el tamaño probablemente será aceptado por el "
+"servidor"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "historia"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8867,9 +9107,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Error al deserializar"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9487,6 +9724,18 @@ msgstr "Autenticarse con el nombre de usuario y contraseña suministrado"
 msgid "Cancel authentication"
 msgstr "Cancelar autentificación"
 
+msgid "Question"
+msgstr "Pregunta"
+
+msgid "Message"
+msgstr "Mensaje"
+
+msgid "Enter text"
+msgstr "Introducir texto"
+
+msgid "Installing plugins"
+msgstr "Instalando  complementos"
+
 msgid "Downloading file"
 msgstr "Descargando archivo"
 
@@ -10062,10 +10311,6 @@ msgstr "Elegir objetos a subir"
 msgid "Cancel uploading"
 msgstr "Cancelar subida"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valor no esperado para la clave ''{0}'' en las preferencias, tiene ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Llenar un conjunto de cambios y volver al diálogo de subida"
 
@@ -10152,6 +10397,190 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objeto para eliminar:"
 msgstr[1] "{0} objetos para eliminar:"
 
+msgid "All Formats"
+msgstr "Todos los formatos"
+
+msgid "Could not export ''{0}''."
+msgstr "No se pudo exportar \"{0}\"."
+
+msgid "Could not import ''{0}''."
+msgstr "No se pudo importar \"{0}\"."
+
+msgid "Could not import files."
+msgstr "No se pudieron importar archivos."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>No se pudo leer el archivo \"{0}\".<br>El error es:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>No se pudieron leer los archivos.<br>El error es:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Archivos GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Capa ''{0}'' no soportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: GPL no es compatible con la licencia de OSM. No subas trazas con "
+"licencia GPL."
+
+msgid "GPS track description"
+msgstr "Descripción de la traza GPS"
+
+msgid "Add author information"
+msgstr "Añadir información del autor"
+
+msgid "Real name"
+msgstr "Nombre real"
+
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgid "Copyright (URL)"
+msgstr "Derechos de autor (URL)"
+
+msgid "Predefined"
+msgstr "Predefinido"
+
+msgid "Copyright year"
+msgstr "Año del copyright"
+
+msgid "Keywords"
+msgstr "Palabras claves"
+
+msgid "Export options"
+msgstr "Opciones de exportación"
+
+msgid "Export and Save"
+msgstr "Exportar y guardar"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Error mientras se exportaba {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Elegir una licencia predefinida"
+
+msgid "GPX Files"
+msgstr "Archivos GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Falló el análisis de los datos de la capa ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Ocurrió un error al analizar datos gpx de la capa \"{0}\". Sólo estará "
+"disponible una parte del archivo."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Ocurrió un error al analizar el archivo gpx \"{0}\". Sólo estará disponible "
+"una parte del archivo."
+
+msgid "Image Files"
+msgstr "Archivos de imagen"
+
+msgid "folder"
+msgstr "carpeta"
+
+msgid "Looking for image files"
+msgstr "Buscando archivos de imágenes"
+
+msgid "No image files found."
+msgstr "No se encontraron archivos de imágenes"
+
+msgid "NMEA-0183 Files"
+msgstr "Archivos NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenadas importadas: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Frases malformadas: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Errores de chequeo: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Frases desconocidas: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Coordenadas cero: {0}"
+
+msgid "NMEA import success:"
+msgstr "Éxito en la importación NMEA:"
+
+msgid "NMEA import failure!"
+msgstr "¡Fallo en la importación NMEA!"
+
+msgid "Note Files"
+msgstr "Archivos de notas"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Archivo comprimidos en bzip2 del Servidor OSM"
+
+msgid "OsmChange File"
+msgstr "Archivo OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "El archivo \"{0}\" no existe."
+
+msgid "No data found in file {0}."
+msgstr "No se han encontrado datos en el archivo {0}."
+
+msgid "Open OsmChange file"
+msgstr "Abrir archivo OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Archivos del servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ocurrió un error al guardar.<br>El error es:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Un error ocurrió cuando se restablecía archivo de respaldo.<br>El "
+"error es:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Archivos del servidor OSM comprimidos con gzip"
+
+msgid "Invalid dataset"
+msgstr "Conjunto de datos no válido"
+
+msgid "No data found for layer ''{0}''."
+msgstr "No se encontraron datos para la capa ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "No se encontraron datos en el archivo ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Abrir archivo OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Archivos WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versión de archivo WMS no soportada; encontrada {0}, esperada {1}"
+
 msgid "Native projections"
 msgstr "Proyecciones nativas"
 
@@ -10263,6 +10692,34 @@ msgstr "No volver a mostrar este mensaje"
 msgid "Hide this message and never show it again"
 msgstr "Ocultar este mensaje y no volver a mostrarlo de nuevo"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"No se puede crear el directorio {0}. Se deshabilitará el guardado automático."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Imposible crear el archivo {0}, se utilizará otro nombre de archivo"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError creando el archivo. No se guardará automáticamente: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "No se pudo borrar el anterior archivo de copia de seguridad {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Su trabajo se ha guardado automáticamente."
+
+msgid "Restoring files"
+msgstr "Restaurando archivos"
+
+msgid "Unable to delete backup file {0}"
+msgstr "No se puede eliminar el archivo de copia de seguridad {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "No se puede eliminar el archivo PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "No se puede eliminar el archivo de copia de seguridad archivado {0}"
+
 msgid "Customize Color"
 msgstr "Personalizar colores"
 
@@ -10366,6 +10823,9 @@ msgstr "Total de notas:"
 msgid "Changes need uploading?"
 msgstr "¿Los cambios necesitan ser subidos?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fuera del área descargada"
 
@@ -10441,6 +10901,9 @@ msgstr "Errores de validación"
 msgid "No validation errors"
 msgstr "Sin errores de validación"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Fijar marcador WMS"
 
@@ -11072,9 +11535,6 @@ msgstr "(La URL era: "
 msgid "Select the map painting styles"
 msgstr "Seleciones Estilo de MAPa de imagenes"
 
-msgid "loading style ''{0}''..."
-msgstr "cargando estilo ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11089,6 +11549,9 @@ msgstr[1] ""
 "en el menú emergente al pulsar con el botón derecho del ratón para más "
 "detalles."
 
+msgid "loading style ''{0}''..."
+msgstr "cargando estilo ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Error al cargar los estilos Mappaint desde ''{0}''. La excepción fue: {1}"
@@ -11641,27 +12104,6 @@ msgstr "Descargar complementos"
 msgid "Icon paths:"
 msgstr "Ruta de los iconos:"
 
-msgid "Short Description:"
-msgstr "Descripción corta:"
-
-msgid "Author:"
-msgstr "Autor/a:"
-
-msgid "Webpage:"
-msgstr "Paguina Web:"
-
-msgid "Description:"
-msgstr "Descripción:"
-
-msgid "Version:"
-msgstr "Versión:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versión Mínima de JOSM:"
-
-msgid "by {0}"
-msgstr "Por {0}"
-
 msgid "Name (optional):"
 msgstr "Nombre (opcional):"
 
@@ -12865,20 +13307,6 @@ msgstr ""
 "Advertencia: formato ilegal de entrada en la lista de estilo \"{0}\". Se "
 "obtuvo \"{1}\""
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM por defecto (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estilo interno a usarse para estilos intercambiables en tiempo de ejecución"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "estilo principal de Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Ajustes del mapa"
 
@@ -12979,12 +13407,6 @@ msgstr ""
 "Atención: formato ilegal de entrada en la lista de predeterminados \"{0}\". "
 "Se obtuvo \"{1}\""
 
-msgid "Internal Preset"
-msgstr "Ajuste predeterminado interno"
-
-msgid "The default preset for JOSM"
-msgstr "El ajuste predeterminado de JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "El complemento {0} todavía es requerido por este complemento:"
@@ -13493,9 +13915,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Error al recuperar las credenciales de administrador de credenciales de OSM."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "El administrador de credenciales actual es \"{0}\""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Error al guardar las credenciales de OSM en el administrador de credenciales."
@@ -13516,15 +13935,6 @@ msgstr ""
 "Especifica con el número de días en el que una nota necesita ser cerrada a "
 "partir del cual no debe ser descargada"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Error al recuperar el Token de Acceso OAuth desde el administrador de "
-"credenciales"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Error almacenando el Token de Acceso OAuth en el administrador credenciales"
-
 msgid "Save to preferences"
 msgstr "Guardar preferencias"
 
@@ -13731,70 +14141,6 @@ msgstr ""
 "Advertencia: formato inválido de entrada en la lista de reglas ''{0}''. Se "
 "obtuvo ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Comprueba si hay errores en las direcciones"
-
-msgid "Tag combinations"
-msgstr "Combinaciones de etiquetas"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-"Verifica que no existan etiquetas faltantes o combinaciones sospechosas"
-
-msgid "Deprecated features"
-msgstr "Características en deshuso"
-
-msgid "Checks for deprecated features"
-msgstr "Verifica la existencia de características en desuso"
-
-msgid "Geometry"
-msgstr "Geometría"
-
-msgid "Checks for geometry errors"
-msgstr "Verifica la existencia de errores de geometría"
-
-msgid "Checks for errors on highways"
-msgstr "Verifica la existencia de errores en los caminos"
-
-msgid "Multiple values"
-msgstr "Valores múltiples"
-
-msgid "Checks for wrong multiple values"
-msgstr "Comprueba si hay valores múltiples erróneos"
-
-msgid "Numeric values"
-msgstr "Valores numéricos"
-
-msgid "Checks for wrong numeric values"
-msgstr "Verifica que no haya valores numéricos incorrectos"
-
-msgid "Religion"
-msgstr "Religión"
-
-msgid "Checks for errors on religious objects"
-msgstr "Verifica que no haya errores en objetos religiosos"
-
-msgid "Checks for errors on relations"
-msgstr "Verifica que no haya errores en las relaciones"
-
-msgid "Territories"
-msgstr "Territorios"
-
-msgid "Checks for territories-specific features"
-msgstr "Comprueba características específicas de los territorios"
-
-msgid "Unnecessary tags"
-msgstr "Etiquetas innecesarias"
-
-msgid "Checks for unnecessary tags"
-msgstr "Verifica la existencia de etiquetas innecesarias"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Verifica la existencia de etiquetas wikipedia incorrectas"
-
 msgid "Tag checker rules"
 msgstr "Reglas del Validador de etiquetas"
 
@@ -14058,6 +14404,39 @@ msgstr "Todos los archivos (*.*)"
 msgid "Received error page:"
 msgstr "Se recibió una página de error"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La preferencia con llave \"{0}\" no incluye \"{1}\". No se puede restaurar "
+"la geometría de la ventana a partir de las preferencias."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La preferencia con llave \"{0}\" no provee un valor entero para \"{1}\". Se "
+"obtuvo {2}. No se puede restaurar la geometría de la ventana a partir de las "
+"preferencias"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Fallo al deserializar el campo \"{1}\" en la preferencia con la clave "
+"\"{0}\". La excepción fue: {2}. No se puede restaurar la geometría de la "
+"ventana a partir de las preferencias."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La preferencia con la llave \"{0}\" no existe.  No se puede restaurar la "
+"geometría de la ventana a partir de las preferencias."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorando geometría mal formada: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitud min."
 
@@ -14196,9 +14575,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "El miembro eliminado {0} se usa en la relación {1}"
 
-msgid "All Formats"
-msgstr "Todos los formatos"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Descargando puntos {0} al {1}..."
 
@@ -14328,96 +14704,6 @@ msgstr "Revisando respuesta del servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Elemento XML con nombre \"{0}\" inesperado"
 
-msgid "Could not export ''{0}''."
-msgstr "No se pudo exportar \"{0}\"."
-
-msgid "Could not import ''{0}''."
-msgstr "No se pudo importar \"{0}\"."
-
-msgid "Could not import files."
-msgstr "No se pudieron importar archivos."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>No se pudo leer el archivo \"{0}\".<br>El error es:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>No se pudieron leer los archivos.<br>El error es:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Archivos GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Capa ''{0}'' no soportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: GPL no es compatible con la licencia de OSM. No subas trazas con "
-"licencia GPL."
-
-msgid "GPS track description"
-msgstr "Descripción de la traza GPS"
-
-msgid "Add author information"
-msgstr "Añadir información del autor"
-
-msgid "Real name"
-msgstr "Nombre real"
-
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgid "Copyright (URL)"
-msgstr "Derechos de autor (URL)"
-
-msgid "Predefined"
-msgstr "Predefinido"
-
-msgid "Copyright year"
-msgstr "Año del copyright"
-
-msgid "Keywords"
-msgstr "Palabras claves"
-
-msgid "Export options"
-msgstr "Opciones de exportación"
-
-msgid "Export and Save"
-msgstr "Exportar y guardar"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Error mientras se exportaba {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Elegir una licencia predefinida"
-
-msgid "GPX Files"
-msgstr "Archivos GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Falló el análisis de los datos de la capa ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Ocurrió un error al analizar datos gpx de la capa \"{0}\". Sólo estará "
-"disponible una parte del archivo."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Ocurrió un error al analizar el archivo gpx \"{0}\". Sólo estará disponible "
-"una parte del archivo."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 "Error al deserializar: estructura de documento invalida para un documento "
@@ -14429,18 +14715,6 @@ msgstr "(en la línea {0}, columna {1})"
 msgid "Unknown mode {0}."
 msgstr "Modo desconocido {0}."
 
-msgid "Image Files"
-msgstr "Archivos de imagen"
-
-msgid "folder"
-msgstr "carpeta"
-
-msgid "Looking for image files"
-msgstr "Buscando archivos de imágenes"
-
-msgid "No image files found."
-msgstr "No se encontraron archivos de imágenes"
-
 msgid "get number of unread messages"
 msgstr "Obtener el número de mensajes no leídos"
 
@@ -14494,36 +14768,9 @@ msgstr "Obteniendo relación con ID {0} de ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "El servidor respondió con código 404 para el id {0}. Omitiéndolo."
 
-msgid "NMEA-0183 Files"
-msgstr "Archivos NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenadas importadas: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Frases malformadas: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Errores de chequeo: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Frases desconocidas: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Coordenadas cero: {0}"
-
-msgid "NMEA import success:"
-msgstr "Éxito en la importación NMEA:"
-
-msgid "NMEA import failure!"
-msgstr "¡Fallo en la importación NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Excepción de puntero nulo, posiblemente alguna etiqueta esté perdida"
 
-msgid "Note Files"
-msgstr "Archivos de notas"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14621,9 +14868,6 @@ msgstr "(Código={0})"
 msgid "The server replied an error with code {0}."
 msgstr "El servidor responde con un error con código {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Archivo comprimidos en bzip2 del Servidor OSM"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "El Prolog del documento OsmChange ya se escribió. Por favor, escriba "
@@ -14634,18 +14878,6 @@ msgstr ""
 "El Prolog del documento OsmChange todavía no se ha escrito. Por favor, "
 "escríbalo primero."
 
-msgid "OsmChange File"
-msgstr "Archivo OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "El archivo \"{0}\" no existe."
-
-msgid "No data found in file {0}."
-msgstr "No se han encontrado datos en el archivo {0}."
-
-msgid "Open OsmChange file"
-msgstr "Abrir archivo OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versión no soportada: {0}"
 
@@ -14700,37 +14932,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor para la preferencia ''{0}'' no esperado. Se obtuvo ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Archivos del servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ocurrió un error al guardar.<br>El error es:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Un error ocurrió cuando se restablecía archivo de respaldo.<br>El "
-"error es:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Archivos del servidor OSM comprimidos con gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Analizando datos del historial de OSM..."
 
-msgid "Invalid dataset"
-msgstr "Conjunto de datos no válido"
-
-msgid "No data found for layer ''{0}''."
-msgstr "No se encontraron datos para la capa ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "No se encontraron datos en el archivo ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Abrir archivo OSM"
-
 msgid "Reading was canceled"
 msgstr "La lectura fue cancelada"
 
@@ -14881,6 +15085,9 @@ msgstr "Contactando con el servidor..."
 msgid "Downloading OSM notes..."
 msgstr "Descargando notas de OSM..."
 
+msgid "Downloading data..."
+msgstr "Descargando datos..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14942,14 +15149,9 @@ msgstr "Se encontró un id 0 inesperado para la primitiva osm"
 msgid "Failed to evaluate {0}"
 msgstr "No se pudo evaluar {0}"
 
-msgid "Downloading data..."
-msgstr "Descargando datos..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Archivos WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versión de archivo WMS no soportada; encontrada {0}, esperada {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Valor no esperado para la clave ''{0}'' en las preferencias, tiene ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bytes han sido leídos"
@@ -16120,37 +16322,6 @@ msgstr "Abriendo URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "La URL no contiene {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versión desactualizada de Java"
-
-msgid "Update Java"
-msgstr "Actualizar Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Está ejecutando la versión {0} de Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr "Esta versión ya no soporta {0} desde {1} y no se recomienda su uso."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"En poco tiempo JOSM dejará de trabajar con esta versión; le recomendamos que "
-"actualice a Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Puede encontrarse con errores de Java críticos; recomendamos que actualice a "
-"Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "¿Desea actualizar ahora?"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -16224,22 +16395,6 @@ msgstr "Caracteres sospechosos en la clave:"
 msgid "Value is too long (max {0} characters):"
 msgstr "El valor es demasiado largo (máximo {0} caracteres):"
 
-msgid "Do you want to paste these tags?"
-msgstr "¿Usted desea pegar estas etiquetas?"
-
-msgid "Clear buffer"
-msgstr "Limpiar búfer"
-
-msgid "Ignore warnings"
-msgstr "Ignorar advertencias"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Lo sentimos, es imposible pegar etiquetas desde la memoria. No "
-"contiene ningún objeto de JOSM o un texto adecuado. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "No se puede eliminar el archivo {0}"
 
@@ -16263,135 +16418,15 @@ msgid_plural "days"
 msgstr[0] "día"
 msgstr[1] "días"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La preferencia con llave \"{0}\" no incluye \"{1}\". No se puede restaurar "
-"la geometría de la ventana a partir de las preferencias."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La preferencia con llave \"{0}\" no provee un valor entero para \"{1}\". Se "
-"obtuvo {2}. No se puede restaurar la geometría de la ventana a partir de las "
-"preferencias"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Fallo al deserializar el campo \"{1}\" en la preferencia con la clave "
-"\"{0}\". La excepción fue: {2}. No se puede restaurar la geometría de la "
-"ventana a partir de las preferencias."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La preferencia con la llave \"{0}\" no existe.  No se puede restaurar la "
-"geometría de la ventana a partir de las preferencias."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorando geometría mal formada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Error al cargar el esquema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Ha encontrado un error en JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Se produjo una excepción inesperada.\n"
-"Esto es siempre debido a un error de codificación. Si está ejecutando la "
-"última versión de JOSM, por favor considere esto y  presente un informe de "
-"error."
-
-msgid "Debug information"
-msgstr "Información de depuración"
-
-msgid "Manually report at:"
-msgstr "Reportar manualmente en:"
-
-msgid "Is JOSM up to date?"
-msgstr "¿Se encuentra JOSM actualizado?"
-
-msgid "Send bug report"
-msgstr "Enviar informe de error"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Si está ejecutando la última versión de JOSM y de los complementos por favor "
-"añada un informe de error en nuestro  sistema de gestión de incidencias.\n"
-"Es allí donde deberá rellenar la información sobre el fallo. Por favor, "
-"incluya información de cómo poder volver a reproducirle y trate de "
-"suministrar la mayor cantidad posible de detalles."
-
-msgid "Report Bug"
-msgstr "Informar del error"
-
-msgid "Suppress this error for this session."
-msgstr "Suprimir este error para esta sesión."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Suprimir otros mensajes de error durante esta sesión."
-
-msgid "Ignore this error."
-msgstr "Ignorar este error."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Fallo al abrir el informe de error. Por favor, informe de forma manual "
 "utilizando este sitio web:"
 
-msgid "Include the system status report."
-msgstr "Incluir el informe de estado del sistema."
-
-msgid "Include information about the data you were working on."
-msgstr "Incluir información sobre los datos que estaba trabajando."
-
-msgid "Include all stack traces."
-msgstr "Incluir todas las trazas de la pila."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Su versión actual de JOSM es {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM está buscando actualizaciones ..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-"Se produjo un error al comprobar si su instancia de JOSM se encuentra "
-"actualizada."
-
-msgid "JOSM is up to date."
-msgstr "JOSM se encuentra actualizado."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM no está actualizado. La versión actual es {0}. Intente actualizar JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Antes de presentar un informe de error asegúrese de que ha actualizado a la "
-"última versión de JOSM aquí:"
-
-msgid "Update JOSM"
-msgstr "Actualizar JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20163,9 +20198,6 @@ msgstr "Contenido del panel"
 msgid "notice"
 msgstr "aviso"
 
-msgid "history"
-msgstr "historia"
-
 msgid "nature"
 msgstr "naturaleza"
 
@@ -20748,6 +20780,9 @@ msgstr ""
 "Residencia de personas dependientes (ancianos, discapacitados físicos o "
 "psíquicos, etc)"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Hogar de acogida"
 
@@ -23193,6 +23228,9 @@ msgstr "Regalo/recuerdo"
 msgid "Variety Store"
 msgstr "Tienda de variedades o bazar"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Corredor de apuestas"
 
@@ -24082,6 +24120,78 @@ msgstr "De negocios"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garajes o plazas de aparcamiento particulares"
 
@@ -24782,6 +24892,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25564,6 +25677,9 @@ msgstr "Catastro"
 msgid "French land registry"
 msgstr "Registro de tierras francés"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25677,15 +25793,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Mapa topográfico 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Área metropolitana de Rurh: Luftbilder (10 cm)"
 
@@ -34557,15 +34664,21 @@ msgstr "al valor anterior (no se cambia mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Plugin para geolocalización de fotografías"
 
-msgid "Writing position information to image files..."
-msgstr "Escribiendo información de posición a los archivos de imágenes..."
-
 msgid "Could not read mtime."
 msgstr "No se pudo leer mtime."
 
 msgid "Could not write mtime."
 msgstr "No se pudo escribir mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Escribiendo información de posición a los archivos de imágenes..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "¡No se pudo eliminar el archivo!"
 
@@ -35089,6 +35202,9 @@ msgstr "Arreglar error"
 msgid "PT: dummy test warning"
 msgstr "PT: advertencia de ensayo simulado"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "PT: La ruta contiene un vacío que puede ser arreglado si se ordena"
 
@@ -35099,6 +35215,9 @@ msgstr ""
 "PT: Las interrupciones de la ruta pueden disminuir ordenando los miembros. "
 "Se requerirán además otras validaciones"
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/et.po b/i18n/po/et.po
index c1e9245..287ca7c 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:41+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:41+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: et\n"
 
@@ -55,56 +55,9 @@ msgstr "Tausta kasutustingimused"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Linkide avamine ei ole praegusel platvormil toetatud (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Käivitan platvormi käivitamise haagi"
-
-msgid "Building main menu"
-msgstr "Loon peamenüüd"
-
-msgid "Help"
-msgstr "Abi"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Lähtestan OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Lähtestan validaatori"
-
-msgid "Initializing presets"
-msgstr "Lähtestan eelseaded"
-
-msgid "Initializing map styles"
-msgstr "Lähtestan kaardistiilid"
-
-msgid "Loading imagery preferences"
-msgstr "Laadin aluskaardi eelistused"
-
-msgid "Updating user interface"
-msgstr "Uuendan kasutajaliidest"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoreerin vigast URL''i: \"{0}\""
-
-msgid "Warning"
-msgstr "Hoiatus"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoreerin vigast faili URL''i: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Parameetri \"downloadgps\" väärtuseks ei sobi failinimi või failile viitav "
-"URL"
-
 msgid "About"
 msgstr "Teave"
 
@@ -182,6 +135,9 @@ msgstr "Katkesta"
 msgid "Click to abort launching external browsers"
 msgstr "Väliste veebilehitsejate käivitamise katkestamiseks klõpsa"
 
+msgid "Warning"
+msgstr "Hoiatus"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Palun vali vähemalt üks juba üles laaditud sõlm, joon või relatsioon."
@@ -467,13 +423,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Laadi andmed OSMist alla"
-
-msgid "Download map data from the OSM server."
-msgstr "Laadi kaardi andmed OSMi serverist"
+msgid "Download data"
+msgstr "Andmete allalaadimine"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -481,9 +434,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "Andmete allalaadimine"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -550,6 +500,9 @@ msgstr "Midagi ei ole eksportida."
 msgid "Export GPX file"
 msgstr "Ekspordi GPX fail"
 
+msgid "Help"
+msgstr "Abi"
+
 msgid "History"
 msgstr "Ajalugu"
 
@@ -1070,23 +1023,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Palun vali jooned, mille nurk on umbes 90 või 180 kraadi."
 
-msgid "Download from Overpass API ..."
-msgstr "Laadi alla Overpass API kaudu ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Laadi alla kaardi andmed Overpass API serverist."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Kleebi"
 
@@ -2379,36 +2315,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr "<mitte>"
-
-msgid "<or>"
-msgstr "<või>"
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr "<koolon>"
-
-msgid "<equals>"
-msgstr "<võrdub>"
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Otsi..."
 
@@ -2699,86 +2605,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "Võtme väärtus ei saa olla tühi. Näide: võti=väärtus"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2796,9 +2622,6 @@ msgstr "{0} sõlme tees {1} ületab suurima lubatud sõlmede arvu {2}"
 msgid "API Capabilities Violation"
 msgstr "API võimaluste rikkumine"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3160,57 +2983,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Kataloogi {0} ei õnnestu luua, automaatsalvestamine keelatakse"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr "Teade"
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3300,6 +3078,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "Meetermõõdustik"
 
@@ -3428,6 +3212,15 @@ msgstr ""
 msgid "Note"
 msgstr "Märkus"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3442,6 +3235,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3478,11 +3274,64 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "lõpetamata"
+
+msgid "House {0}"
 msgstr ""
 
-msgid "Error in filter"
-msgstr "Viga filtris"
+msgid "House number {0} at {1}"
+msgstr "Maja number {0} {1} tänaval"
+
+msgid "House number {0}"
+msgstr "Maja number {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "sõlm"
+msgstr[1] "sõlmed"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr "Raudtee"
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} sõlm"
+msgstr[1] "{0} sõlme"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} liige"
+msgstr[1] "{0} liiget"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relatsioon"
+msgstr[1] "relatsioonid"
+
+msgid "Changeset {0}"
+msgstr "Muutustekogum {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr "Viga filtris"
 
 msgid "<p><b>{0}</b> object hidden"
 msgid_plural "<p><b>{0}</b> objects hidden"
@@ -3512,21 +3361,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "sõlm"
-msgstr[1] "sõlmed"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "joon"
 msgstr[1] "jooned"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relatsioon"
-msgstr[1] "relatsioonid"
-
 msgid "closedway"
 msgstr "suletud joon"
 
@@ -3560,6 +3399,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr "<mitte>"
+
+msgid "<or>"
+msgstr "<või>"
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr "<koolon>"
+
+msgid "<equals>"
+msgstr "<võrdub>"
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "Võtme väärtus ei saa olla tühi. Näide: võti=väärtus"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3637,6 +3586,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Lühikirjeldus:"
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Veebileht:"
+
+msgid "Description:"
+msgstr "Kirjeldus:"
+
+msgid "Version:"
+msgstr "Versioon:"
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr "Peamine Potlatch 2 stiil"
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Aadressid"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Maanteed"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Religioon"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relatsioonid"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Vikipeedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3821,9 +3885,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Aadressid"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4008,9 +4069,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr "Maanteed"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4549,9 +4607,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4666,45 +4721,16 @@ msgstr "Ära seda teadet rohkem näita (sel seansil)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ära seda teadet rohkem näita (valik jäetakse meelde)"
 
-msgid "incomplete"
-msgstr "lõpetamata"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr "Maja number {0} {1} tänaval"
-
-msgid "House number {0}"
-msgstr "Maja number {0}"
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr "Raudtee"
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} sõlm"
-msgstr[1] "{0} sõlme"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoreerin vigast URL''i: \"{0}\""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} liige"
-msgstr[1] "{0} liiget"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoreerin vigast faili URL''i: \"{0}\""
 
-msgid "public transport"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
-
-msgid "Changeset {0}"
-msgstr "Muutustekogum {0}"
+"Parameetri \"downloadgps\" väärtuseks ei sobi failinimi või failile viitav "
+"URL"
 
 msgid "Precondition violation"
 msgstr "Eelitingimuste rikkumine"
@@ -4748,51 +4774,115 @@ msgstr ""
 msgid "Client Time Out"
 msgstr ""
 
-msgid "Bandwidth Limit Exceeded"
+msgid "Bandwidth Limit Exceeded"
+msgstr ""
+
+msgid "Communication with OSM server failed"
+msgstr ""
+
+msgid "Authentication failed"
+msgstr ""
+
+msgid "Unknown host"
+msgstr "Tundmatu host"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "Objekt kustutatud"
+msgstr[1] "Objektid kustutatud"
+
+msgid "Show help information"
+msgstr "Avab abiinfo lehitseja"
+
+msgid "Downloading \"Message of the day\""
+msgstr "Laadin alla \"päeva sõnumit\""
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr ""
+
+msgid "Message of the day not available"
+msgstr "Päeva sõnum pole saadaval"
+
+msgid "Click to close the dialog"
+msgstr "Sulgeb dialoogiakna"
+
+msgid "Imagery offset"
+msgstr "Aluskaardi nihe"
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr "Aluskaart"
+
+msgctxt "layer"
+msgid "Offset"
+msgstr ""
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr ""
+
+msgid "Outdated Java version"
+msgstr "Aegunud Java versioon"
+
+msgid "Update Java"
+msgstr "Uuenda Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Praegu töötab sul Java versioon {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"{0} ei toeta enam seda versiooni alates {1} ja seda ei soovitata enam "
+"kasutada."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
 msgstr ""
+"JOSM lõpetab töötamast selle versiooniga. Soovitatav oleks et sa uuendad "
+"Java versioonile {0}."
 
-msgid "Communication with OSM server failed"
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
 msgstr ""
 
-msgid "Authentication failed"
-msgstr ""
+msgid "Would you like to update now ?"
+msgstr "Kas soovid kohe uuendada?"
 
-msgid "Unknown host"
-msgstr "Tundmatu host"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "Objekt kustutatud"
-msgstr[1] "Objektid kustutatud"
+msgid "Executing platform startup hook"
+msgstr "Käivitan platvormi käivitamise haagi"
 
-msgid "Show help information"
-msgstr "Avab abiinfo lehitseja"
+msgid "Building main menu"
+msgstr "Loon peamenüüd"
 
-msgid "Downloading \"Message of the day\""
-msgstr "Laadin alla \"päeva sõnumit\""
+msgid "Updating user interface"
+msgstr "Uuendan kasutajaliidest"
 
-msgid "Failed to read MOTD. Exception was: {0}"
+msgid "Initializing internal boundaries data"
 msgstr ""
 
-msgid "Message of the day not available"
-msgstr "Päeva sõnum pole saadaval"
+msgid "Initializing OSM API"
+msgstr "Lähtestan OSM API"
 
-msgid "Click to close the dialog"
-msgstr "Sulgeb dialoogiakna"
+msgid "Initializing internal traffic data"
+msgstr ""
 
-msgid "Imagery offset"
-msgstr "Aluskaardi nihe"
+msgid "Initializing validator"
+msgstr "Lähtestan validaatori"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr "Aluskaart"
+msgid "Initializing presets"
+msgstr "Lähtestan eelseaded"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr ""
+msgid "Initializing map styles"
+msgstr "Lähtestan kaardistiilid"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr ""
+msgid "Loading imagery preferences"
+msgstr "Laadin aluskaardi eelistused"
 
 msgid "usage"
 msgstr ""
@@ -5255,6 +5345,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Teata veast"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Ära näita rohkem veateateid selle seansi ajal."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5953,6 +6116,20 @@ msgstr ""
 "eemaldatakse mittetäielikud objektid. Kas soovid kleepida andmed ilma "
 "mittetäielike objektideta?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "Ainult valitud objektid"
 
@@ -6510,9 +6687,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6623,9 +6797,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relatsioonid"
-
 msgid "Open a list of all relations."
 msgstr "Ava kõikide relatsioonide nimekiri"
 
@@ -8038,24 +8209,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Andmeallikad ja  -tüübid:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMapi andmed"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Laadib alla OSM andmed valitud allalaadimisalal"
-
-msgid "Raw GPS data"
-msgstr "GPS toorandmed"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Laadib alla GPS rajad valitud allalaadimisalal"
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Laadi alla uue kihina"
 
@@ -8091,27 +8244,12 @@ msgstr ""
 "kasuta nooleklahve või paremat hiirenuppu, suumimiseks hiire ratast või +/- "
 "klahve."
 
-msgid "No area selected yet"
-msgstr ""
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Allalaetav ala liiga suur; server arvatavasti keeldub"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Allalaetav ala paras, suurus serverile tõenäoliselt sobiv"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
 msgid "Click to download the currently selected area"
 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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "Laadi alla viitajad (vanemrelatsioonid)"
 
@@ -8131,8 +8269,90 @@ msgstr ""
 msgid "Select if the members of a relation should be downloaded as well"
 msgstr "Vali, kui ka relatsiooni liikmed tuleb alla laadida"
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "Laadi alla viitajad (vanemrelatsioonid ja teed)"
+msgid "Download referrers (parent relations and ways)"
+msgstr "Laadi alla viitajad (vanemrelatsioonid ja teed)"
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Andmeallikad ja  -tüübid:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMapi andmed"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Laadib alla OSM andmed valitud allalaadimisalal"
+
+msgid "Raw GPS data"
+msgstr "GPS toorandmed"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Laadib alla GPS rajad valitud allalaadimisalal"
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
+msgid "No area selected yet"
+msgstr ""
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Allalaetav ala liiga suur; server arvatavasti keeldub"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Allalaetav ala paras, suurus serverile tõenäoliselt sobiv"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "ajalugu"
 
 msgid "Please select an item first"
 msgstr ""
@@ -8176,9 +8396,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8725,6 +8942,18 @@ msgstr "Autentimine määratud kasutajanime ja salasõnaga."
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr "Teade"
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9222,9 +9451,6 @@ msgstr "Vali üleslaetavad objektid"
 msgid "Cancel uploading"
 msgstr "Katkesta üleslaadimine"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9303,6 +9529,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objekt kustutada:"
 msgstr[1] "{0} objekti kustutada:"
 
+msgid "All Formats"
+msgstr "Kõik formaadid"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Märkus: GPL ei ole OSM litsentsiga ühilduv. Ära lae GPL litsentsiga jälgi "
+"üles."
+
+msgid "GPS track description"
+msgstr "GPS jälje kirjeldus"
+
+msgid "Add author information"
+msgstr "Lisa autori informatsioon"
+
+msgid "Real name"
+msgstr "Tegelik nimi"
+
+msgid "E-Mail"
+msgstr "E-post"
+
+msgid "Copyright (URL)"
+msgstr "Autoriõigus (URL)"
+
+msgid "Predefined"
+msgstr "Eelseadistatud"
+
+msgid "Copyright year"
+msgstr "Autoriõiguse aasta"
+
+msgid "Keywords"
+msgstr "Võtmesõnad"
+
+msgid "Export options"
+msgstr "Ekspordi suvandid"
+
+msgid "Export and Save"
+msgstr "Ekspordi ja salvesta"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Viga eksportimisel {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Vali eeldefineeritud litsents"
+
+msgid "GPX Files"
+msgstr "GPX failid"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 failid"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "NMEA impordi viga!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "OSM serveri failid"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9410,6 +9812,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Peida see sõnum ja ära näita seda uuesti"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Kataloogi {0} ei õnnestu luua, automaatsalvestamine keelatakse"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Kohanda värvi"
 
@@ -9513,6 +9942,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9588,6 +10020,9 @@ msgstr "Järelkontrolli vead"
 msgid "No validation errors"
 msgstr "Järelkontrollivigu ei ole"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10169,9 +10604,6 @@ msgstr "(URL oli: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10181,6 +10613,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10628,27 +11063,6 @@ msgstr "Pluginate allalaadimine"
 msgid "Icon paths:"
 msgstr ""
 
-msgid "Short Description:"
-msgstr "Lühikirjeldus:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Veebileht:"
-
-msgid "Description:"
-msgstr "Kirjeldus:"
-
-msgid "Version:"
-msgstr "Versioon:"
-
-msgid "Minimum JOSM Version:"
-msgstr ""
-
-msgid "by {0}"
-msgstr ""
-
 msgid "Name (optional):"
 msgstr "Nimi (pole kohustuslik):"
 
@@ -11735,19 +12149,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr "Peamine Potlatch 2 stiil"
-
 msgid "Map Settings"
 msgstr "Kaardi seaded"
 
@@ -11827,12 +12228,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12318,9 +12713,6 @@ msgstr "OSMi salasõna:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12338,12 +12730,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12526,69 +12912,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Religioon"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Vikipeedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12832,6 +13155,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12948,9 +13294,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Kõik formaadid"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Laadin alla punkte alates {0} kuni {1}..."
 
@@ -13053,90 +13396,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Märkus: GPL ei ole OSM litsentsiga ühilduv. Ära lae GPL litsentsiga jälgi "
-"üles."
-
-msgid "GPS track description"
-msgstr "GPS jälje kirjeldus"
-
-msgid "Add author information"
-msgstr "Lisa autori informatsioon"
-
-msgid "Real name"
-msgstr "Tegelik nimi"
-
-msgid "E-Mail"
-msgstr "E-post"
-
-msgid "Copyright (URL)"
-msgstr "Autoriõigus (URL)"
-
-msgid "Predefined"
-msgstr "Eelseadistatud"
-
-msgid "Copyright year"
-msgstr "Autoriõiguse aasta"
-
-msgid "Keywords"
-msgstr "Võtmesõnad"
-
-msgid "Export options"
-msgstr "Ekspordi suvandid"
-
-msgid "Export and Save"
-msgstr "Ekspordi ja salvesta"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Viga eksportimisel {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Vali eeldefineeritud litsents"
-
-msgid "GPX Files"
-msgstr "GPX failid"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parse error: vigane gpx dokumendi struktuur"
 
@@ -13146,18 +13405,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13209,36 +13456,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 failid"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "NMEA impordi viga!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer exception, arvatavasti mõned puuduvad sildid (tag)."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13314,37 +13534,22 @@ msgstr ""
 msgid "Open changeset expected. Got closed changeset with id {0}."
 msgstr ""
 
-msgid "Note upload failed"
-msgstr ""
-
-msgid "Error parsing note response from server"
-msgstr ""
-
-msgid "(Code={0})"
-msgstr ""
-
-msgid "The server replied an error with code {0}."
-msgstr ""
-
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
-msgid "Prolog of OsmChange document already written. Please write only once."
+msgid "Note upload failed"
 msgstr ""
 
-msgid "Prolog of OsmChange document not written yet. Please write first."
+msgid "Error parsing note response from server"
 msgstr ""
 
-msgid "OsmChange File"
+msgid "(Code={0})"
 msgstr ""
 
-msgid "File ''{0}'' does not exist."
+msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "No data found in file {0}."
+msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
-msgid "Open OsmChange file"
+msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
 msgid "Unsupported version: {0}"
@@ -13392,35 +13597,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM serveri failid"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13552,6 +13731,9 @@ msgstr "Ühendun serveriga..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13610,13 +13792,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14574,37 +14750,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr "Aegunud Java versioon"
-
-msgid "Update Java"
-msgstr "Uuenda Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Praegu töötab sul Java versioon {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"{0} ei toeta enam seda versiooni alates {1} ja seda ei soovitata enam "
-"kasutada."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM lõpetab töötamast selle versiooniga. Soovitatav oleks et sa uuendad "
-"Java versioonile {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Kas soovid kohe uuendada?"
-
 msgid "reserved"
 msgstr "reserveeritud"
 
@@ -14673,20 +14818,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14710,109 +14841,13 @@ msgid_plural "days"
 msgstr[0] "päev"
 msgstr[1] "päeva"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr "XML-skeemi laadimine ebaõnnestus."
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Teata veast"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Ära näita rohkem veateateid selle seansi ajal."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18527,9 +18562,6 @@ msgstr "Infotahvli sisu"
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "ajalugu"
-
 msgid "nature"
 msgstr "loodus"
 
@@ -19109,6 +19141,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Hooldekodu"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21549,6 +21584,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22409,6 +22447,78 @@ msgstr "Kommerts"
 msgid "Industrial"
 msgstr "Tööstus"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garaažid"
 
@@ -23104,6 +23214,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23856,6 +23969,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23966,15 +24082,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31859,13 +31966,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr "Fotode geosildistamise plugin"
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32363,6 +32476,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32371,6 +32487,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/eu.po b/i18n/po/eu.po
index 2c0d46b..f8368f8 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:36+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:36+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: eu\n"
 
@@ -55,56 +55,9 @@ msgstr "Atzeko planoko erabilera baldintzak"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr "Menu nagusia eraikitzen"
-
-msgid "Help"
-msgstr "Laguntza"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "OSM API hasieratzen"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Balioztatzailea hasieratzen"
-
-msgid "Initializing presets"
-msgstr "Aurrez ezarritakoak hasieratzen"
-
-msgid "Initializing map styles"
-msgstr "Mapa-estiloak hasieratzen"
-
-msgid "Loading imagery preferences"
-msgstr "Irudi-hobespenak kargatzen"
-
-msgid "Updating user interface"
-msgstr "Erabiltzaile-interfazeak eguneratzen"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Gaizki eratutako URL-a baztertzen: \"{0}\""
-
-msgid "Warning"
-msgstr "Kontuz"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Gaizki eratutako fitxategiaren URL-a baztertzen: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"\"downloadgps\" parametroak, \"gpsdeskargatu\" parametroak, ez ditu artxibo "
-"izenak onartzen ezta artxiboen URLak ere"
-
 msgid "About"
 msgstr "Honi buruz"
 
@@ -182,6 +135,9 @@ msgstr "Utzi"
 msgid "Click to abort launching external browsers"
 msgstr "Klikatu kanpoko arakatzaileen abiaraztea saihesteko"
 
+msgid "Warning"
+msgstr "Kontuz"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Aukera ezazu jada igota dagoen nodo, bide edota erlazio bat gutxienez."
@@ -467,13 +423,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "OSMtik deskargatu..."
-
-msgid "Download map data from the OSM server."
-msgstr "Mapako datuak OSM-ren zerbitzaritik deskargatu."
+msgid "Download data"
+msgstr "Datuak deskargatu"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -481,9 +434,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "Datuak deskargatu"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -550,6 +500,9 @@ msgstr "Ez dago esportatzeko ezer. Aukeratu datuak lehenengo."
 msgid "Export GPX file"
 msgstr "Esportatu GPX fitxategia"
 
+msgid "Help"
+msgstr "Laguntza"
+
 msgid "History"
 msgstr "Historia"
 
@@ -1073,23 +1026,6 @@ msgstr ""
 "Mesedez, aukeratu 90 edo 180 graduren inguruko angeluak dituzten bideak "
 "bakarrik."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Itsatsi"
 
@@ -2396,36 +2332,6 @@ msgstr ""
 msgid "Select relation"
 msgstr "Erlazioa aukeratu"
 
-msgid "<not>"
-msgstr "<ez>"
-
-msgid "<or>"
-msgstr "<edo>"
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr "<ezkerretako gurasoa>"
-
-msgid "<right parent>"
-msgstr "<eskuinetako gurasoa>"
-
-msgid "<colon>"
-msgstr "<bi puntu>"
-
-msgid "<equals>"
-msgstr "<berdinak>"
-
-msgid "<key>"
-msgstr "<giltza>"
-
-msgid "<question mark>"
-msgstr "<galdera ikurra>"
-
-msgid "<end-of-file>"
-msgstr "<artxiboaren-amaiera>"
-
 msgid "Search..."
 msgstr "Bilatu..."
 
@@ -2715,98 +2621,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "Maiuskula/minuskula"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"\"{0}\" adierazpen erregularrak sintaxi errorea du {1} gunean, errorea "
-"erabateko da:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"\"{0}\" espresio erregularrak parseatze errore bat izan du. Errore osoa:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Giltza ezin da hutsik egon etiketa operadorea erabili bitartean. Erabiltzeko "
-"adibidea: giltza=balioa"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Ezezaguna jatorrizko mota : {0}. Onartutako balioak hauexek dira: nodo, bide "
-"edo erlazio"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Zenbaki-tarte bat espero zen"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-"Espero ez zen ezaugarria. Hauxe espero zen: {0}, hauxe aurkitu da: {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Ustegabeko tokena: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parametro galdua OR horrentzat"
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr "Eragilea falta da NOT eragiketan"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2829,9 +2643,6 @@ msgid "API Capabilities Violation"
 msgstr ""
 "APIaren,  Aplikazioak Programatzeko Interfazearen, gaitasunen urraketa"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Erlazioen arteko mendekotasun ziklikoa:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3187,57 +2998,12 @@ msgstr "Honi dagokion erlazioaren rolak"
 msgid "Automatic tag correction"
 msgstr "Etiketen konponketa automatikoa"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Ezin da {0} direktorioa sortu. Autogordeketa desgaituko da."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Ezin da {0} fitxategia sortu, beste izen bat erabiliko da"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError fitxategia sortzean. Ez da automatikoki gordeko: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Ezin izan da ezabatu {0} aurreko babeskopia"
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Fitxategiak leheneratzen"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Latitudearen ''{0}'' balio ilegalak"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Longitudearen ''{0}'' balio ilegalak"
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3335,6 +3101,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "{0} hobespena ezabatu dugu ez bait da jadanik erabiltzen."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3463,10 +3235,19 @@ msgstr ""
 msgid "Note"
 msgstr "Oharra"
 
-msgid "ID > 0 expected. Got {0}."
-msgstr "ID > 0 espero zen. {0} daukazu."
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
 
-msgid "Version > 0 expected. Got {0}."
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
+msgid "ID > 0 expected. Got {0}."
+msgstr "ID > 0 espero zen. {0} daukazu."
+
+msgid "Version > 0 expected. Got {0}."
 msgstr "Bertsioa > 0 espero zen.  {0} daukazu."
 
 msgid ""
@@ -3479,6 +3260,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "ID = 0 den jatorrizko bat ezin da ikusezina izan"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Erlazioen arteko mendekotasun ziklikoa:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3516,6 +3300,59 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
+msgid "incomplete"
+msgstr "osatu gabea"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nodoa"
+msgstr[1] "nodoak"
+
+msgid "highway"
+msgstr "errepidea"
+
+msgid "railway"
+msgstr "trenbidea"
+
+msgid "waterway"
+msgstr "ubidea"
+
+msgid "landuse"
+msgstr "lurzorua"
+
+msgid "building"
+msgstr "eraikina"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "nodo {0}"
+msgstr[1] "{0} nodo"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "Kide {0}"
+msgstr[1] "{0} kide"
+
+msgid "public transport"
+msgstr "garraio publikoa"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "erlazio"
+msgstr[1] "erlazioak"
+
+msgid "Changeset {0}"
+msgstr "Aldaketa {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3554,21 +3391,11 @@ msgstr ""
 "Ezin dira ID ezberdinak dituzten jatorrizkoak bateratu. ID hau {0} da eta "
 "bestea {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nodoa"
-msgstr[1] "nodoak"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "bide"
 msgstr[1] "bideak"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "erlazio"
-msgstr[1] "erlazioak"
-
 msgid "closedway"
 msgstr ""
 
@@ -3605,6 +3432,128 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "{0} parametroa ez dago 0..{1} artean. ''{2}'' dugu."
 
+msgid "<not>"
+msgstr "<ez>"
+
+msgid "<or>"
+msgstr "<edo>"
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr "<ezkerretako gurasoa>"
+
+msgid "<right parent>"
+msgstr "<eskuinetako gurasoa>"
+
+msgid "<colon>"
+msgstr "<bi puntu>"
+
+msgid "<equals>"
+msgstr "<berdinak>"
+
+msgid "<key>"
+msgstr "<giltza>"
+
+msgid "<question mark>"
+msgstr "<galdera ikurra>"
+
+msgid "<end-of-file>"
+msgstr "<artxiboaren-amaiera>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"\"{0}\" adierazpen erregularrak sintaxi errorea du {1} gunean, errorea "
+"erabateko da:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"\"{0}\" espresio erregularrak parseatze errore bat izan du. Errore osoa:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Giltza ezin da hutsik egon etiketa operadorea erabili bitartean. Erabiltzeko "
+"adibidea: giltza=balioa"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Ezezaguna jatorrizko mota : {0}. Onartutako balioak hauexek dira: nodo, bide "
+"edo erlazio"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Zenbaki-tarte bat espero zen"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Ustegabeko tokena: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parametro galdua OR horrentzat"
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr "Eragilea falta da NOT eragiketan"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+"Espero ez zen ezaugarria. Hauxe espero zen: {0}, hauxe aurkitu da: {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "Maiuskula/minuskula"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3682,6 +3631,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Helbideak"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Bideak"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Erlijioa"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Erlazioak"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3866,9 +3930,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Helbideak"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4057,9 +4118,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr "Bideak"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4604,9 +4662,6 @@ msgstr "{0} ubide mota"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "eraikina"
-
 msgid "area"
 msgstr "azalera"
 
@@ -4728,45 +4783,16 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Ez erakutsi berriz (aukera gogoratzen du)"
 
-msgid "incomplete"
-msgstr "osatu gabea"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "errepidea"
-
-msgid "railway"
-msgstr "trenbidea"
-
-msgid "waterway"
-msgstr "ubidea"
-
-msgid "landuse"
-msgstr "lurzorua"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "nodo {0}"
-msgstr[1] "{0} nodo"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "Kide {0}"
-msgstr[1] "{0} kide"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Gaizki eratutako URL-a baztertzen: \"{0}\""
 
-msgid "public transport"
-msgstr "garraio publikoa"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Gaizki eratutako fitxategiaren URL-a baztertzen: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Aldaketa {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"\"downloadgps\" parametroak, \"gpsdeskargatu\" parametroak, ez ditu artxibo "
+"izenak onartzen ezta artxiboen URLak ere"
 
 msgid "Precondition violation"
 msgstr "Aurrebaldintza haustea"
@@ -4857,6 +4883,66 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "Balio ez-hutsa espero genuen, \"{0}\" parametroan, \"{1}\" jaso dugu."
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr "Menu nagusia eraikitzen"
+
+msgid "Updating user interface"
+msgstr "Erabiltzaile-interfazeak eguneratzen"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "OSM API hasieratzen"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Balioztatzailea hasieratzen"
+
+msgid "Initializing presets"
+msgstr "Aurrez ezarritakoak hasieratzen"
+
+msgid "Initializing map styles"
+msgstr "Mapa-estiloak hasieratzen"
+
+msgid "Loading imagery preferences"
+msgstr "Irudi-hobespenak kargatzen"
+
 msgid "usage"
 msgstr "erabilera"
 
@@ -5331,6 +5417,79 @@ msgstr "Mesedez, sartu koadroaren indizea"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "Oraingo balioa ez da koadro helbide zuzena zoom maila honetarako"
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -6047,6 +6206,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "Aukeratutako objektuentzat soilik"
 
@@ -6605,9 +6778,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6718,9 +6888,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Erlazioak"
-
 msgid "Open a list of all relations."
 msgstr "Erlazio guztien zerrenda ireki."
 
@@ -8114,24 +8281,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Dato jatorri eta motak"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap datuak"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "GPS datu gordinak"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Geruza berri bezala deskargatu"
 
@@ -8159,6 +8308,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Deskargatu objektu hau"
+
+msgid "Start downloading"
+msgstr "Hasi deskargatzen"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Dato jatorri eta motak"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap datuak"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "GPS datu gordinak"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8168,38 +8373,49 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr "Deskargatzeko azalera egokia, ziurrenez zerbitzariak onartuko du"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Deskargatu objektu hau"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Hasi deskargatzen"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "historia"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8242,9 +8458,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8782,6 +8995,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9259,9 +9484,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9340,6 +9562,179 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Formatu guztiak"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr "Egileari buruzko informazioa gehitu"
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Fitxategiak (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+"Sustengurik gabeko WMS fitxategi-bertsioa; {0} aurkitu da eta {1} espero zen"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9447,6 +9842,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Ezin da {0} direktorioa sortu. Autogordeketa desgaituko da."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Ezin da {0} fitxategia sortu, beste izen bat erabiliko da"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError fitxategia sortzean. Ez da automatikoki gordeko: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Ezin izan da ezabatu {0} aurreko babeskopia"
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Fitxategiak leheneratzen"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9550,6 +9972,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9625,6 +10050,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "WMS laster-marka ezarri"
 
@@ -10194,9 +10622,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10206,6 +10631,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10640,34 +11068,13 @@ msgstr ""
 msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
-msgstr ""
-
-msgid "Author:"
-msgstr ""
-
-msgid "Webpage:"
-msgstr ""
-
-msgid "Description:"
-msgstr ""
-
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11753,19 +12160,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11845,12 +12239,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12316,9 +12704,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12336,12 +12721,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12522,69 +12901,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Erlijioa"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12828,6 +13144,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12940,9 +13279,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Formatu guztiak"
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -13045,86 +13381,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr "Egileari buruzko informazioa gehitu"
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13134,18 +13390,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13197,36 +13441,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13299,40 +13516,25 @@ msgstr ""
 msgid "ID of current changeset > 0 required. Current ID is {0}."
 msgstr ""
 
-msgid "Open changeset expected. Got closed changeset with id {0}."
-msgstr ""
-
-msgid "Note upload failed"
-msgstr ""
-
-msgid "Error parsing note response from server"
-msgstr ""
-
-msgid "(Code={0})"
-msgstr ""
-
-msgid "The server replied an error with code {0}."
-msgstr ""
-
-msgid "OSM Server Files bzip2 compressed"
+msgid "Open changeset expected. Got closed changeset with id {0}."
 msgstr ""
 
-msgid "Prolog of OsmChange document already written. Please write only once."
+msgid "Note upload failed"
 msgstr ""
 
-msgid "Prolog of OsmChange document not written yet. Please write first."
+msgid "Error parsing note response from server"
 msgstr ""
 
-msgid "OsmChange File"
+msgid "(Code={0})"
 msgstr ""
 
-msgid "File ''{0}'' does not exist."
+msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "No data found in file {0}."
+msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
-msgid "Open OsmChange file"
+msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
 msgid "Unsupported version: {0}"
@@ -13380,35 +13582,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13540,6 +13716,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13597,15 +13776,8 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Fitxategiak (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
-"Sustengurik gabeko WMS fitxategi-bertsioa; {0} aurkitu da eta {1} espero zen"
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -14540,33 +14712,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14625,20 +14770,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14662,109 +14793,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18482,9 +18517,6 @@ msgstr "Iragarki-taula"
 msgid "notice"
 msgstr "oharra"
 
-msgid "history"
-msgstr "historia"
-
 msgid "nature"
 msgstr "natura"
 
@@ -19064,6 +19096,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21504,6 +21539,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22364,6 +22402,78 @@ msgstr "Bulegoak"
 msgid "Industrial"
 msgstr "Industriala"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23059,6 +23169,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23811,6 +23924,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23921,15 +24037,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31826,13 +31933,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32330,6 +32443,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32338,6 +32454,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/fa.po b/i18n/po/fa.po
index 5c44d14..353eb67 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:56+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:56+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: fa\n"
 
@@ -55,54 +55,9 @@ msgstr "زمینه و شرایط استفاده"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "باز کردن پیوند در بستر کنونی پشتیبانی نمی شود (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "اجرا کردن بستر قلاب راه اندازی"
-
-msgid "Building main menu"
-msgstr "منو اصلی ساختمان"
-
-msgid "Help"
-msgstr "کمک"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "مقدار دهی اولیه API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "مقداردهی اولیه اعتبار سنج"
-
-msgid "Initializing presets"
-msgstr "مقداردهی اولیه پیش تنظیمات"
-
-msgid "Initializing map styles"
-msgstr "مقداردهی اولیه سبک های نقشه"
-
-msgid "Loading imagery preferences"
-msgstr "بارگیری ترجیحات تصویری"
-
-msgid "Updating user interface"
-msgstr "بروز رسانی رابط کاربری"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "نادیده گرفتن آدرس ناقص: \"{0}\""
-
-msgid "Warning"
-msgstr "هشدار"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "نادیده گرفتن فایل URL ناقص: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "پارامتر \"downloadgps\" نام ها یا آدرس های پرونده را نپذیرفت"
-
 msgid "About"
 msgstr "درباره"
 
@@ -180,6 +135,9 @@ msgstr "لغو"
 msgid "Click to abort launching external browsers"
 msgstr "برای لغو بارگذاری مرورگر کلیک کنید"
 
+msgid "Warning"
+msgstr "هشدار"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "حداقل یک نقطه، جاده و یا ارتباط قبلاً آپلود شده را انتخاب کنید."
 
@@ -462,13 +420,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "دانلود از OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "دانلود داده های نقشه از سرور OSM."
+msgid "Download data"
+msgstr "دانلود داده ها"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -478,9 +433,6 @@ msgstr ""
 "<html>این عملیات  {0} درخواست دانلود منحصر بفرد<br>نیاز دارد. "
 "مایلید<br>ادامه دهید؟</html>"
 
-msgid "Download data"
-msgstr "دانلود داده ها"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -547,6 +499,9 @@ msgstr "چیزی برای خارج سازی نیست. اول مقداری داد
 msgid "Export GPX file"
 msgstr "خارج سازی پرونده GPX"
 
+msgid "Help"
+msgstr "کمک"
+
 msgid "History"
 msgstr "تاریخچه"
 
@@ -1099,23 +1054,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "لطفا راه هایی با زاویه حدود 90 و 180 درجه را انتخاب کنید."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "چسباندن"
 
@@ -2374,36 +2312,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2690,86 +2598,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2787,9 +2615,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3136,57 +2961,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3276,6 +3056,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3404,6 +3190,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3418,6 +3213,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3454,15 +3252,67 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "ارتباط"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3488,19 +3338,10 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "راه"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "ارتباط"
-
 msgid "closedway"
 msgstr ""
 
@@ -3534,6 +3375,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3611,6 +3562,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3795,9 +3861,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3982,9 +4045,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4523,9 +4583,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4640,45 +4697,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "نادیده گرفتن آدرس ناقص: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "نادیده گرفتن فایل URL ناقص: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "پارامتر \"downloadgps\" نام ها یا آدرس های پرونده را نپذیرفت"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4769,6 +4795,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "اجرا کردن بستر قلاب راه اندازی"
+
+msgid "Building main menu"
+msgstr "منو اصلی ساختمان"
+
+msgid "Updating user interface"
+msgstr "بروز رسانی رابط کاربری"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "مقدار دهی اولیه API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "مقداردهی اولیه اعتبار سنج"
+
+msgid "Initializing presets"
+msgstr "مقداردهی اولیه پیش تنظیمات"
+
+msgid "Initializing map styles"
+msgstr "مقداردهی اولیه سبک های نقشه"
+
+msgid "Loading imagery preferences"
+msgstr "بارگیری ترجیحات تصویری"
+
 msgid "usage"
 msgstr ""
 
@@ -5230,6 +5316,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5928,6 +6087,20 @@ msgstr ""
 "داده های کپی شده شامل اشیا ناقص اند. هنگام چسباندن اشیا ناقص پاک میشوند. "
 "میخواهید داده ها را بدون اشیا ناقص جایگذاری کنید؟"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6484,9 +6657,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6597,9 +6767,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7992,49 +8159,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
 msgstr ""
 
+msgid "Download object"
+msgstr "بارگذارى شئ"
+
+msgid "Start downloading"
+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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -8046,36 +8251,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "بارگذارى شئ"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "شروع به بارگذارى"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8120,9 +8336,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8660,6 +8873,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9142,9 +9367,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9223,6 +9445,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9330,6 +9724,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9433,6 +9854,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9506,6 +9930,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10075,9 +10502,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10087,6 +10511,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10500,55 +10927,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11634,19 +12040,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11726,12 +12119,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12197,9 +12584,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12217,12 +12601,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12403,69 +12781,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12709,6 +13024,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12821,9 +13159,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12926,86 +13261,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13015,18 +13270,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13078,36 +13321,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13195,27 +13411,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13261,35 +13462,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13421,6 +13596,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13478,13 +13656,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14420,33 +14592,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14505,20 +14650,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14542,109 +14673,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18357,9 +18392,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18939,6 +18971,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21379,6 +21414,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22239,6 +22277,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22934,6 +23044,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23686,6 +23799,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23796,15 +23912,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31656,13 +31763,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32160,6 +32273,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32168,6 +32284,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/fi.po b/i18n/po/fi.po
index a54d3a6..54d7bf2 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:42+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:42+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: fi\n"
 
@@ -56,54 +56,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Linkkien avaaminen ei onnistu nykyisellä ohjelmisto-alustalla (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr "Alustetaan käyttöjärjestelmäyhteys"
-
-msgid "Building main menu"
-msgstr "Luodaan päävalikko"
-
-msgid "Help"
-msgstr "Ohje"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Valmistellaan OSM API -yhteys"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Valmistellaan tarkistin"
-
-msgid "Initializing presets"
-msgstr "Valmistellaan esivalinnat"
-
-msgid "Initializing map styles"
-msgstr "Valmistellaan kartanpiirtotyylit"
-
-msgid "Loading imagery preferences"
-msgstr "Ladataan kuvatasojen asetukset"
-
-msgid "Updating user interface"
-msgstr "Valmistellaan käyttöliittymää"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Jätetään huomiotta virheellinen URL-osoite: ”{0}”"
-
-msgid "Warning"
-msgstr "Varoitus"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ohitetaan virheellinen tiedosto-URL: ”{0}”"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametrin ”downloadgps” arvoksi ei kelpaa tiedoston URL eikä nimi."
-
 msgid "About"
 msgstr "Tietoja"
 
@@ -185,6 +140,9 @@ msgstr "Peruuta"
 msgid "Click to abort launching external browsers"
 msgstr "Peruuta selainikkunoiden avaaminen"
 
+msgid "Warning"
+msgstr "Varoitus"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Valitse ainakin yksi jo lähetetty piste, polku tai relaatio."
 
@@ -473,14 +431,11 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Lataa OSM:sta..."
-
-msgid "Download map data from the OSM server."
-msgstr "Lataa karttadataa OSM-palvelimelta."
+msgid "Download data"
+msgstr "Lataa dataa"
 
-msgid "Please select a download area first."
-msgstr "Valitse ensin ladattava alue."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -488,9 +443,6 @@ msgid ""
 msgstr ""
 "<html>Tämä vaatii {0} erillistä latauspyyntöä.<br>Jatketaanko?</html>"
 
-msgid "Download data"
-msgstr "Lataa dataa"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -557,6 +509,9 @@ msgstr "Ei mitään vietävää. Hae ensin dataa."
 msgid "Export GPX file"
 msgstr "Vie GPX-tiedosto"
 
+msgid "Help"
+msgstr "Ohje"
+
 msgid "History"
 msgstr "Historia"
 
@@ -1116,23 +1071,6 @@ msgstr ""
 "Suorakulmaistus voidaan tehdä vain poluille, joiden kulmat ovat jo ennestään "
 "lähellä 90 tai 180 astetta."
 
-msgid "Download from Overpass API ..."
-msgstr "Lataa Overpass API -palvelusta..."
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Liitä"
 
@@ -2491,36 +2429,6 @@ msgstr "Lisää relaatiot valintaan"
 msgid "Select relation"
 msgstr "Valitse relaatio"
 
-msgid "<not>"
-msgstr "<ei>"
-
-msgid "<or>"
-msgstr "<tai>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<vasen sulje>"
-
-msgid "<right parent>"
-msgstr "<oikea sulje>"
-
-msgid "<colon>"
-msgstr "<puolipiste>"
-
-msgid "<equals>"
-msgstr "<on yhtä kuin>"
-
-msgid "<key>"
-msgstr "<avain>"
-
-msgid "<question mark>"
-msgstr "<kysymysmerkki>"
-
-msgid "<end-of-file>"
-msgstr "<tiedoston loppu>"
-
 msgid "Search..."
 msgstr "Etsi..."
 
@@ -2814,94 +2722,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "HK"
-
-msgctxt "search"
-msgid "CI"
-msgstr "ÄHK"
-
-msgctxt "search"
-msgid "RX"
-msgstr "SL"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "K"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Säännöllisessä lausekkeessa \"{0}\" on virhe kohdassa {1}:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Virhe säännöllistä lauseketta \"{0}\" jäsennettäessä. Koko virhe:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Avain ei saa olla tyhjä, kun käytetään tägi-operaattoria. Malli: avain=arvo"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tuntematon objektin tyyppi: {0}. Sallitut arvot ovat node, way ja relation"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Odotettiin lukuväliä"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Odottamaton symboli. Odotettu {0}, löydetty {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "MapCSS-valitsimen tulkinta ei onnistunut"
-
-msgid "Unexpected token: {0}"
-msgstr "Odottamaton symboli: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "OR-operaattorilta puuttuu parametri"
-
-msgid "Missing parameter for XOR"
-msgstr "JOKOTAI-operaattorilta puuttuu parametri"
-
-msgid "Missing operator for NOT"
-msgstr "EI-operaattorilta puuttuu parametri"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2921,9 +2741,6 @@ msgstr "Polussa {1} on {0} pistettä joka on enemmän kuin maksimi ({2})"
 msgid "API Capabilities Violation"
 msgstr "APIn rajoitus ylitetty"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Syklinen riippuvuus relaatioden välillä"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3294,60 +3111,12 @@ msgstr "Roolit relaatioissa, jotka viittavat"
 msgid "Automatic tag correction"
 msgstr "Automaattinen tagien korjaus"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Kirjaston {0} luonti epäonnistui, automaattinen tallennus on pois päältä"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Tiedoston {0} luonti epäonnistui, käytetään muuta tiedostonimeä."
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Luku / kirjoitusvirhe tiedoston luonnissa, automaattinen tallennus "
-"ohitetaan: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Vanhan varmuuskopion poisto ei onnistu {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Muokkauksesi on automaattitallennettu paikallisesti."
-
-msgid "Restoring files"
-msgstr "Palautetaan tiedostot"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Virheellinen leveyspiiri ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Virheellinen pituuspiiri ''{0}''"
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr "Asennetaan liitännäisiä"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3447,6 +3216,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Asetus {0} on poistettu koska sitä ei enää tarvita."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrinen"
 
@@ -3578,6 +3353,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Tunnisteen oletettiin olevan > 0. Saatiin {0}."
 
@@ -3594,6 +3378,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Objekti, jonka tunniste on 0, ei voi olla näkymätön"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Syklinen riippuvuus relaatioden välillä"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "Objektia {0} ei voi lisätä datajoukkoon, koska se kuuluu jo siihen"
@@ -3633,6 +3420,59 @@ msgstr "Yhdistetään tietoja..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Testi ''{0}'' valmis, kesto oli {1}"
 
+msgid "incomplete"
+msgstr "keskeneräinen"
+
+msgid "House {0}"
+msgstr "Talo {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Talo {0} kadulla {1}"
+
+msgid "House number {0}"
+msgstr "Talonumero {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "piste"
+msgstr[1] "pistettä"
+
+msgid "highway"
+msgstr "tie"
+
+msgid "railway"
+msgstr "rata"
+
+msgid "waterway"
+msgstr "vesiväylä"
+
+msgid "landuse"
+msgstr "maankäyttö"
+
+msgid "building"
+msgstr "rakennus"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} piste"
+msgstr[1] "{0} pistettä"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} jäsen"
+msgstr[1] "{0} jäsentä"
+
+msgid "public transport"
+msgstr "julkinen liikenne"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relaatio"
+msgstr[1] "relaatiot"
+
+msgid "Changeset {0}"
+msgstr "Muutoskokoelma {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3670,21 +3510,11 @@ msgstr ""
 "Objekteja ei voi yhdistää, koska niillä on eri tunnisteet: tällä {0} ja "
 "toisella {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "piste"
-msgstr[1] "pistettä"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "polku"
 msgstr[1] "polkua"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relaatio"
-msgstr[1] "relaatiot"
-
 msgid "closedway"
 msgstr "suljettupolku"
 
@@ -3720,6 +3550,124 @@ msgstr "Objektin \"{0}\" versiota ei voi verrata alkion \"{1}\" versioon."
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parametri {0} ei ole välillä 0..{1}. Saatiin ”{2}”."
 
+msgid "<not>"
+msgstr "<ei>"
+
+msgid "<or>"
+msgstr "<tai>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<vasen sulje>"
+
+msgid "<right parent>"
+msgstr "<oikea sulje>"
+
+msgid "<colon>"
+msgstr "<puolipiste>"
+
+msgid "<equals>"
+msgstr "<on yhtä kuin>"
+
+msgid "<key>"
+msgstr "<avain>"
+
+msgid "<question mark>"
+msgstr "<kysymysmerkki>"
+
+msgid "<end-of-file>"
+msgstr "<tiedoston loppu>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Säännöllisessä lausekkeessa \"{0}\" on virhe kohdassa {1}:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Virhe säännöllistä lauseketta \"{0}\" jäsennettäessä. Koko virhe:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Avain ei saa olla tyhjä, kun käytetään tägi-operaattoria. Malli: avain=arvo"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tuntematon objektin tyyppi: {0}. Sallitut arvot ovat node, way ja relation"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Odotettiin lukuväliä"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "MapCSS-valitsimen tulkinta ei onnistunut"
+
+msgid "Unexpected token: {0}"
+msgstr "Odottamaton symboli: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "OR-operaattorilta puuttuu parametri"
+
+msgid "Missing parameter for XOR"
+msgstr "JOKOTAI-operaattorilta puuttuu parametri"
+
+msgid "Missing operator for NOT"
+msgstr "EI-operaattorilta puuttuu parametri"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Odottamaton symboli. Odotettu {0}, löydetty {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "HK"
+
+msgctxt "search"
+msgid "CI"
+msgstr "ÄHK"
+
+msgctxt "search"
+msgid "RX"
+msgstr "SL"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "K"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3803,6 +3751,123 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Lyhyt kuvaus:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr "Kuvaus:"
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr "Sisäänrakennetut esivalinnat"
+
+msgid "The default preset for JOSM"
+msgstr "JOSM:n oletuksena käyttämät esivalinnat"
+
+msgid "Addresses"
+msgstr "Osoitteet"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr "Tagien yhdistelmät"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+"Etsii kohteista mahdollisesti puuttuvia tageja ja epäilyttäviä "
+"tagiyhdistelmiä."
+
+msgid "Deprecated features"
+msgstr "Vanhentuneet merkintätavat"
+
+msgid "Checks for deprecated features"
+msgstr "Huomauttaa vanhentuneista tavoista merkitä tiettyjä karttakohteita"
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Väylät"
+
+msgid "Checks for errors on highways"
+msgstr "Etsii virheitä kuljettavista teistä ja poluista."
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr "Lukuarvot"
+
+msgid "Checks for wrong numeric values"
+msgstr "Etsii virheellisiä lukuarvoja"
+
+msgid "Religion"
+msgstr "Uskonto"
+
+msgid "Checks for errors on religious objects"
+msgstr "Etsii virheitä uskonnollisista karttakohteista"
+
+msgid "Relations"
+msgstr "Relaatiot"
+
+msgid "Checks for errors on relations"
+msgstr "Etsii mahdollisia virheitä relaatioista"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Tarpeettomat tagit"
+
+msgid "Checks for unnecessary tags"
+msgstr "Etsii tarpeettomia tageja, ts. muutoin ilmeneviä tietoja."
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Etsii virheellisiä wikipedia-tageja"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM projektio (''+proj=utm'') edellyttää parametria ''+zone=...''"
 
@@ -3989,9 +4054,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Osoitteet"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Etsii virheitä osoitteista ja associatedStreet-relaatioista."
 
@@ -4182,9 +4244,6 @@ msgstr "Polkujen pisteiden kaksoiskappaleet"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Etsii polkuja, joissa sama piste toistuu useasti peräkkäin"
 
-msgid "Highways"
-msgstr "Väylät"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4754,9 +4813,6 @@ msgstr "vesiväylän tyyppi {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "rakennus"
-
 msgid "area"
 msgstr "alue"
 
@@ -4873,45 +4929,14 @@ msgstr "Älä näytä uudestaan (tämän muokkaussession aikana)"
 msgid "Do not show again (remembers choice)"
 msgstr "Älä näytä uudestaan (muistaa valinnan)"
 
-msgid "incomplete"
-msgstr "keskeneräinen"
-
-msgid "House {0}"
-msgstr "Talo {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Talo {0} kadulla {1}"
-
-msgid "House number {0}"
-msgstr "Talonumero {0}"
-
-msgid "highway"
-msgstr "tie"
-
-msgid "railway"
-msgstr "rata"
-
-msgid "waterway"
-msgstr "vesiväylä"
-
-msgid "landuse"
-msgstr "maankäyttö"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} piste"
-msgstr[1] "{0} pistettä"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} jäsen"
-msgstr[1] "{0} jäsentä"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Jätetään huomiotta virheellinen URL-osoite: ”{0}”"
 
-msgid "public transport"
-msgstr "julkinen liikenne"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ohitetaan virheellinen tiedosto-URL: ”{0}”"
 
-msgid "Changeset {0}"
-msgstr "Muutoskokoelma {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametrin ”downloadgps” arvoksi ei kelpaa tiedoston URL eikä nimi."
 
 msgid "Precondition violation"
 msgstr "Esiehto ei täyty"
@@ -5001,6 +5026,68 @@ msgstr "Siirros"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Parametrille {0} odotettiin epätyhjää arvoa, mutta saatiin ”{1}”"
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"Seuraavat versiot JOSM:sta eivät välttämättä toimi tämän version kanssa. "
+"Suosittelemme päivittämään Javan versioon {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Alustetaan käyttöjärjestelmäyhteys"
+
+msgid "Building main menu"
+msgstr "Luodaan päävalikko"
+
+msgid "Updating user interface"
+msgstr "Valmistellaan käyttöliittymää"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Valmistellaan OSM API -yhteys"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Valmistellaan tarkistin"
+
+msgid "Initializing presets"
+msgstr "Valmistellaan esivalinnat"
+
+msgid "Initializing map styles"
+msgstr "Valmistellaan kartanpiirtotyylit"
+
+msgid "Loading imagery preferences"
+msgstr "Ladataan kuvatasojen asetukset"
+
 msgid "usage"
 msgstr "käyttö"
 
@@ -5478,6 +5565,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Kyseinen arvo ei ole minkään ruudun indeksi annetulla suurennostasolla"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "JOSMissa on tapahtunut virhe"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Ilmoita ohjelmavirheestä"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Älä näytä virheilmoituksia enää tämän käyttökerran aikana."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikti tausta: ei konfliktia"
 
@@ -6201,6 +6361,22 @@ msgstr ""
 "vaillinaiset objektit poistetaan. Haluatko liittää tiedot ilman vaillinaisia "
 "objekteja?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p>Valitettavasti tageja ei voitu liittää leikepöydältä, koska se ei "
+"sisältänyt JOSM-objektia tai sopivaa tekstiä.</p></html>"
+
 msgid "For selected objects only"
 msgstr "Vain valittujen kohteiden"
 
@@ -6791,9 +6967,6 @@ msgstr "Lähdekoodi"
 msgid "Title:"
 msgstr "Nimi:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Vakiotyyli, ohjelman sisäinen polku:"
 
@@ -6904,9 +7077,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relaatiot"
-
 msgid "Open a list of all relations."
 msgstr "Näyttää kaikki relaatiot luettelona"
 
@@ -8389,6 +8559,69 @@ msgstr "Leveyspiirin arvo välillä [-90,90] tarvitaan."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Pituuspiirin arvo välillä [-180,180] tarvitaan."
 
+msgid "Download as new layer"
+msgstr "Lataa uutena tasona"
+
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
+msgstr ""
+"<html>Merkkaa valituksi, jos haluat ladata tiedot uudelle tasolle.<br>Poista "
+"valintamerkki, jos haluat ladata tiedot aktiiviselle datatasolle.</html>"
+
+msgid "Open this dialog on startup"
+msgstr "Avaa tämä ikkuna aina JOSMin käynnistyessä"
+
+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>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."
+msgstr ""
+
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+"Valitse sulkeaksesi tämä ikkuna ja peruuttaaksesi tietojen lataaminen"
+
+msgid "Click to download the currently selected area"
+msgstr "Valitse ladataksesi valitun alueen tiedot"
+
+msgid "Download referrers (parent relations)"
+msgstr "Lataa viittaavat kohteet (emorelaatiot)"
+
+msgid "Download object"
+msgstr "Lataa objekti"
+
+msgid "Start downloading"
+msgstr "Aloittaa latauksen"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+"Valitse, jos haluat että myös ladattavaan objektiin viittavat objektit "
+"ladataan, ts. emorelaatiot ja pisteille myös polut joissa piste on jäsenenä."
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "Valitse, jos haluat että myös ladattavan relaation jäsenet ladataan."
+
+msgid "Download referrers (parent relations and ways)"
+msgstr "Lataa viittaavat objektit (emorelaatiot ja -polut)"
+
+msgid "Download from OSM"
+msgstr ""
+
 msgid "Data Sources and Types:"
 msgstr "Ladattavat tiedot:"
 
@@ -8411,35 +8644,13 @@ msgstr ""
 msgid "Select to download notes in the selected download area."
 msgstr ""
 
-msgid "Download as new layer"
-msgstr "Lataa uutena tasona"
-
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
-msgstr ""
-"<html>Merkkaa valituksi, jos haluat ladata tiedot uudelle tasolle.<br>Poista "
-"valintamerkki, jos haluat ladata tiedot aktiiviselle datatasolle.</html>"
-
-msgid "Open this dialog on startup"
-msgstr "Avaa tämä ikkuna aina JOSMin käynnistyessä"
-
-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>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 "Please select a download area first."
+msgstr "Valitse ensin ladattava alue."
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -8452,40 +8663,48 @@ msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 "Ladattava alue on sopivan kokoinen, palvelin todennäköisesti hyväksyy pyynnön"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
-"Valitse sulkeaksesi tämä ikkuna ja peruuttaaksesi tietojen lataaminen"
 
-msgid "Click to download the currently selected area"
-msgstr "Valitse ladataksesi valitun alueen tiedot"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
-msgstr "Lataa viittaavat kohteet (emorelaatiot)"
+msgid "Your saved queries:"
+msgstr ""
 
-msgid "Download object"
-msgstr "Lataa objekti"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Aloittaa latauksen"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
-"Valitse, jos haluat että myös ladattavaan objektiin viittavat objektit "
-"ladataan, ts. emorelaatiot ja pisteille myös polut joissa piste on jäsenenä."
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "Valitse, jos haluat että myös ladattavan relaation jäsenet ladataan."
+msgid "Download all data?"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "Lataa viittaavat objektit (emorelaatiot ja -polut)"
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "historia"
 
 msgid "Please select an item first"
 msgstr ""
@@ -8529,9 +8748,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9124,6 +9340,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr "Asennetaan liitännäisiä"
+
 msgid "Downloading file"
 msgstr "Tiedoston lataus"
 
@@ -9686,9 +9914,6 @@ msgstr "Valitse lähetettävät objektit"
 msgid "Cancel uploading"
 msgstr "Peruuta lähetys"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9773,6 +9998,190 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} kohde poistetaan:"
 msgstr[1] "{0} kohdetta poistetaan:"
 
+msgid "All Formats"
+msgstr "Kaikki tunnetut muodot"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr "Tiedostojen tuominen ei onnistunut."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Tiedoston ''{0}'' lukeminen ei onnistunut.<br>Virhetieto:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Tiedostojen lukeminen ei onnistunut.<br>Virhetieto:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON-tiedostot"
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Huomio: GPL ei ole yhteensopiva OSM:n käyttämän lisenssin kanssa. Älä lähetä "
+"GPL:n alaisia jälkiä."
+
+msgid "GPS track description"
+msgstr "gps-jäljen kuvaus"
+
+msgid "Add author information"
+msgstr "Lisää tekijän tiedot"
+
+msgid "Real name"
+msgstr "Oikea nimi"
+
+msgid "E-Mail"
+msgstr "Sähköposti"
+
+msgid "Copyright (URL)"
+msgstr "Tekijänoikeudet (URL-osoite)"
+
+msgid "Predefined"
+msgstr "Ennaltamääritelty"
+
+msgid "Copyright year"
+msgstr "Tekijänoikeuden vuosi"
+
+msgid "Keywords"
+msgstr "Avainsanat"
+
+msgid "Export options"
+msgstr "Vientiasetukset"
+
+msgid "Export and Save"
+msgstr "Vie ja tallenna"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Virhe vietäessä {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Valitse ennaltamääritetty lisenssi"
+
+msgid "GPX Files"
+msgstr "GPX-tiedostot"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Tulkittaessa gpx dataa tasolle ''{0}'' tapahtui virhe. Vain osa sisällöstä "
+"on käytössä."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Tulkittaessa gpx-tiedostoa ''{0}'' tapahtui virhe. Vain osa sisällöstä on "
+"käytössä."
+
+msgid "Image Files"
+msgstr "Kuvatiedostot"
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr "Kuvatiedostoja ei löytynyt."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 -tiedostot"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "NMEA-tuonti epäonnistui"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr "OsmChange -tiedostot"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Tiedosto ''{0}'' ei ole olemassa."
+
+msgid "No data found in file {0}."
+msgstr "Tiedostosta {0} ei löytynyt dataa."
+
+msgid "Open OsmChange file"
+msgstr "Avaa OsmChange -tiedosto"
+
+msgid "OSM Server Files"
+msgstr "OSM-palvelintiedostot"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Virhe palautettaessa varmuuskopiota "
+"tiedostosta.<br>Virhetiedo:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM-palvelintiedostot gzip-pakattuina"
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr "Tiedostosta ''{0}'' ei löytynyt dataa."
+
+msgid "Open OSM file"
+msgstr "Avaa OSM-tiedosto"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS-tiedostot (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "WMS tiedoston versiota ei tueta; luettiin arvo: {0}, odotettiin: {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9880,6 +10289,36 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Kirjaston {0} luonti epäonnistui, automaattinen tallennus on pois päältä"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Tiedoston {0} luonti epäonnistui, käytetään muuta tiedostonimeä."
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Luku / kirjoitusvirhe tiedoston luonnissa, automaattinen tallennus "
+"ohitetaan: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Vanhan varmuuskopion poisto ei onnistu {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Muokkauksesi on automaattitallennettu paikallisesti."
+
+msgid "Restoring files"
+msgstr "Palautetaan tiedostot"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Muokkaa väriä"
 
@@ -9983,6 +10422,9 @@ msgstr "Karttailmoituksia yhteensä:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "ladatun alueen ulkopuolella"
 
@@ -10058,6 +10500,9 @@ msgstr "Tarkistusvirheet"
 msgid "No validation errors"
 msgstr "Ei virheitä"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10640,9 +11085,6 @@ msgstr "(URL oli: "
 msgid "Select the map painting styles"
 msgstr "Valitse käytettävät piirtotyylit"
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10652,6 +11094,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -11103,27 +11548,6 @@ msgstr "Lataa liitännäisiä"
 msgid "Icon paths:"
 msgstr "Lista karttakohteiden kuvakkeita sisältävistä kansioista:"
 
-msgid "Short Description:"
-msgstr "Lyhyt kuvaus:"
-
-msgid "Author:"
-msgstr ""
-
-msgid "Webpage:"
-msgstr ""
-
-msgid "Description:"
-msgstr "Kuvaus:"
-
-msgid "Version:"
-msgstr ""
-
-msgid "Minimum JOSM Version:"
-msgstr ""
-
-msgid "by {0}"
-msgstr ""
-
 msgid "Name (optional):"
 msgstr "Nimi (valinnainen):"
 
@@ -12271,19 +12695,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Kartta-asetukset"
 
@@ -12367,12 +12778,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr "Sisäänrakennetut esivalinnat"
-
-msgid "The default preset for JOSM"
-msgstr "JOSM:n oletuksena käyttämät esivalinnat"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12852,9 +13257,6 @@ msgstr "OSM-salasana:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12872,12 +13274,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr "Tallenna asetuksiin"
 
@@ -13070,71 +13466,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr "Tagien yhdistelmät"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-"Etsii kohteista mahdollisesti puuttuvia tageja ja epäilyttäviä "
-"tagiyhdistelmiä."
-
-msgid "Deprecated features"
-msgstr "Vanhentuneet merkintätavat"
-
-msgid "Checks for deprecated features"
-msgstr "Huomauttaa vanhentuneista tavoista merkitä tiettyjä karttakohteita"
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr "Etsii virheitä kuljettavista teistä ja poluista."
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr "Lukuarvot"
-
-msgid "Checks for wrong numeric values"
-msgstr "Etsii virheellisiä lukuarvoja"
-
-msgid "Religion"
-msgstr "Uskonto"
-
-msgid "Checks for errors on religious objects"
-msgstr "Etsii virheitä uskonnollisista karttakohteista"
-
-msgid "Checks for errors on relations"
-msgstr "Etsii mahdollisia virheitä relaatioista"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Tarpeettomat tagit"
-
-msgid "Checks for unnecessary tags"
-msgstr "Etsii tarpeettomia tageja, ts. muutoin ilmeneviä tietoja."
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Etsii virheellisiä wikipedia-tageja"
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13386,6 +13717,29 @@ msgstr "Kaikki tiedostot (*.*)"
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ohitetaan virheellinen muoto: {0}"
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -13506,9 +13860,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Poistettuun jäseneen {0} viitataan relaatiosta {1}"
 
-msgid "All Formats"
-msgstr "Kaikki tunnetut muodot"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Ladataan pisteet {0}-{1}..."
 
@@ -13624,96 +13975,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr "Tiedostojen tuominen ei onnistunut."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Tiedoston ''{0}'' lukeminen ei onnistunut.<br>Virhetieto:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Tiedostojen lukeminen ei onnistunut.<br>Virhetieto:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON-tiedostot"
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Huomio: GPL ei ole yhteensopiva OSM:n käyttämän lisenssin kanssa. Älä lähetä "
-"GPL:n alaisia jälkiä."
-
-msgid "GPS track description"
-msgstr "gps-jäljen kuvaus"
-
-msgid "Add author information"
-msgstr "Lisää tekijän tiedot"
-
-msgid "Real name"
-msgstr "Oikea nimi"
-
-msgid "E-Mail"
-msgstr "Sähköposti"
-
-msgid "Copyright (URL)"
-msgstr "Tekijänoikeudet (URL-osoite)"
-
-msgid "Predefined"
-msgstr "Ennaltamääritelty"
-
-msgid "Copyright year"
-msgstr "Tekijänoikeuden vuosi"
-
-msgid "Keywords"
-msgstr "Avainsanat"
-
-msgid "Export options"
-msgstr "Vientiasetukset"
-
-msgid "Export and Save"
-msgstr "Vie ja tallenna"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Virhe vietäessä {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Valitse ennaltamääritetty lisenssi"
-
-msgid "GPX Files"
-msgstr "GPX-tiedostot"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Tulkittaessa gpx dataa tasolle ''{0}'' tapahtui virhe. Vain osa sisällöstä "
-"on käytössä."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Tulkittaessa gpx-tiedostoa ''{0}'' tapahtui virhe. Vain osa sisällöstä on "
-"käytössä."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Virhe luettaessa gpx-tiedostoa: tiedoston rakenne virheellinen."
 
@@ -13723,18 +13984,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr "Kuvatiedostot"
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr "Kuvatiedostoja ei löytynyt."
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13788,36 +14037,9 @@ msgstr "Haetaan relaatiota {0} paikasta ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Palvelin palautti virhekoodin 404 objektin {0}. Ohitetaan."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 -tiedostot"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "NMEA-tuonti epäonnistui"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13906,27 +14128,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr "OsmChange -tiedostot"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Tiedosto ''{0}'' ei ole olemassa."
-
-msgid "No data found in file {0}."
-msgstr "Tiedostosta {0} ei löytynyt dataa."
-
-msgid "Open OsmChange file"
-msgstr "Avaa OsmChange -tiedosto"
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13972,37 +14179,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM-palvelintiedostot"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Virhe palautettaessa varmuuskopiota "
-"tiedostosta.<br>Virhetiedo:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM-palvelintiedostot gzip-pakattuina"
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr "Tiedostosta ''{0}'' ei löytynyt dataa."
-
-msgid "Open OSM file"
-msgstr "Avaa OSM-tiedosto"
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -14140,6 +14319,9 @@ msgstr "Yhdistetään palvelimeen..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "OSM-palvelimeen ei voitu yhdistää. Tarkista internetyhteytesi."
@@ -14198,15 +14380,9 @@ msgstr "Havaittiin OSM-objektille odottamaton tunniste \"0\"."
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "WMS Files (*.wms)"
-msgstr "WMS-tiedostot (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "WMS tiedoston versiota ei tueta; luettiin arvo: {0}, odotettiin: {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -15196,35 +15372,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"Seuraavat versiot JOSM:sta eivät välttämättä toimi tämän version kanssa. "
-"Suosittelemme päivittämään Javan versioon {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr "varattu"
 
@@ -15291,22 +15438,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p>Valitettavasti tageja ei voitu liittää leikepöydältä, koska se ei "
-"sisältänyt JOSM-objektia tai sopivaa tekstiä.</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15330,109 +15461,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ohitetaan virheellinen muoto: {0}"
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "JOSMissa on tapahtunut virhe"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Ilmoita ohjelmavirheestä"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Älä näytä virheilmoituksia enää tämän käyttökerran aikana."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19151,9 +19186,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "historia"
-
 msgid "nature"
 msgstr ""
 
@@ -19733,6 +19765,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22173,6 +22208,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -23033,6 +23071,78 @@ msgstr "Toimistoalue"
 msgid "Industrial"
 msgstr "Teollisuusalue"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23729,6 +23839,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24481,6 +24594,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24591,15 +24707,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Saksan Ruhrin alueen ilmakuvat (10 cm erotuskyky)"
 
@@ -32573,13 +32680,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -33082,6 +33195,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33090,6 +33206,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/fil.po b/i18n/po/fil.po
index 605b113..acbdb03 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:08+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:08+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: fil\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Tulong"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Babala"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Patungkol"
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Babala"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Tulong"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/fo.po b/i18n/po/fo.po
index f89bfe0..00f60a4 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:42+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:41+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Hjálp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Ávaring"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Um"
 
@@ -179,6 +134,9 @@ msgstr "Angra"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Ávaring"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Hjálp"
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/fr.po b/i18n/po/fr.po
index b4274d6..7157987 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-29 15:39+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Fr <>\n"
@@ -13,7 +13,7 @@ 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-08-13 04:42+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:42+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: fr\n"
 "X-Poedit-Bookmarks: -1,-1,-1,2669,-1,-1,-1,-1,-1,-1\n"
@@ -61,57 +61,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "L’ouverture du lien n’est pas supportée sur cette plateforme (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Initialisation spécifique à la plateforme"
-
-msgid "Building main menu"
-msgstr "Construction du menu principal"
-
-msgid "Help"
-msgstr "Aide"
-
-msgid "Initializing internal boundaries data"
-msgstr "Initialisation des données du périmètre"
-
-msgid "Initializing OSM API"
-msgstr "Initialisation de l’API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Initialisation des données de trafic internes"
-
-msgid "Initializing validator"
-msgstr "Initialisation du validateur"
-
-msgid "Initializing presets"
-msgstr "Initialisation des préréglages"
-
-msgid "Initializing map styles"
-msgstr "Initialisation des styles"
-
-msgid "Loading imagery preferences"
-msgstr "Chargement des préférences d’imagerie"
-
-msgid "Updating user interface"
-msgstr "Mise à jour de l’interface graphique"
-
 msgid "Failed to save default preferences."
 msgstr "Impossible d''enregistrer les préférences par défaut."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "L’adresse web n’est pas valide, elle est ignorée : ’’{0}’’"
-
-msgid "Warning"
-msgstr "Avertissement"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-"L’adresse web du fichier n’est pas valide, elle est ignorée : ’’{0}’’"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Le paramètre \"downloadgps\" n’accepte ni les noms de fichiers ni les "
-"adresses web"
-
 msgid "About"
 msgstr "À propos"
 
@@ -193,6 +145,9 @@ msgstr "Annuler"
 msgid "Click to abort launching external browsers"
 msgstr "Annuler l’ouverture des navigateurs"
 
+msgid "Warning"
+msgstr "Avertissement"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Sélectionnez au moins un nœud, chemin ou relation déjà chargé."
 
@@ -487,14 +442,11 @@ msgstr ""
 "* Un chemin qui ne se croise pas sur lui-même sur plus de deux nœuds ;\n"
 "* Trois nœuds."
 
-msgid "Download from OSM..."
-msgstr "Télécharger à partir d’OSM…"
-
-msgid "Download map data from the OSM server."
-msgstr "Télécharger les données de la carte à partir du serveur OSM."
+msgid "Download data"
+msgstr "Télécharger les données"
 
-msgid "Please select a download area first."
-msgstr "Sélectionnez d’abord une zone de téléchargement."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -503,9 +455,6 @@ msgstr ""
 "<html>Cette action nécessitera {0} requêtes<br>séparées. Voulez-"
 "vous<br>continuer ?</html>"
 
-msgid "Download data"
-msgstr "Télécharger les données"
-
 msgid "Download notes in current view"
 msgstr "Télécharger les notes dans la vue actuelle"
 
@@ -572,6 +521,9 @@ msgstr "Rien à exporter. Créez d’abord quelques données."
 msgid "Export GPX file"
 msgstr "Exporter en fichier GPX"
 
+msgid "Help"
+msgstr "Aide"
+
 msgid "History"
 msgstr "Historique"
 
@@ -1142,24 +1094,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Sélectionnez des chemins avec des angles proches de 90° ou 180°."
 
-msgid "Download from Overpass API ..."
-msgstr "Téléchargement depuis  Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-"Téléchargement des données cartographique depuis un serveur Overpass API ."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Coller"
 
@@ -2530,36 +2464,6 @@ msgstr "Sélection de la relation (ajout)"
 msgid "Select relation"
 msgstr "Sélectionner la relation"
 
-msgid "<not>"
-msgstr "<négation>"
-
-msgid "<or>"
-msgstr "<ou>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<parent de gauche>"
-
-msgid "<right parent>"
-msgstr "<parent de droite>"
-
-msgid "<colon>"
-msgstr "<deux-points>"
-
-msgid "<equals>"
-msgstr "<égal>"
-
-msgid "<key>"
-msgstr "<clé>"
-
-msgid "<question mark>"
-msgstr "<point d’interrogation>"
-
-msgid "<end-of-file>"
-msgstr "<fin de fichier>"
-
 msgid "Search..."
 msgstr "Rechercher"
 
@@ -2862,97 +2766,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Recherche parmi {0} objet"
 msgstr[1] "Recherche parmi {0} objets"
 
-msgctxt "search"
-msgid "CS"
-msgstr "SC"
-
-msgctxt "search"
-msgid "CI"
-msgstr "IC"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"L’expression régulière ’’{0}’’ a une erreur de syntaxe à l’offset {1}. "
-"Détail de l’erreur :\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"L’expression régulière \"{0}\" a une erreur de syntaxe. Détail de l’erreur "
-":\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Impossible d''analyser l''horodatage ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "{1} doit être suivi par {0}"
-
-msgid "Range of primitive ids expected"
-msgstr "Intervalle d’identifiants d’objets attendu"
-
-msgid "Range of changeset ids expected"
-msgstr "Intervalle d’identifiants de groupe de modifications attendu"
-
-msgid "Range of versions expected"
-msgstr "Intervalle de versions attendu"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La clé ne peut pas être vide lorsqu’un opérateur est utilisé. Exemple "
-"d’utilisation : clé=valeur"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Type d’objet inconnu : {0}. Les valeurs autorisées sont node, way ou relation"
-
-msgid "Positive integer expected"
-msgstr "Entier positif attendu"
-
-msgid "Range of numbers expected"
-msgstr "Série de nombres attendus"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Jeton inattendu. Attendu {0}, trouvé {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Échec dans l''analyse du sélecteur MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Jeton inattendu : {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Paramètre manquant pour OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Paramètre manquant pour XOR (ou exclusif)"
-
-msgid "Missing operator for NOT"
-msgstr "Paramètre manquant pour NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Troncature automatique de la valeur de l''attribut ''{0}'' de l''objet "
@@ -2976,9 +2789,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Violation des capacités de l’API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dépendance en boucle entre les relations :"
-
 msgid "Removed obsolete tags"
 msgstr "Suppression de tag obsolète"
 
@@ -3361,65 +3171,12 @@ msgstr "Rôles de la relation de référence"
 msgid "Automatic tag correction"
 msgstr "Correction d’attribut"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Impossible de créer le dossier {0}, la sauvegarde automatique sera désactivée"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Impossible de créer le fichier {0}, un autre nom de fichier sera utilisé"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Erreur I/O durant la création du fichier, la sauvegarde automatique sera "
-"ignorée : {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Impossible de supprimer l’ancien fichier de sauvegarde {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Votre travail sera automatiquement sauvegardé"
-
-msgid "Restoring files"
-msgstr "Restauration des données"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Impossible de supprimer le fichier de sauvegarde {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Impossible de supprimer le fichier PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Impossible de supprimer le fichier de sauvegarde archivé {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valeur de latitude ''{0}'' erronée"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valeur de longitude ''{0}'' erronée"
 
-msgid "Question"
-msgstr "Question"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Enter text"
-msgstr "Saisissez du texte"
-
-msgid "Installing plugins"
-msgstr "Installation des greffons"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Le fichier de paramètres demande d’’ajouter les préférences à "
-"<b>{0}</b>,<br/> mais sa valeur par défaut est inconnue à cet instant.<br/> "
-"Veuillez activer la fonction correspondante manuellement et recommencer "
-"l’’import."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Impossible de créer le dossier de cache manquant: {0}"
 
@@ -3532,6 +3289,16 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "La préférence {0} a été supprimée car elle n’est plus utilisée."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Le fichier de paramètres demande d’’ajouter les préférences à "
+"<b>{0}</b>,<br/> mais sa valeur par défaut est inconnue à cet instant.<br/> "
+"Veuillez activer la fonction correspondante manuellement et recommencer "
+"l’’import."
+
 msgid "Metric"
 msgstr "Métrique"
 
@@ -3673,6 +3440,19 @@ msgstr ""
 msgid "Note"
 msgstr "Note"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Impossible de retrouver lʼautorisation dʼaccès OAuth depuis le gestionnaire "
+"de mot de passe."
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Le gestionnaire d’autorisations actuel est du type ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Impossible dʼenregistrer lʼautorisation dʼaccès OAuth vers le gestionnaire "
+"de mot de passe."
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Un identifiant positif est attendu. Actuellement il est {0}."
 
@@ -3689,6 +3469,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Un objet avec un identifiant égal à 0 ne peut pas être invisible."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dépendance en boucle entre les relations :"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3733,6 +3516,59 @@ msgstr "Fusion des données..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' exécuté en {1}"
 
+msgid "incomplete"
+msgstr "incomplet"
+
+msgid "House {0}"
+msgstr "Bâtiment {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Numéro de rue {0} à {1}"
+
+msgid "House number {0}"
+msgstr "Numéro de rue {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nœud"
+msgstr[1] "nœuds"
+
+msgid "highway"
+msgstr "route"
+
+msgid "railway"
+msgstr "voie ferrée"
+
+msgid "waterway"
+msgstr "cours d’eau"
+
+msgid "landuse"
+msgstr "Terrain"
+
+msgid "building"
+msgstr "bâtiment"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nœud"
+msgstr[1] "{0} nœuds"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membre"
+msgstr[1] "{0} membres"
+
+msgid "public transport"
+msgstr "transport public"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relation"
+msgstr[1] "relations"
+
+msgid "Changeset {0}"
+msgstr "Groupe de modifications {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Erreur dans le filtre <code>{0}</code>:<br>{1}"
 
@@ -3770,21 +3606,11 @@ msgstr ""
 "Impossible de fusionner des objets avec différents identifiants. Le premier "
 "identifiant est {0}, le second est {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nœud"
-msgstr[1] "nœuds"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "chemin"
 msgstr[1] "chemins"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relation"
-msgstr[1] "relations"
-
 msgid "closedway"
 msgstr "chemin fermé"
 
@@ -3823,6 +3649,127 @@ msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 "Le paramètre {0} n’est pas dans la plage 0…{1}. Actuellement il est ''{2}''."
 
+msgid "<not>"
+msgstr "<négation>"
+
+msgid "<or>"
+msgstr "<ou>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<parent de gauche>"
+
+msgid "<right parent>"
+msgstr "<parent de droite>"
+
+msgid "<colon>"
+msgstr "<deux-points>"
+
+msgid "<equals>"
+msgstr "<égal>"
+
+msgid "<key>"
+msgstr "<clé>"
+
+msgid "<question mark>"
+msgstr "<point d’interrogation>"
+
+msgid "<end-of-file>"
+msgstr "<fin de fichier>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"L’expression régulière ’’{0}’’ a une erreur de syntaxe à l’offset {1}. "
+"Détail de l’erreur :\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"L’expression régulière \"{0}\" a une erreur de syntaxe. Détail de l’erreur "
+":\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Impossible d''analyser l''horodatage ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "{1} doit être suivi par {0}"
+
+msgid "Range of primitive ids expected"
+msgstr "Intervalle d’identifiants d’objets attendu"
+
+msgid "Range of changeset ids expected"
+msgstr "Intervalle d’identifiants de groupe de modifications attendu"
+
+msgid "Range of versions expected"
+msgstr "Intervalle de versions attendu"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La clé ne peut pas être vide lorsqu’un opérateur est utilisé. Exemple "
+"d’utilisation : clé=valeur"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Type d’objet inconnu : {0}. Les valeurs autorisées sont node, way ou relation"
+
+msgid "Positive integer expected"
+msgstr "Entier positif attendu"
+
+msgid "Range of numbers expected"
+msgstr "Série de nombres attendus"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Échec dans l''analyse du sélecteur MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Jeton inattendu : {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Paramètre manquant pour OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Paramètre manquant pour XOR (ou exclusif)"
+
+msgid "Missing operator for NOT"
+msgstr "Paramètre manquant pour NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Jeton inattendu. Attendu {0}, trouvé {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "SC"
+
+msgctxt "search"
+msgid "CI"
+msgstr "IC"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Echec du chargement de la classe du rendu de carte ''{0}''. La classe n''a "
@@ -3910,6 +3857,121 @@ msgstr "Élément attendu ''{0}'', ''{1}'' obtenu"
 msgid "value expected"
 msgstr "valeur attendue"
 
+msgid "Short Description:"
+msgstr "Description rapide :"
+
+msgid "URL:"
+msgstr "Adresse web :"
+
+msgid "Author:"
+msgstr "Auteur :"
+
+msgid "Webpage:"
+msgstr "Page web :"
+
+msgid "Description:"
+msgstr "Description :"
+
+msgid "Version:"
+msgstr "Version :"
+
+msgid "Minimum JOSM Version:"
+msgstr "Version minimale de JOSM :"
+
+msgid "by {0}"
+msgstr "par {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM par défaut (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr "Modèle interne à utiliser comme base"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "le style principal de Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Modèle d’attributs interne"
+
+msgid "The default preset for JOSM"
+msgstr "Le modèle d’attributs par défaut de JOSM"
+
+msgid "Addresses"
+msgstr "Adresses"
+
+msgid "Checks for errors on addresses"
+msgstr "Recherche les erreurs sur les adresses"
+
+msgid "Tag combinations"
+msgstr "Combinaisons d’attributs"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Contrôle des attributs manquants ou des combinaisons suspicieuses"
+
+msgid "Deprecated features"
+msgstr "Caractéristiques obsolètes"
+
+msgid "Checks for deprecated features"
+msgstr "Vérifie les fonctions obsolètes"
+
+msgid "Geometry"
+msgstr "Géométrie"
+
+msgid "Checks for geometry errors"
+msgstr "Vérifier les erreus de géométrie"
+
+msgid "Highways"
+msgstr "Routes"
+
+msgid "Checks for errors on highways"
+msgstr "Vérifier les erreurs sur les chemins"
+
+msgid "Multiple values"
+msgstr "Valeurs multiples"
+
+msgid "Checks for wrong multiple values"
+msgstr "Vérification des mauvaises valeurs multiples"
+
+msgid "Numeric values"
+msgstr "Valeurs numériques"
+
+msgid "Checks for wrong numeric values"
+msgstr "Contrôle les valeurs numériques erronées"
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr "Vérifier les erreurs sur les objets religieux"
+
+msgid "Relations"
+msgstr "Relations"
+
+msgid "Checks for errors on relations"
+msgstr "Vérifier les erreurs sur les relations"
+
+msgid "Territories"
+msgstr "Territoires"
+
+msgid "Checks for territories-specific features"
+msgstr "Vérifie s’il y a des fonctionnalités propres aux territoires"
+
+msgid "Unnecessary tags"
+msgstr "Attributs inutiles"
+
+msgid "Checks for unnecessary tags"
+msgstr "Vérifier pour des attributs inutiles"
+
+msgid "Wikipedia"
+msgstr "Wikipédia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Vérifier pour des mauvais attributs wikipedia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 "Le paramètre \"+zone=...\" est requis pour la projection UTM (''+proj=utm'')."
@@ -4109,9 +4171,6 @@ msgstr "L''URL contient un fragment invalide: {0}"
 msgid "URL validator"
 msgstr "Validateur d''URL"
 
-msgid "Addresses"
-msgstr "Adresses"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Vérification des erreurs d’adresses dans les relations associatedStreet"
@@ -4303,9 +4362,6 @@ msgstr "Nœuds de chemin dupliqués"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Vérifier si les chemins ont des nœuds consécutifs identiques."
 
-msgid "Highways"
-msgstr "Routes"
-
 msgid "Performs semantic checks on highways."
 msgstr "Effectue des contrôles sémantiques sur les routes."
 
@@ -4884,9 +4940,6 @@ msgstr "type Hydrographie {0}"
 msgid "boundary type {0}"
 msgstr "type de frontière {0}"
 
-msgid "building"
-msgstr "bâtiment"
-
 msgid "area"
 msgstr "zone"
 
@@ -5001,45 +5054,17 @@ msgstr "Ne plus afficher (pour cette session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ne plus afficher"
 
-msgid "incomplete"
-msgstr "incomplet"
-
-msgid "House {0}"
-msgstr "Bâtiment {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Numéro de rue {0} à {1}"
-
-msgid "House number {0}"
-msgstr "Numéro de rue {0}"
-
-msgid "highway"
-msgstr "route"
-
-msgid "railway"
-msgstr "voie ferrée"
-
-msgid "waterway"
-msgstr "cours d’eau"
-
-msgid "landuse"
-msgstr "Terrain"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nœud"
-msgstr[1] "{0} nœuds"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membre"
-msgstr[1] "{0} membres"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "L’adresse web n’est pas valide, elle est ignorée : ’’{0}’’"
 
-msgid "public transport"
-msgstr "transport public"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr ""
+"L’adresse web du fichier n’est pas valide, elle est ignorée : ’’{0}’’"
 
-msgid "Changeset {0}"
-msgstr "Groupe de modifications {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Le paramètre \"downloadgps\" n’accepte ni les noms de fichiers ni les "
+"adresses web"
 
 msgid "Precondition violation"
 msgstr "Condition préalable non remplie"
@@ -5131,6 +5156,72 @@ msgstr ""
 "Une valeur non vide est attendue pour le paramètre ''{0}''. Actuellement "
 "elle est ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Version de Java obsolète"
+
+msgid "Update Java"
+msgstr "Mise à jour de Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Vous utilisez la {0} version de Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Cette version nʼest plus supportée par {0} depuis {1} et il nʼest pas "
+"recommandé de lʼutiliser."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM cessera bientôt de fonctionner avec cette version; nous vous "
+"recommandons vivement de mettre à jour vers Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Vous risquez de subir des bugs critiques de Java; Nous vous recommandons "
+"vivement de mettre à jour vers Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Voulez-vous mettre à jour maintenant ?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Initialisation spécifique à la plateforme"
+
+msgid "Building main menu"
+msgstr "Construction du menu principal"
+
+msgid "Updating user interface"
+msgstr "Mise à jour de l’interface graphique"
+
+msgid "Initializing internal boundaries data"
+msgstr "Initialisation des données du périmètre"
+
+msgid "Initializing OSM API"
+msgstr "Initialisation de l’API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Initialisation des données de trafic internes"
+
+msgid "Initializing validator"
+msgstr "Initialisation du validateur"
+
+msgid "Initializing presets"
+msgstr "Initialisation des préréglages"
+
+msgid "Initializing map styles"
+msgstr "Initialisation des styles"
+
+msgid "Loading imagery preferences"
+msgstr "Chargement des préférences d’imagerie"
+
 msgid "usage"
 msgstr "usage"
 
@@ -5638,6 +5729,92 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "La valeur actuelle n’est pas l’index d’une tuile valide pour le zoom donné"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Vous avez rencontré une erreur dans JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Une erreur inattendue est survenue.\n"
+"Il s''agit toujours d''une erreur de codage. Si vous utilisez la dernière "
+"version de JOSM, merci de compléter un rapport d''erreur."
+
+msgid "Debug information"
+msgstr "Information de débogage"
+
+msgid "Manually report at:"
+msgstr "Reporter manuellement à :"
+
+msgid "Is JOSM up to date?"
+msgstr "JOSM est-il à jour ?"
+
+msgid "Send bug report"
+msgstr "Envoyer le rapport de bogue"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Si JOSM et ses greffons sont à jour, veuillez créer un ticket sur notre "
+"plateforme.\n"
+"Le rapport d''erreur sera pré-rempli. Merci d''indiquer comment reproduire "
+"ce problème tout en fournissant un maximum de détails."
+
+msgid "Report Bug"
+msgstr "Rapporter l’erreur"
+
+msgid "Suppress this error for this session."
+msgstr "Supprimer cette erreur pour cette session."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Masquer les prochaines fenêtres d’erreur pour cette session."
+
+msgid "Ignore this error."
+msgstr "Ignorer cette erreur."
+
+msgid "Include the system status report."
+msgstr "Joindre un rapport d''état du système."
+
+msgid "Include information about the data you were working on."
+msgstr ""
+"Inclure des informations sur les données sur lesquelles vous étiez en train "
+"de travailler."
+
+msgid "Include all stack traces."
+msgstr "Inclure toutes les traces d’appels."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Votre version actuelle de JOSM est la {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM recherche des mises à jour..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Une erreur est survenue pendant la vérification des mises à jour."
+
+msgid "JOSM is up to date."
+msgstr "JOSM est à jour."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM n''est pas  jour. La version actuelle est {0}. Essayez de mettre à jour "
+"JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Avant de compléter un rapport d''erreur, assurez-vous d''utiliser la "
+"dernière version de JOSM disponible ici :"
+
+msgid "Update JOSM"
+msgstr "Mise à jour de JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflit en arrière-plan : aucun conflit"
 
@@ -6416,6 +6593,23 @@ msgstr ""
 "Les données copiées contiennent des objets incomplets. Ils seront retirés "
 "lors du collage. Voulez-vous coller les données sans les objets incomplets ?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Voulez-vous coller ces attributs ?"
+
+msgid "Clear buffer"
+msgstr "Vider le presse-papier"
+
+msgid "Ignore warnings"
+msgstr "Ignorer les avertissements"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Désolé, il n’est pas possible de coller des balises depuis le "
+"tampon. Il ne contient aucun objet JOSM ni aucun texte convenable. "
+"</p></html>"
+
 msgid "For selected objects only"
 msgstr "Seulement pour la sélection"
 
@@ -7012,9 +7206,6 @@ msgstr "Source"
 msgid "Title:"
 msgstr "Titre :"
 
-msgid "URL:"
-msgstr "Adresse web :"
-
 msgid "Built-in Style, internal path:"
 msgstr "Emplacement du modèle :"
 
@@ -7133,9 +7324,6 @@ msgstr ""
 "ID de liste invalide\n"
 "Impossible de continuer"
 
-msgid "Relations"
-msgstr "Relations"
-
 msgid "Open a list of all relations."
 msgstr "Afficher la liste des relations"
 
@@ -8644,26 +8832,6 @@ msgstr "La latitude doit être dans la plage [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "La longitude doit être dans la plage [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Sources et types :"
-
-msgid "OpenStreetMap data"
-msgstr "Données OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Télécharger les données OSM de la zone sélectionnée"
-
-msgid "Raw GPS data"
-msgstr "Données GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Télécharger les traces GPS de la zone sélectionnée"
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-"Sélectionner pour télécharger les notes dans la zone de téléchargement "
-"sélectionnée."
-
 msgid "Download as new layer"
 msgstr "Télécharger dans un nouveau calque"
 
@@ -8701,31 +8869,12 @@ msgstr ""
 "flèches ou le bouton droit de la souris pour faire défiler la carte, la "
 "molette ou +/- pour zoomer."
 
-msgid "No area selected yet"
-msgstr "Pas de zone sélectionnée actuellement"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"La zone de téléchargement est trop grande et sera rejetée par le serveur."
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "La zone de téléchargement est bonne et sera acceptée par le serveur."
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Annuler le téléchargement et fermer la fenêtre"
 
 msgid "Click to download the currently selected area"
 msgstr "Télécharger la zone sélectionnée"
 
-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>Ni <strong>{0}</strong> ni <strong>{1}</strong> ni "
-"<strong>{2}</strong> ne sont cochés.<br>Cochez au moins l’une des "
-"cases.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Télécharger les référents (relations parentes)"
 
@@ -8749,6 +8898,94 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr "Télécharger les référents (relations parentes et chemins)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Sources et types :"
+
+msgid "OpenStreetMap data"
+msgstr "Données OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Télécharger les données OSM de la zone sélectionnée"
+
+msgid "Raw GPS data"
+msgstr "Données GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Télécharger les traces GPS de la zone sélectionnée"
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+"Sélectionner pour télécharger les notes dans la zone de téléchargement "
+"sélectionnée."
+
+msgid "Please select a download area first."
+msgstr "Sélectionnez d’abord une zone de téléchargement."
+
+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>Ni <strong>{0}</strong> ni <strong>{1}</strong> ni "
+"<strong>{2}</strong> ne sont cochés.<br>Cochez au moins l’une des "
+"cases.</html>"
+
+msgid "No area selected yet"
+msgstr "Pas de zone sélectionnée actuellement"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"La zone de téléchargement est trop grande et sera rejetée par le serveur."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "La zone de téléchargement est bonne et sera acceptée par le serveur."
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "histoire"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8791,9 +9028,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Erreur d''analyse"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9407,6 +9641,18 @@ msgstr "S’identifier avec le nom d’utilisateur et le mot de passe"
 msgid "Cancel authentication"
 msgstr "Annuler l’identification"
 
+msgid "Question"
+msgstr "Question"
+
+msgid "Message"
+msgstr "Message"
+
+msgid "Enter text"
+msgstr "Saisissez du texte"
+
+msgid "Installing plugins"
+msgstr "Installation des greffons"
+
 msgid "Downloading file"
 msgstr "Téléchargement du fichier"
 
@@ -9995,11 +10241,6 @@ msgstr "Sélectionner les objets à envoyer"
 msgid "Cancel uploading"
 msgstr "Annuler l’envoi"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valeur inattendue pour la clé ''{0}'' dans les préférences, actuellement "
-"''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Remplir un groupe de modifications et retourner à la fenêtre d’envoi"
 
@@ -10091,6 +10332,193 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objet supprimé :"
 msgstr[1] "{0} objets supprimés :"
 
+msgid "All Formats"
+msgstr "Tous les formats"
+
+msgid "Could not export ''{0}''."
+msgstr "Impossible d’exporter ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Impossible d’importer ''{0}''."
+
+msgid "Could not import files."
+msgstr "Impossible d’importer les fichiers."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Impossible de lire le fichier ''{0}''.<br>Erreur :<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Impossible de lire les fichiers.<br>Erreur :<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Fichiers GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Calque ''{0}'' non supporté"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Note : la licence GPL est incompatible avec celle de OSM. N’envoyez pas de "
+"traces sous licence GPL."
+
+msgid "GPS track description"
+msgstr "Description de la trace GPS"
+
+msgid "Add author information"
+msgstr "Ajouter des informations sur l’auteur"
+
+msgid "Real name"
+msgstr "Nom réel"
+
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (adresse web)"
+
+msgid "Predefined"
+msgstr "Prédéfini"
+
+msgid "Copyright year"
+msgstr "Année du copyright"
+
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgid "Export options"
+msgstr "Options d’export"
+
+msgid "Export and Save"
+msgstr "Exporter et enregistrer"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Une erreur est survenue lors de l’exportation {0} :\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Choisir une licence prédéfinie"
+
+msgid "GPX Files"
+msgstr "Fichiers GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "La lecture des données du calque \"{0}\" a échoué"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Une erreur est survenue durant la lecture des données gpx pour le calque "
+"\"{0}\". Seule une partie du fichier sera disponible."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Une erreur est survenue durant la lecture du fichier gpx \"{0}\". Seule une "
+"partie du fichier sera disponible."
+
+msgid "Image Files"
+msgstr "Fichiers image"
+
+msgid "folder"
+msgstr "dossier"
+
+msgid "Looking for image files"
+msgstr "Recherche des fichiers image"
+
+msgid "No image files found."
+msgstr "Aucun fichier image n’a été trouvé."
+
+msgid "NMEA-0183 Files"
+msgstr "Fichiers NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordonnées importées : {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Phrases malformées : {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Erreurs de sommes de calcul : {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Phrases inconnues : {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Coordonnées nulles : {0}"
+
+msgid "NMEA import success:"
+msgstr "Import NMEA réussi:"
+
+msgid "NMEA import failure!"
+msgstr "L’importation des trames NMEA a échoué !"
+
+msgid "Note Files"
+msgstr "Fichiers de notes"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Fichiers compressés bzip2 du serveur OSM"
+
+msgid "OsmChange File"
+msgstr "Fichier OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Le fichier ''{0}'' n’existe pas."
+
+msgid "No data found in file {0}."
+msgstr "Aucune donnée trouvée dans le fichier {0}."
+
+msgid "Open OsmChange file"
+msgstr "Ouvrir le fichier OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Fichiers du serveur OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Une erreur est survenue lors de l’enregistrement.<br>Erreur "
+":<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Une erreur est survenue lors du chargement d’une sauvegarde.<br>Erreur "
+":<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Fichiers compressés gzip du serveur OSM"
+
+msgid "Invalid dataset"
+msgstr "Jeu de données non valide"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Aucune donnée trouvée pour le calque ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Aucune donnée trouvée dans le fichier ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Ouvrir un fichier OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Fichiers WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+"La version du fichier WMS n’est pas supportée ; version {0} trouvée, version "
+"{1} attendue"
+
 msgid "Native projections"
 msgstr "Projections natives"
 
@@ -10202,6 +10630,37 @@ msgstr "Ne plus afficher ce message"
 msgid "Hide this message and never show it again"
 msgstr "Masquer ce message et ne plus jamais l’’afficher"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Impossible de créer le dossier {0}, la sauvegarde automatique sera désactivée"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Impossible de créer le fichier {0}, un autre nom de fichier sera utilisé"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Erreur I/O durant la création du fichier, la sauvegarde automatique sera "
+"ignorée : {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Impossible de supprimer l’ancien fichier de sauvegarde {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Votre travail sera automatiquement sauvegardé"
+
+msgid "Restoring files"
+msgstr "Restauration des données"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Impossible de supprimer le fichier de sauvegarde {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Impossible de supprimer le fichier PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Impossible de supprimer le fichier de sauvegarde archivé {0}"
+
 msgid "Customize Color"
 msgstr "Personnaliser la couleur"
 
@@ -10305,6 +10764,9 @@ msgstr "Nombre total des notes :"
 msgid "Changes need uploading?"
 msgstr "Les changements nécessitent-ils un envoi des données ?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "en dehors de la zone téléchargée"
 
@@ -10380,6 +10842,9 @@ msgstr "Erreurs de validation"
 msgid "No validation errors"
 msgstr "Aucune erreur de validation"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Placer un signet WMS"
 
@@ -11011,9 +11476,6 @@ msgstr "(L’adresse web était : "
 msgid "Select the map painting styles"
 msgstr "Sélectionner les styles de rendu de carte"
 
-msgid "loading style ''{0}''..."
-msgstr "Chargement du modèle ''{0}''…"
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11027,6 +11489,9 @@ msgstr[1] ""
 "Il y a eu {0} erreurs durant le chargement du modèle. Cliquez sur "
 "\"Informations\" pour plus de détails."
 
+msgid "loading style ''{0}''..."
+msgstr "Chargement du modèle ''{0}''…"
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Échec du chargement des styles de rendu de ''{0}''. Lʼexception était : {1}"
@@ -11567,27 +12032,6 @@ msgstr "Télécharger les greffons"
 msgid "Icon paths:"
 msgstr "Répertoires :"
 
-msgid "Short Description:"
-msgstr "Description rapide :"
-
-msgid "Author:"
-msgstr "Auteur :"
-
-msgid "Webpage:"
-msgstr "Page web :"
-
-msgid "Description:"
-msgstr "Description :"
-
-msgid "Version:"
-msgstr "Version :"
-
-msgid "Minimum JOSM Version:"
-msgstr "Version minimale de JOSM :"
-
-msgid "by {0}"
-msgstr "par {0}"
-
 msgid "Name (optional):"
 msgstr "Nom (optionnel)  :"
 
@@ -12770,19 +13214,6 @@ msgstr ""
 "Attention : le format d’entrée dans la liste ''{0}'' est erroné. "
 "Actuellement il est ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM par défaut (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr "Modèle interne à utiliser comme base"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "le style principal de Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Paramètres de la carte"
 
@@ -12879,12 +13310,6 @@ msgstr ""
 "Attention : le format d’entrée dans la liste ''{0}'' est erroné. "
 "Actuellement il est ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Modèle d’attributs interne"
-
-msgid "The default preset for JOSM"
-msgstr "Le modèle d’attributs par défaut de JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Le greffon {0} est encore requis par ce greffon :"
@@ -13389,9 +13814,6 @@ msgstr ""
 "Impossible de récupérer les informations d''authentification du gestionnaire "
 "de mots de passe"
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Le gestionnaire d’autorisations actuel est du type ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Impossible dʼenregistrer les informations dʼidentification OSM vers le "
@@ -13413,16 +13835,6 @@ msgstr ""
 "Spécifie le nombre de jours qu’une note a besoin pour être fermée pour ne "
 "plus être téléchargée."
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Impossible de retrouver lʼautorisation dʼaccès OAuth depuis le gestionnaire "
-"de mot de passe."
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Impossible dʼenregistrer lʼautorisation dʼaccès OAuth vers le gestionnaire "
-"de mot de passe."
-
 msgid "Save to preferences"
 msgstr "Enregistrer l’autorisation d’accès"
 
@@ -13623,69 +14035,6 @@ msgstr ""
 "Avertissement : format illégal de lʼentrée de liste de la règle ''{0}''. "
 "Actuellement ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Recherche les erreurs sur les adresses"
-
-msgid "Tag combinations"
-msgstr "Combinaisons d’attributs"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Contrôle des attributs manquants ou des combinaisons suspicieuses"
-
-msgid "Deprecated features"
-msgstr "Caractéristiques obsolètes"
-
-msgid "Checks for deprecated features"
-msgstr "Vérifie les fonctions obsolètes"
-
-msgid "Geometry"
-msgstr "Géométrie"
-
-msgid "Checks for geometry errors"
-msgstr "Vérifier les erreus de géométrie"
-
-msgid "Checks for errors on highways"
-msgstr "Vérifier les erreurs sur les chemins"
-
-msgid "Multiple values"
-msgstr "Valeurs multiples"
-
-msgid "Checks for wrong multiple values"
-msgstr "Vérification des mauvaises valeurs multiples"
-
-msgid "Numeric values"
-msgstr "Valeurs numériques"
-
-msgid "Checks for wrong numeric values"
-msgstr "Contrôle les valeurs numériques erronées"
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr "Vérifier les erreurs sur les objets religieux"
-
-msgid "Checks for errors on relations"
-msgstr "Vérifier les erreurs sur les relations"
-
-msgid "Territories"
-msgstr "Territoires"
-
-msgid "Checks for territories-specific features"
-msgstr "Vérifie s’il y a des fonctionnalités propres aux territoires"
-
-msgid "Unnecessary tags"
-msgstr "Attributs inutiles"
-
-msgid "Checks for unnecessary tags"
-msgstr "Vérifier pour des attributs inutiles"
-
-msgid "Wikipedia"
-msgstr "Wikipédia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Vérifier pour des mauvais attributs wikipedia"
-
 msgid "Tag checker rules"
 msgstr "Règles du vérificateur d’attributs"
 
@@ -13947,6 +14296,39 @@ msgstr "Tous les fichiers (*.*)"
 msgid "Received error page:"
 msgstr "Page d''erreur reçue :"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La préférence avec la clé ''{0}'' ne contient pas ''{1}''. Impossible de "
+"restaurer la géométrie de la fenêtre depuis les préférences."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La préférence avec la clé ''{0}'' ne fournit pas de valeur pour ''{1}''. "
+"Actuellement elle est {2}. Impossible de restaurer la géométrie de la "
+"fenêtre depuis les préférences."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La récupération du champ ''{1}'' dans la préférence ''{0}'' a échoué. "
+"Exception : {2}.Impossible de restaurer la géométrie de la fenêtre depuis "
+"les préférences."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La préférence avec la clé ''{0}'' n’existe pas.Impossible de restaurer la "
+"géométrie de la fenêtre depuis les préférences."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Géométrie malformée ignorée: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitude minimale"
 
@@ -14083,9 +14465,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Le membre supprimé {0} est utilisé par la relation {1}"
 
-msgid "All Formats"
-msgstr "Tous les formats"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Téléchargement des points {0} à {1}…"
 
@@ -14223,95 +14602,6 @@ msgstr "Analyse de la réponse du serveur…"
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "L’élément XML avec le nom ''{0}'' est inattendu"
 
-msgid "Could not export ''{0}''."
-msgstr "Impossible d’exporter ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Impossible d’importer ''{0}''."
-
-msgid "Could not import files."
-msgstr "Impossible d’importer les fichiers."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Impossible de lire le fichier ''{0}''.<br>Erreur :<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Impossible de lire les fichiers.<br>Erreur :<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Fichiers GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Calque ''{0}'' non supporté"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Note : la licence GPL est incompatible avec celle de OSM. N’envoyez pas de "
-"traces sous licence GPL."
-
-msgid "GPS track description"
-msgstr "Description de la trace GPS"
-
-msgid "Add author information"
-msgstr "Ajouter des informations sur l’auteur"
-
-msgid "Real name"
-msgstr "Nom réel"
-
-msgid "E-Mail"
-msgstr "E-mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (adresse web)"
-
-msgid "Predefined"
-msgstr "Prédéfini"
-
-msgid "Copyright year"
-msgstr "Année du copyright"
-
-msgid "Keywords"
-msgstr "Mots-clés"
-
-msgid "Export options"
-msgstr "Options d’export"
-
-msgid "Export and Save"
-msgstr "Exporter et enregistrer"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Une erreur est survenue lors de l’exportation {0} :\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Choisir une licence prédéfinie"
-
-msgid "GPX Files"
-msgstr "Fichiers GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "La lecture des données du calque \"{0}\" a échoué"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Une erreur est survenue durant la lecture des données gpx pour le calque "
-"\"{0}\". Seule une partie du fichier sera disponible."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Une erreur est survenue durant la lecture du fichier gpx \"{0}\". Seule une "
-"partie du fichier sera disponible."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 "Erreur de syntaxe : la structure du document n’est pas valide pour un "
@@ -14323,18 +14613,6 @@ msgstr "(à la ligne {0}, colonne {1})"
 msgid "Unknown mode {0}."
 msgstr "Mode {0} inconnu."
 
-msgid "Image Files"
-msgstr "Fichiers image"
-
-msgid "folder"
-msgstr "dossier"
-
-msgid "Looking for image files"
-msgstr "Recherche des fichiers image"
-
-msgid "No image files found."
-msgstr "Aucun fichier image n’a été trouvé."
-
 msgid "get number of unread messages"
 msgstr "obtient le nombre des messages non lus"
 
@@ -14388,36 +14666,9 @@ msgstr "Récupération de la relation avec l’identifiant {0} depuis ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Le serveur a renvoyé une erreur 404 pour l’identifiant {0}. Abandon."
 
-msgid "NMEA-0183 Files"
-msgstr "Fichiers NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordonnées importées : {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Phrases malformées : {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Erreurs de sommes de calcul : {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Phrases inconnues : {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Coordonnées nulles : {0}"
-
-msgid "NMEA import success:"
-msgstr "Import NMEA réussi:"
-
-msgid "NMEA import failure!"
-msgstr "L’importation des trames NMEA a échoué !"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Exception NullPointer. Des attributs sont probablement manquants."
 
-msgid "Note Files"
-msgstr "Fichiers de notes"
-
 msgid "OSM API"
 msgstr "API OSM"
 
@@ -14520,9 +14771,6 @@ msgstr "(Code={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Le serveur a renvoyé une erreur avec le code {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Fichiers compressés bzip2 du serveur OSM"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Le Prolog du document OsmChange est déjà écrite. Veuillez écrire une seule "
@@ -14533,18 +14781,6 @@ msgstr ""
 "Le prologue du document OsmChange n’’a pas encore été écrit. Veuillez "
 "l’’écrire au préalable."
 
-msgid "OsmChange File"
-msgstr "Fichier OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Le fichier ''{0}'' n’existe pas."
-
-msgid "No data found in file {0}."
-msgstr "Aucune donnée trouvée dans le fichier {0}."
-
-msgid "Open OsmChange file"
-msgstr "Ouvrir le fichier OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Version non supportée : {0}"
 
@@ -14604,39 +14840,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valeur invalide pour la préférence ''{0}''. Actuellement ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Fichiers du serveur OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Une erreur est survenue lors de l’enregistrement.<br>Erreur "
-":<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Une erreur est survenue lors du chargement d’une sauvegarde.<br>Erreur "
-":<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Fichiers compressés gzip du serveur OSM"
-
 msgid "Parsing OSM history data ..."
 msgstr "Analyse des données de l’historique…"
 
-msgid "Invalid dataset"
-msgstr "Jeu de données non valide"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Aucune donnée trouvée pour le calque ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Aucune donnée trouvée dans le fichier ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Ouvrir un fichier OSM"
-
 msgid "Reading was canceled"
 msgstr "La lecture a été annulée"
 
@@ -14793,6 +14999,9 @@ msgstr "Connexion au serveur…"
 msgid "Downloading OSM notes..."
 msgstr "En cours de téléchargement des notes OSM…"
 
+msgid "Downloading data..."
+msgstr "Téléchargement des données..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14858,16 +15067,10 @@ msgstr "Un identifiant 0 inattendu a été trouvé sur un objet OSM"
 msgid "Failed to evaluate {0}"
 msgstr "L''évaluation de {0} a échoué"
 
-msgid "Downloading data..."
-msgstr "Téléchargement des données..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Fichiers WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
-"La version du fichier WMS n’est pas supportée ; version {0} trouvée, version "
-"{1} attendue"
+"Valeur inattendue pour la clé ''{0}'' dans les préférences, actuellement "
+"''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} octets ont été lus"
@@ -16040,39 +16243,6 @@ msgstr "Ouverture de lʼURL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "LʼURL ne contient pas {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Version de Java obsolète"
-
-msgid "Update Java"
-msgstr "Mise à jour de Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Vous utilisez la {0} version de Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Cette version nʼest plus supportée par {0} depuis {1} et il nʼest pas "
-"recommandé de lʼutiliser."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM cessera bientôt de fonctionner avec cette version; nous vous "
-"recommandons vivement de mettre à jour vers Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Vous risquez de subir des bugs critiques de Java; Nous vous recommandons "
-"vivement de mettre à jour vers Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Voulez-vous mettre à jour maintenant ?"
-
 msgid "reserved"
 msgstr "réservé"
 
@@ -16147,23 +16317,6 @@ msgstr "Caractères douteux dans la clé :"
 msgid "Value is too long (max {0} characters):"
 msgstr "La valeur est trop longue (max {0} caractères) :"
 
-msgid "Do you want to paste these tags?"
-msgstr "Voulez-vous coller ces attributs ?"
-
-msgid "Clear buffer"
-msgstr "Vider le presse-papier"
-
-msgid "Ignore warnings"
-msgstr "Ignorer les avertissements"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Désolé, il n’est pas possible de coller des balises depuis le "
-"tampon. Il ne contient aucun objet JOSM ni aucun texte convenable. "
-"</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Impossible de supprimer le fichier {0}"
 
@@ -16187,134 +16340,15 @@ msgid_plural "days"
 msgstr[0] "jour"
 msgstr[1] "jours"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La préférence avec la clé ''{0}'' ne contient pas ''{1}''. Impossible de "
-"restaurer la géométrie de la fenêtre depuis les préférences."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La préférence avec la clé ''{0}'' ne fournit pas de valeur pour ''{1}''. "
-"Actuellement elle est {2}. Impossible de restaurer la géométrie de la "
-"fenêtre depuis les préférences."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La récupération du champ ''{1}'' dans la préférence ''{0}'' a échoué. "
-"Exception : {2}.Impossible de restaurer la géométrie de la fenêtre depuis "
-"les préférences."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La préférence avec la clé ''{0}'' n’existe pas.Impossible de restaurer la "
-"géométrie de la fenêtre depuis les préférences."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Géométrie malformée ignorée: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Impossible de charger le schéma XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Vous avez rencontré une erreur dans JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Une erreur inattendue est survenue.\n"
-"Il s''agit toujours d''une erreur de codage. Si vous utilisez la dernière "
-"version de JOSM, merci de compléter un rapport d''erreur."
-
-msgid "Debug information"
-msgstr "Information de débogage"
-
-msgid "Manually report at:"
-msgstr "Reporter manuellement à :"
-
-msgid "Is JOSM up to date?"
-msgstr "JOSM est-il à jour ?"
-
-msgid "Send bug report"
-msgstr "Envoyer le rapport de bogue"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Si JOSM et ses greffons sont à jour, veuillez créer un ticket sur notre "
-"plateforme.\n"
-"Le rapport d''erreur sera pré-rempli. Merci d''indiquer comment reproduire "
-"ce problème tout en fournissant un maximum de détails."
-
-msgid "Report Bug"
-msgstr "Rapporter l’erreur"
-
-msgid "Suppress this error for this session."
-msgstr "Supprimer cette erreur pour cette session."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Masquer les prochaines fenêtres d’erreur pour cette session."
-
-msgid "Ignore this error."
-msgstr "Ignorer cette erreur."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "L''ouverture du rapport de bug a échoué. Veuillez rapporter manuellement "
 "l''erreur à l''adresse :"
 
-msgid "Include the system status report."
-msgstr "Joindre un rapport d''état du système."
-
-msgid "Include information about the data you were working on."
-msgstr ""
-"Inclure des informations sur les données sur lesquelles vous étiez en train "
-"de travailler."
-
-msgid "Include all stack traces."
-msgstr "Inclure toutes les traces d’appels."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Votre version actuelle de JOSM est la {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM recherche des mises à jour..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Une erreur est survenue pendant la vérification des mises à jour."
-
-msgid "JOSM is up to date."
-msgstr "JOSM est à jour."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM n''est pas  jour. La version actuelle est {0}. Essayez de mettre à jour "
-"JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Avant de compléter un rapport d''erreur, assurez-vous d''utiliser la "
-"dernière version de JOSM disponible ici :"
-
-msgid "Update JOSM"
-msgstr "Mise à jour de JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20078,9 +20112,6 @@ msgstr "Contenu du panneau"
 msgid "notice"
 msgstr "annonce"
 
-msgid "history"
-msgstr "histoire"
-
 msgid "nature"
 msgstr "nature"
 
@@ -20663,6 +20694,9 @@ msgstr "Services sociaux"
 msgid "Nursing Home"
 msgstr "Maison de soins"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Résidence collective"
 
@@ -23108,6 +23142,9 @@ msgstr "Cadeaux/Souvenir"
 msgid "Variety Store"
 msgstr "Divers"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Bookmaker"
 
@@ -23986,6 +24023,78 @@ msgstr "Zone de bureaux"
 msgid "Industrial"
 msgstr "Zone industrielle"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garages"
 
@@ -24687,6 +24796,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25459,6 +25571,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25573,15 +25688,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas : Carte topographique 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -34108,15 +34214,21 @@ msgstr "à la précédente valeur (mtime inchangé)"
 msgid "Photo Geotagging Plugin"
 msgstr "Greffon Photo Geotagging"
 
-msgid "Writing position information to image files..."
-msgstr "Écriture des informations sur la position dans les fichiers image…"
-
 msgid "Could not read mtime."
 msgstr "Imposible de lire mtime."
 
 msgid "Could not write mtime."
 msgstr "Impossible d’écrire mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Écriture des informations sur la position dans les fichiers image…"
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Le fichier ne peut pas être supprimé !"
 
@@ -34632,6 +34744,9 @@ msgstr "Correction d’erreur"
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "PT: L’itinéraire contient un trou qui peut être corrigé par un tri"
 
@@ -34640,6 +34755,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ga.po b/i18n/po/ga.po
index c1de0f3..d9af445 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:44+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:44+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Cabhair"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Rabhadh"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Maidir Leis"
 
@@ -179,6 +134,9 @@ msgstr "Cealaigh"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Rabhadh"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Cabhair"
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/gl.po b/i18n/po/gl.po
index e76b0a4..0d892a8 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 04:44+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:44+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: gl\n"
 "X-Poedit-Language: Galician\n"
@@ -58,55 +58,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "A apertura do enlace non é compatíbel coa plataforma actual (''{0}'')."
 
-msgid "Executing platform startup hook"
-msgstr "A executar arranque da plataforma"
-
-msgid "Building main menu"
-msgstr "Construindo o menú principal"
-
-msgid "Help"
-msgstr "Axuda"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Inicializando API de OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Inicializando validador"
-
-msgid "Initializing presets"
-msgstr "Inicializando predeterminados"
-
-msgid "Initializing map styles"
-msgstr "Inicializando estilos de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "Cargando a configuración de imaxes…"
-
-msgid "Updating user interface"
-msgstr "Actualizando a interface de usuario"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorando URL mal construído: «{0}»"
-
-msgid "Warning"
-msgstr "Aviso"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorando URL de ficheiro mal construído: «{0}»"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"O parámetro «downloadgps» non acepta nomes de ficheiros ou URL de ficheiro"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -188,6 +142,9 @@ msgstr "Cancelar"
 msgid "Click to abort launching external browsers"
 msgstr "Prema para interromper a execución de navegadores externos"
 
+msgid "Warning"
+msgstr "Aviso"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Escolla polo menos un nodo, vía ou relación xa enviado."
 
@@ -476,14 +433,11 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Descargar de OSM…"
-
-msgid "Download map data from the OSM server."
-msgstr "Descargar datos do mapa do servidor OSM."
+msgid "Download data"
+msgstr "Descargar data"
 
-msgid "Please select a download area first."
-msgstr "Escolla unha área de descarga primeiro."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -492,9 +446,6 @@ msgstr ""
 "<html>Esta acción require {0} peticións de<br>descarga individuais. "
 "Desexas<br>continuar?</html>"
 
-msgid "Download data"
-msgstr "Descargar data"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -563,6 +514,9 @@ msgstr "Nada que exportar. Adquire antes algún dato."
 msgid "Export GPX file"
 msgstr "Exportar ficheiro GPX"
 
+msgid "Help"
+msgstr "Axuda"
+
 msgid "History"
 msgstr "Historial"
 
@@ -1135,23 +1089,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Escolla vías con ángulos de aproximadamente 90 ou 180 grados."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Pegar"
 
@@ -2462,36 +2399,6 @@ msgstr ""
 msgid "Select relation"
 msgstr "Escoller relación"
 
-msgid "<not>"
-msgstr "<non>"
-
-msgid "<or>"
-msgstr "<ou>"
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr "<pariente esquerdo>"
-
-msgid "<right parent>"
-msgstr "<pariente dereito>"
-
-msgid "<colon>"
-msgstr "<dous puntos>"
-
-msgid "<equals>"
-msgstr "<iguais>"
-
-msgid "<key>"
-msgstr "<chave>"
-
-msgid "<question mark>"
-msgstr "<signo de interrogación>"
-
-msgid "<end-of-file>"
-msgstr "<fin-do-ficheiro>"
-
 msgid "Search..."
 msgstr "Buscar…"
 
@@ -2781,94 +2688,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"A expresión regular «{0}» tiña un erro de análise no desprazamento {1}, erro "
-"completo:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"A clave non pode estar baleira cando se usa o operador etiqueta. Exemplo de "
-"uso: clave=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipo de primitiva descoñecido: {0}. Os valores permitidos son nodo, vía ou "
-"relación"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Rango de numeros esperado"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Elemento non esperado. Esperábase {0} mais atopouse {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Mostra non esperada: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Falta un parámetro para OU"
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr "Falta un parámetro para NON"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2888,9 +2707,6 @@ msgstr "{0} nodos na vía {1} excede o máximo. Numero de nodos permitidos {2}"
 msgid "API Capabilities Violation"
 msgstr "Violación das capacidades da API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependencia ciclica entre relacións:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3247,59 +3063,12 @@ msgstr "Papeis nas relacións que fan referencia a"
 msgid "Automatic tag correction"
 msgstr "Corrección"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Non foi posíblel crear o directorio {0}, o autogardado vai a ser desactivado"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Non foi posíbel crear o ficheiro {0}. outro nome de ficheiro vai a ser usado"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Non foi posíbel eliminar a copia de seguranza antiga {0}"
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Restaurando ficheiros"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valor incorrecto de latitude «{0}»"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valor incorrecto de lonxitude «{0}»"
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3398,6 +3167,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "A opción de configuración {0} foi retirada porque xa non se usa."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
@@ -3526,11 +3301,20 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
-msgid "ID > 0 expected. Got {0}."
-msgstr "ID > 0 Esperada. Tívose {0}."
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
 
-msgid "Version > 0 expected. Got {0}."
-msgstr "Version > 0 Esperada. Tívose {0}."
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
+msgid "ID > 0 expected. Got {0}."
+msgstr "ID > 0 Esperada. Tívose {0}."
+
+msgid "Version > 0 expected. Got {0}."
+msgstr "Version > 0 Esperada. Tívose {0}."
 
 msgid ""
 "Cannot assign a changesetId > 0 to a new primitive. Value of changesetId is "
@@ -3542,6 +3326,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Unha primitiva con ID = 0 non pode ser invisíbel."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependencia ciclica entre relacións:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3585,6 +3372,59 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
+msgid "incomplete"
+msgstr "incompleto"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nodo"
+msgstr[1] "nodos"
+
+msgid "highway"
+msgstr "Carretera"
+
+msgid "railway"
+msgstr "Vía férrea"
+
+msgid "waterway"
+msgstr "Vía acuática"
+
+msgid "landuse"
+msgstr "uso da terra"
+
+msgid "building"
+msgstr "construcción"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nodo"
+msgstr[1] "{0} nodos"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membro"
+msgstr[1] "{0} membros"
+
+msgid "public transport"
+msgstr "transporte público"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relación"
+msgstr[1] "relacións"
+
+msgid "Changeset {0}"
+msgstr "Conxunto de cambios {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3623,21 +3463,11 @@ msgstr ""
 "Non é posíbel combinar primitivas con diferentes identificadores. Este "
 "identificador é «{0}», o outro é «{1}»."
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nodo"
-msgstr[1] "nodos"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vía"
 msgstr[1] "vías"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relación"
-msgstr[1] "relacións"
-
 msgid "closedway"
 msgstr "vía pechada"
 
@@ -3674,6 +3504,124 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "o parámetro {0} non está no rango 0..{1}, obtívose {2}"
 
+msgid "<not>"
+msgstr "<non>"
+
+msgid "<or>"
+msgstr "<ou>"
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr "<pariente esquerdo>"
+
+msgid "<right parent>"
+msgstr "<pariente dereito>"
+
+msgid "<colon>"
+msgstr "<dous puntos>"
+
+msgid "<equals>"
+msgstr "<iguais>"
+
+msgid "<key>"
+msgstr "<chave>"
+
+msgid "<question mark>"
+msgstr "<signo de interrogación>"
+
+msgid "<end-of-file>"
+msgstr "<fin-do-ficheiro>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"A expresión regular «{0}» tiña un erro de análise no desprazamento {1}, erro "
+"completo:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"A clave non pode estar baleira cando se usa o operador etiqueta. Exemplo de "
+"uso: clave=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipo de primitiva descoñecido: {0}. Os valores permitidos son nodo, vía ou "
+"relación"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Rango de numeros esperado"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Mostra non esperada: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Falta un parámetro para OU"
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr "Falta un parámetro para NON"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Elemento non esperado. Esperábase {0} mais atopouse {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3751,6 +3699,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Enderezos"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Autovías"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Relixión"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relacións"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3937,9 +4000,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Enderezos"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4126,9 +4186,6 @@ msgstr "Nodos de vía duplicados"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Comproba vías con nodos consecutivos idénticos."
 
-msgid "Highways"
-msgstr "Autovías"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4669,9 +4726,6 @@ msgstr "tipo de vía acuática {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "construcción"
-
 msgid "area"
 msgstr "área"
 
@@ -4786,45 +4840,15 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Non mostrar esto outra vez(recordar escolla)"
 
-msgid "incomplete"
-msgstr "incompleto"
-
-msgid "House {0}"
-msgstr ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorando URL mal construído: «{0}»"
 
-msgid "House number {0} at {1}"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorando URL de ficheiro mal construído: «{0}»"
 
-msgid "House number {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
-
-msgid "highway"
-msgstr "Carretera"
-
-msgid "railway"
-msgstr "Vía férrea"
-
-msgid "waterway"
-msgstr "Vía acuática"
-
-msgid "landuse"
-msgstr "uso da terra"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nodo"
-msgstr[1] "{0} nodos"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membro"
-msgstr[1] "{0} membros"
-
-msgid "public transport"
-msgstr "transporte público"
-
-msgid "Changeset {0}"
-msgstr "Conxunto de cambios {0}"
+"O parámetro «downloadgps» non acepta nomes de ficheiros ou URL de ficheiro"
 
 msgid "Precondition violation"
 msgstr "Violación de condición previa"
@@ -4888,32 +4912,92 @@ msgstr[1] "Obxectos eliminados"
 msgid "Show help information"
 msgstr "Amosar información de axuda"
 
-msgid "Downloading \"Message of the day\""
-msgstr "Descargando «Mensaxe do día»"
+msgid "Downloading \"Message of the day\""
+msgstr "Descargando «Mensaxe do día»"
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr ""
+
+msgid "Message of the day not available"
+msgstr "Mensaxe do día non dispoñíbel"
+
+msgid "Click to close the dialog"
+msgstr "Premer para pechar o diálogo"
+
+msgid "Imagery offset"
+msgstr ""
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr ""
+
+msgctxt "layer"
+msgid "Offset"
+msgstr ""
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr ""
+"Esperábase un valor non baleiro para o parámetro «{0}» obtívose «{1}»"
+
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
 
-msgid "Failed to read MOTD. Exception was: {0}"
+msgid "Would you like to update now ?"
 msgstr ""
 
-msgid "Message of the day not available"
-msgstr "Mensaxe do día non dispoñíbel"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Click to close the dialog"
-msgstr "Premer para pechar o diálogo"
+msgid "Executing platform startup hook"
+msgstr "A executar arranque da plataforma"
 
-msgid "Imagery offset"
-msgstr ""
+msgid "Building main menu"
+msgstr "Construindo o menú principal"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr ""
+msgid "Updating user interface"
+msgstr "Actualizando a interface de usuario"
 
-msgctxt "layer"
-msgid "Offset"
+msgid "Initializing internal boundaries data"
 msgstr ""
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgid "Initializing OSM API"
+msgstr "Inicializando API de OSM"
+
+msgid "Initializing internal traffic data"
 msgstr ""
-"Esperábase un valor non baleiro para o parámetro «{0}» obtívose «{1}»"
+
+msgid "Initializing validator"
+msgstr "Inicializando validador"
+
+msgid "Initializing presets"
+msgstr "Inicializando predeterminados"
+
+msgid "Initializing map styles"
+msgstr "Inicializando estilos de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "Cargando a configuración de imaxes…"
 
 msgid "usage"
 msgstr "uso"
@@ -5389,6 +5473,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "El valor actual non é un índice de tesela válido para o nivel de zoom dado"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Atopou un fallo en JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Informar dun fallo"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -6124,6 +6281,20 @@ msgstr ""
 "obxectos incompletos elimínanse. Quere pegar os datos sen os obxectos "
 "incompletos?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "Soamente para os obxectos escollidos"
 
@@ -6699,9 +6870,6 @@ msgstr "Fonte"
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6812,9 +6980,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relacións"
-
 msgid "Open a list of all relations."
 msgstr "Abrir unha lista con todas as relacións."
 
@@ -8258,24 +8423,6 @@ msgstr "Requírese un valor no rango [-90,90] para a latitude."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Requírese un valor no rango [-180,180] para a lonxitude."
 
-msgid "Data Sources and Types:"
-msgstr "Fontes de datos e tipos:"
-
-msgid "OpenStreetMap data"
-msgstr "Datos OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Escoller para descargar datos OSM na área de descarga escollida."
-
-msgid "Raw GPS data"
-msgstr "Datos GPS en bruto"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Descargar como unha nova capa"
 
@@ -8303,6 +8450,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr "Prema para pechar o dialogo e interromper a descarga"
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Descargar obxecto"
+
+msgid "Start downloading"
+msgstr "Comezar a descarga"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Fontes de datos e tipos:"
+
+msgid "OpenStreetMap data"
+msgstr "Datos OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Escoller para descargar datos OSM na área de descarga escollida."
+
+msgid "Raw GPS data"
+msgstr "Datos GPS en bruto"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+msgstr "Escolla unha área de descarga primeiro."
+
+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 ""
+
 msgid "No area selected yet"
 msgstr "Aínda non hai unha área escollida"
 
@@ -8315,38 +8518,49 @@ msgstr ""
 "Área de descarga correcta, probablemente o tamaño sexa aceptábel para o "
 "servidor"
 
-msgid "Click to close the dialog and to abort downloading"
-msgstr "Prema para pechar o dialogo e interromper a descarga"
+msgid "Download from Overpass API"
+msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Descargar obxecto"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Comezar a descarga"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Download all data?"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "historial"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8389,9 +8603,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8953,6 +9164,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr "Cancelar autenticación"
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9439,9 +9662,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr "Cancela a actualización"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9520,6 +9740,184 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} obxecto para eliminar:"
 msgstr[1] "{0} obxectos para eliminar:"
 
+msgid "All Formats"
+msgstr "Todos os formatos"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr "Non se puido importar «{0}»."
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: GPL non é compatíbel coa licenza OSM. Non envíe camiños con licenza "
+"GPL."
+
+msgid "GPS track description"
+msgstr "descrición do camiño gps"
+
+msgid "Add author information"
+msgstr "Engadir información do autor"
+
+msgid "Real name"
+msgstr "Nome real"
+
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefinido"
+
+msgid "Copyright year"
+msgstr "Ano do Copyright"
+
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgid "Export options"
+msgstr "Opcións de exportacińo"
+
+msgid "Export and Save"
+msgstr "Exportar e Gardar"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Erro durante a exportación {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escoller unha licencia predefinida"
+
+msgid "GPX Files"
+msgstr "Ficheiros GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr "Ficheiros de imaxes"
+
+msgid "folder"
+msgstr "Cartafol"
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "Ficheiros NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr "Erros na suma de verificación: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "Fallo de importación NMEA!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr "O ficheiro «{0}» non existe"
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "Ficheiros de Servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ocurriu un erro mentres se gardaba.<br>O Erro é:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Ocorreu un erro mentres se recuperaba unha copia de seguranza.<br>O "
+"Erro é:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Ficheiros do servidor OSM comprimidos con gzip"
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "ficheiros WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versión de ficheiro WMS non admitido; atopouse {0}, esperabase {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9627,6 +10025,35 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Non foi posíblel crear o directorio {0}, o autogardado vai a ser desactivado"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Non foi posíbel crear o ficheiro {0}. outro nome de ficheiro vai a ser usado"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Non foi posíbel eliminar a copia de seguranza antiga {0}"
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Restaurando ficheiros"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Personalizar as cores"
 
@@ -9730,6 +10157,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fora da área descargada"
 
@@ -9805,6 +10235,9 @@ msgstr "Erros de validación"
 msgid "No validation errors"
 msgstr "Sen erros de validación"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10386,9 +10819,6 @@ msgstr "(o URL era: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10398,6 +10828,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10849,27 +11282,6 @@ msgstr "Descargar complementos"
 msgid "Icon paths:"
 msgstr "Rutas de iconas:"
 
-msgid "Short Description:"
-msgstr ""
-
-msgid "Author:"
-msgstr ""
-
-msgid "Webpage:"
-msgstr ""
-
-msgid "Description:"
-msgstr ""
-
-msgid "Version:"
-msgstr ""
-
-msgid "Minimum JOSM Version:"
-msgstr ""
-
-msgid "by {0}"
-msgstr ""
-
 msgid "Name (optional):"
 msgstr ""
 
@@ -11981,31 +12393,18 @@ msgstr ""
 msgid "Add the selected available styles to the list of active styles"
 msgstr ""
 
-msgid "Reloads the list of available styles from ''{0}''"
-msgstr ""
-
-msgid "Loading style sources from ''{0}''"
-msgstr ""
-
-msgid ""
-"<html>Failed to load the list of style sources "
-"from<br>''{0}''.<br><br>Details (untranslated):<br>{1}</html>"
-msgstr ""
-
-msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
-msgstr ""
-
-msgid "JOSM default (MapCSS)"
+msgid "Reloads the list of available styles from ''{0}''"
 msgstr ""
 
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
+msgid "Loading style sources from ''{0}''"
 msgstr ""
 
-msgid "Potlatch 2"
+msgid ""
+"<html>Failed to load the list of style sources "
+"from<br>''{0}''.<br><br>Details (untranslated):<br>{1}</html>"
 msgstr ""
 
-msgid "the main Potlatch 2 style"
+msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
 msgid "Map Settings"
@@ -12087,12 +12486,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12565,9 +12958,6 @@ msgstr "Contrasinal de OSM:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12585,12 +12975,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12771,69 +13155,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Relixión"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13079,6 +13400,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -13206,9 +13550,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "O membro eliminado {0} é usado pola relación {1}"
 
-msgid "All Formats"
-msgstr "Todos os formatos"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Descargando os puntos {0} a {1}…"
 
@@ -13311,90 +13652,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr "Non se puido importar «{0}»."
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: GPL non é compatíbel coa licenza OSM. Non envíe camiños con licenza "
-"GPL."
-
-msgid "GPS track description"
-msgstr "descrición do camiño gps"
-
-msgid "Add author information"
-msgstr "Engadir información do autor"
-
-msgid "Real name"
-msgstr "Nome real"
-
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefinido"
-
-msgid "Copyright year"
-msgstr "Ano do Copyright"
-
-msgid "Keywords"
-msgstr "Palabras clave"
-
-msgid "Export options"
-msgstr "Opcións de exportacińo"
-
-msgid "Export and Save"
-msgstr "Exportar e Gardar"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Erro durante a exportación {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escoller unha licencia predefinida"
-
-msgid "GPX Files"
-msgstr "Ficheiros GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 "Erro de análise: estrutura de documento non válida para documento gpx"
@@ -13405,18 +13662,6 @@ msgstr "(na liñá {0}, columna {1})"
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr "Ficheiros de imaxes"
-
-msgid "folder"
-msgstr "Cartafol"
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13468,36 +13713,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "Ficheiros NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr "Erros na suma de verificación: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "Fallo de importación NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Excepción de punteiro nulo, posiblemente faltan algunhas etiquetas."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13576,34 +13794,19 @@ msgstr ""
 msgid "Note upload failed"
 msgstr ""
 
-msgid "Error parsing note response from server"
-msgstr ""
-
-msgid "(Code={0})"
-msgstr "(Código={0})"
-
-msgid "The server replied an error with code {0}."
-msgstr ""
-
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
-msgid "Prolog of OsmChange document already written. Please write only once."
-msgstr ""
-
-msgid "Prolog of OsmChange document not written yet. Please write first."
-msgstr ""
-
-msgid "OsmChange File"
+msgid "Error parsing note response from server"
 msgstr ""
 
-msgid "File ''{0}'' does not exist."
-msgstr "O ficheiro «{0}» non existe"
+msgid "(Code={0})"
+msgstr "(Código={0})"
 
-msgid "No data found in file {0}."
+msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "Open OsmChange file"
+msgid "Prolog of OsmChange document already written. Please write only once."
+msgstr ""
+
+msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
 msgid "Unsupported version: {0}"
@@ -13654,37 +13857,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "Ficheiros de Servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ocurriu un erro mentres se gardaba.<br>O Erro é:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Ocorreu un erro mentres se recuperaba unha copia de seguranza.<br>O "
-"Erro é:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Ficheiros do servidor OSM comprimidos con gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Procesando a historia dos datos OSM…"
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13824,6 +13999,9 @@ msgstr "Contactando co Servidor…"
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13884,15 +14062,9 @@ msgstr "Atopouse un ID 0 inesperado para primitivas de osm"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "WMS Files (*.wms)"
-msgstr "ficheiros WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versión de ficheiro WMS non admitido; atopouse {0}, esperabase {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14867,33 +15039,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14952,20 +15097,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14989,109 +15120,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Atopou un fallo en JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Informar dun fallo"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18807,9 +18842,6 @@ msgstr "Tablón de anuncios"
 msgid "notice"
 msgstr "aviso"
 
-msgid "history"
-msgstr "historial"
-
 msgid "nature"
 msgstr "natureza"
 
@@ -19389,6 +19421,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21829,6 +21864,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr "Tenda de variedades"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22689,6 +22727,78 @@ msgstr "Comercial"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23384,6 +23494,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24136,6 +24249,9 @@ msgstr "Catastro"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24246,15 +24362,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32165,13 +32272,19 @@ msgstr "ao valor anterior"
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr "Escribindo información sobre a posición aos ficheiros de imaxe…"
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32669,6 +32782,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32677,6 +32793,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/he.po b/i18n/po/he.po
index 9dde2ce..394180f 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-06-04 17:31+0000\n"
 "Last-Translator: SwiftFast <Unknown>\n"
 "Language-Team: Hebrew <he at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:46+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:45+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: he\n"
 
@@ -55,54 +55,9 @@ msgstr "רקע תנאי שימוש"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "פתיחת הקישור לא נתמכת בפלטפורמה הנוכחית (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr "מבצע רצף אתחול פלטפורמה"
-
-msgid "Building main menu"
-msgstr "מאתחל תפריט ראשי"
-
-msgid "Help"
-msgstr "עזרה"
-
-msgid "Initializing internal boundaries data"
-msgstr "מאתחל נתונים פנימיים עבור גבולות"
-
-msgid "Initializing OSM API"
-msgstr "מאתחל OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "מאתחל נתוני תעבורה פנימיים"
-
-msgid "Initializing validator"
-msgstr "מאתחל בודק התקינות (Validator)"
-
-msgid "Initializing presets"
-msgstr "מאתחל קבועים (Presets)"
-
-msgid "Initializing map styles"
-msgstr "מאתחל ערכות נושא למפה"
-
-msgid "Loading imagery preferences"
-msgstr "טוען הגדרות תמונות אוויריות"
-
-msgid "Updating user interface"
-msgstr "מעדכן ממשק משתמש"
-
 msgid "Failed to save default preferences."
 msgstr "שמירת הגדרות ברירת המחדל נכשלה"
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "מתעלם מ-URL לא תקין: \"{0}\""
-
-msgid "Warning"
-msgstr "אזהרה"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "מתעלם מ-URL לא תקין לקובץ: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "הפרמטר \"downloadgps\" אינו מקבל שמות קובץ או כתובות URL של קבצים"
-
 msgid "About"
 msgstr "אודות"
 
@@ -182,6 +137,9 @@ msgstr "ביטול"
 msgid "Click to abort launching external browsers"
 msgstr "לחץ כדי לבטל הרצת דפדפן חיצוני"
 
+msgid "Warning"
+msgstr "אזהרה"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "אנא בחר לפחות צומת, דרך, או הקשר אשר כבר הועלו למאגר"
 
@@ -459,13 +417,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "הורד מ-OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "הורד נתוני מפה משרת ה-OSM."
+msgid "Download data"
+msgstr "הורדת נתונים"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -475,9 +430,6 @@ msgstr ""
 "<html>הפעולה הזו דורשת {0} בקשות<br>הורדה נפרדות. האם אתה "
 "רוצה<br>להמשיך?</html>"
 
-msgid "Download data"
-msgstr "הורדת נתונים"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -544,6 +496,9 @@ msgstr "אין מה לייצא. השג נתונים תחילה."
 msgid "Export GPX file"
 msgstr "יצא קובץ GPX"
 
+msgid "Help"
+msgstr "עזרה"
+
 msgid "History"
 msgstr "היסטוריה"
 
@@ -1043,23 +998,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "הדבק"
 
@@ -2319,36 +2257,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "חפש..."
 
@@ -2635,89 +2543,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"לביטוי הרגולרי \"{0}\" היתה שגיאת ניתוח בהיסט {1}, שגיאה מלאה:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2735,9 +2560,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3086,57 +2908,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr "תיקון תוויות אוטומטי"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3226,6 +3003,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3354,6 +3137,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3368,6 +3160,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3404,8 +3199,61 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
+msgid "incomplete"
+msgstr "לא גמור"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "צומת"
+msgstr[1] "צמתים"
+
+msgid "highway"
+msgstr "כביש ראשי"
+
+msgid "railway"
+msgstr "מסילת רכבת"
+
+msgid "waterway"
+msgstr "נתיב מים"
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr "בניין"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "נקודה {0}"
+msgstr[1] "{0} נקודות"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "חבר {0}"
+msgstr[1] "{0} חברים"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "יחס"
+msgstr[1] "יחסים"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
 
 msgid "Error in filter"
 msgstr ""
@@ -3438,21 +3286,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "צומת"
-msgstr[1] "צמתים"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "דרך"
 msgstr[1] "דרכים"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "יחס"
-msgstr[1] "יחסים"
-
 msgid "closedway"
 msgstr ""
 
@@ -3486,6 +3324,119 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"לביטוי הרגולרי \"{0}\" היתה שגיאת ניתוח בהיסט {1}, שגיאה מלאה:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3563,6 +3514,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "כתובות"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "דת"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "יחסים"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3749,9 +3815,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "כתובות"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3936,9 +3999,6 @@ msgstr "נקודות דרך כפולות"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "מחפש דרכים עם נקודות עוקבות זהות."
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4479,9 +4539,6 @@ msgstr "סוג נתיב מים {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "בניין"
-
 msgid "area"
 msgstr "שטח"
 
@@ -4596,45 +4653,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "לא גמור"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "כביש ראשי"
-
-msgid "railway"
-msgstr "מסילת רכבת"
-
-msgid "waterway"
-msgstr "נתיב מים"
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "נקודה {0}"
-msgstr[1] "{0} נקודות"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "חבר {0}"
-msgstr[1] "{0} חברים"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "מתעלם מ-URL לא תקין: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "מתעלם מ-URL לא תקין לקובץ: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "הפרמטר \"downloadgps\" אינו מקבל שמות קובץ או כתובות URL של קבצים"
 
 msgid "Precondition violation"
 msgstr "הפרת תנאי מקדים"
@@ -4724,6 +4750,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "מבצע רצף אתחול פלטפורמה"
+
+msgid "Building main menu"
+msgstr "מאתחל תפריט ראשי"
+
+msgid "Updating user interface"
+msgstr "מעדכן ממשק משתמש"
+
+msgid "Initializing internal boundaries data"
+msgstr "מאתחל נתונים פנימיים עבור גבולות"
+
+msgid "Initializing OSM API"
+msgstr "מאתחל OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "מאתחל נתוני תעבורה פנימיים"
+
+msgid "Initializing validator"
+msgstr "מאתחל בודק התקינות (Validator)"
+
+msgid "Initializing presets"
+msgstr "מאתחל קבועים (Presets)"
+
+msgid "Initializing map styles"
+msgstr "מאתחל ערכות נושא למפה"
+
+msgid "Loading imagery preferences"
+msgstr "טוען הגדרות תמונות אוויריות"
+
 msgid "usage"
 msgstr "שימוש"
 
@@ -5185,6 +5271,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "דווח על תקלה"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5887,6 +6046,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6443,9 +6616,6 @@ msgstr "מקור"
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6556,9 +6726,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "יחסים"
-
 msgid "Open a list of all relations."
 msgstr "פתח רשימה של כל היחסים."
 
@@ -7953,24 +8120,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr ""
-
-msgid "OpenStreetMap data"
-msgstr "נתוני OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "נתוני GPS גולמיים"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "הורדה כשכבה חדשה"
 
@@ -7998,6 +8147,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "הורד עצם"
+
+msgid "Start downloading"
+msgstr "התחל להוריד"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr "נתוני OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "נתוני GPS גולמיים"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8007,38 +8212,49 @@ msgstr "הורדת איזור גדול מידי; כנראה שתדחה ע\"י ה
 msgid "Download area ok, size probably acceptable to server"
 msgstr "הורדת איזור בסדר; כנראה שתתקבל ע\"י השרת"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "הורד עצם"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "התחל להוריד"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "היסטוריה"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8081,9 +8297,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8621,6 +8834,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9098,9 +9323,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9179,6 +9401,180 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "כל הפורמטים"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr "הערה: GPL אינו תואם לרשיון של OSM. אל תעלה מסלולים שרשיונם GPL."
+
+msgid "GPS track description"
+msgstr "תיאור מסלול GPS"
+
+msgid "Add author information"
+msgstr "הוסף מידע על היוצר"
+
+msgid "Real name"
+msgstr "שם אמיתי"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "זכויות יוצרים (כתובת)"
+
+msgid "Predefined"
+msgstr "מוגדר מראש"
+
+msgid "Copyright year"
+msgstr "שנת זכויות היוצרים"
+
+msgid "Keywords"
+msgstr "מילות מפתח"
+
+msgid "Export options"
+msgstr "אפשרויות ייצוא"
+
+msgid "Export and Save"
+msgstr "ייצא ושמור"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"שגיאה בזמן ייצוא {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "בחר רשיון המוגדר מראש"
+
+msgid "GPX Files"
+msgstr "קבצי GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "קבצי NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "יבוא NMEA נכשל!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "קבצי שרת OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "גירסת קובץ WMS לא נתמכת; נמצא {0}, צפי {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9286,6 +9682,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "התאם צבעים"
 
@@ -9389,6 +9812,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "מחוץ לשטח שהורד"
 
@@ -9464,6 +9890,9 @@ msgstr "שגיאת תקינות"
 msgid "No validation errors"
 msgstr "אין שגיאות תקינות"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10041,9 +10470,6 @@ msgstr "(הכתובת היתה: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10053,6 +10479,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10472,49 +10901,28 @@ msgid ""
 "later.</html>"
 msgstr ""
 
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "יהיה עליך להפעיל את JOSM מחדש כדי שכמה מההגדרות יכנסו לתוקף."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "יהיה עליך להפעיל את JOSM מחדש כדי שכמה מההגדרות יכנסו לתוקף."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11600,19 +12008,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "הגדרות מפה"
 
@@ -11692,12 +12087,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12163,9 +12552,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12183,12 +12569,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12369,69 +12749,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "דת"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12675,6 +12992,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12787,9 +13127,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "כל הפורמטים"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "מוריד נקודות {0} עד {1}..."
 
@@ -12892,88 +13229,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr "הערה: GPL אינו תואם לרשיון של OSM. אל תעלה מסלולים שרשיונם GPL."
-
-msgid "GPS track description"
-msgstr "תיאור מסלול GPS"
-
-msgid "Add author information"
-msgstr "הוסף מידע על היוצר"
-
-msgid "Real name"
-msgstr "שם אמיתי"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "זכויות יוצרים (כתובת)"
-
-msgid "Predefined"
-msgstr "מוגדר מראש"
-
-msgid "Copyright year"
-msgstr "שנת זכויות היוצרים"
-
-msgid "Keywords"
-msgstr "מילות מפתח"
-
-msgid "Export options"
-msgstr "אפשרויות ייצוא"
-
-msgid "Export and Save"
-msgstr "ייצא ושמור"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"שגיאה בזמן ייצוא {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "בחר רשיון המוגדר מראש"
-
-msgid "GPX Files"
-msgstr "קבצי GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "שגיאת ניתוח. למסמך gpx מבנה לא תקין."
 
@@ -12983,18 +13238,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13046,36 +13289,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "קבצי NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "יבוא NMEA נכשל!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13163,27 +13379,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13229,35 +13430,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "קבצי שרת OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13389,6 +13564,9 @@ msgstr "מתחבר לשרת..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "לא יכול להתחבר לשרת osm. בדוק את חיבור האינטרנט."
@@ -13446,15 +13624,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "גירסת קובץ WMS לא נתמכת; נמצא {0}, צפי {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14388,33 +14560,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14473,20 +14618,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14510,109 +14641,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "דווח על תקלה"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18327,9 +18362,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "היסטוריה"
-
 msgid "nature"
 msgstr "טבע"
 
@@ -18909,6 +18941,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21349,6 +21384,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22209,6 +22247,78 @@ msgstr "מסחרי"
 msgid "Industrial"
 msgstr "תעשייתי"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22904,6 +23014,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23656,6 +23769,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23766,15 +23882,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31630,13 +31737,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32134,6 +32247,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32142,6 +32258,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/hi.po b/i18n/po/hi.po
index fd34db5..7b4a236 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:46+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:46+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: hi\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "सहायता"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "चेतावनी"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "परिचय"
 
@@ -180,6 +135,9 @@ msgstr "रद्द करें"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "चेतावनी"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "सहायता"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/hr.po b/i18n/po/hr.po
index 7999be1..c388199 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 04:59+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:59+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: hr\n"
 
@@ -56,55 +56,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Otvaranje linka nije podržano na trenutnoj platformi (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Pomoć"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Inicijaliziram OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Inicijaliziram validator"
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr "Učitavnje postavka slika"
-
-msgid "Updating user interface"
-msgstr "Nadograđujem korisničko sučelje"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoriram loše formirani URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Upozorenje"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoriram loše formiranu datoteku URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Parametar \"downloadgps\" ne prihvaća nazive datoteka ili URL-ove datoteka"
-
 msgid "About"
 msgstr "O programu"
 
@@ -182,6 +136,9 @@ msgstr "Poništi"
 msgid "Click to abort launching external browsers"
 msgstr "Klikni za prekid pokretanja vanjskog internet preglednika"
 
+msgid "Warning"
+msgstr "Upozorenje"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Izaberite barem jednu uploadanu toču, put ili relaciju."
 
@@ -464,13 +421,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Preuzimanje sa OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Preuzmi karte sa OSM servera."
+msgid "Download data"
+msgstr "Preuzmi podatke"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -478,9 +432,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "Preuzmi podatke"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -547,6 +498,9 @@ msgstr "Ništa za izvoz. Morate imati nešto podataka."
 msgid "Export GPX file"
 msgstr "Izvezi GPX datoteku"
 
+msgid "Help"
+msgstr "Pomoć"
+
 msgid "History"
 msgstr "Povijest"
 
@@ -1081,23 +1035,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Molim, selektirajte puteve s kutevima približno 90 ili 180 stupnjeva."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Zalijepi"
 
@@ -2396,36 +2333,6 @@ msgstr "Označi relaciju (dodaj)"
 msgid "Select relation"
 msgstr "Označi relaciju"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Traži…"
 
@@ -2712,86 +2619,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Očekivani raspon brojeva"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Neočekivani simbol. Očekivani {0}, pronađeni {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Neočekivani simbol: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Nedostaje parametar za OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Nedostaje parametar za XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Nedostaje parametar za NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2811,9 +2638,6 @@ msgstr "{0} točaka na putu {1} prelazi max. dozvoljen broj točaka {2}"
 msgid "API Capabilities Violation"
 msgstr "API Capabilities Violation"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Ciklička zavisnost među relacijama:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3176,57 +3000,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr "Automatska korekcija tagova"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Nedozvoljena vrijednost zemljopisne širine ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Nedozvoljena vrijednost zemljopisne dužine ''{0}''"
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr "Poruka"
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3316,6 +3095,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3444,6 +3229,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3458,6 +3252,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr "Ciklička zavisnost među relacijama:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3494,11 +3291,66 @@ msgstr "Spajam podatke..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
-msgstr "Greška u filteru"
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr "Kućni broj {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "točka"
+msgstr[1] "nodes"
+msgstr[2] "točaka"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr "željeznica"
+
+msgid "waterway"
+msgstr "vodeni put"
+
+msgid "landuse"
+msgstr "korištenje površine"
+
+msgid "building"
+msgstr "zgrada"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relacija"
+msgstr[1] "relacije"
+msgstr[2] "relacije"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr "Greška u filteru"
 
 msgid "<p><b>{0}</b> object hidden"
 msgid_plural "<p><b>{0}</b> objects hidden"
@@ -3528,24 +3380,12 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "točka"
-msgstr[1] "nodes"
-msgstr[2] "točaka"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "put"
 msgstr[1] "putevi"
 msgstr[2] "putevi"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relacija"
-msgstr[1] "relacije"
-msgstr[2] "relacije"
-
 msgid "closedway"
 msgstr ""
 
@@ -3579,6 +3419,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Očekivani raspon brojeva"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Neočekivani simbol: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Nedostaje parametar za OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Nedostaje parametar za XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Nedostaje parametar za NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Neočekivani simbol. Očekivani {0}, pronađeni {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3656,6 +3606,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relacije"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3840,9 +3905,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4027,9 +4089,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4568,9 +4627,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "zgrada"
-
 msgid "area"
 msgstr "površina"
 
@@ -4685,45 +4741,15 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr "Kućni broj {0}"
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr "željeznica"
-
-msgid "waterway"
-msgstr "vodeni put"
-
-msgid "landuse"
-msgstr "korištenje površine"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoriram loše formirani URL: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoriram loše formiranu datoteku URL: \"{0}\""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"Parametar \"downloadgps\" ne prihvaća nazive datoteka ili URL-ove datoteka"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4814,6 +4840,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr "Nadograđujem korisničko sučelje"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Inicijaliziram OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Inicijaliziram validator"
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr "Učitavnje postavka slika"
+
 msgid "usage"
 msgstr ""
 
@@ -5275,6 +5361,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5977,6 +6136,20 @@ msgstr ""
 "nepotpuni objekti se uklanjaju. Želite li zalijepiti podatke nepotpunih "
 "objekta?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6534,9 +6707,6 @@ msgstr "Izvor"
 msgid "Title:"
 msgstr "Naslov:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6647,9 +6817,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relacije"
-
 msgid "Open a list of all relations."
 msgstr "Otvori popis svih relacija"
 
@@ -8046,24 +8213,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr ""
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap podaci"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "Raw GPS podaci"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Preuzmi kao novi sloj"
 
@@ -8091,19 +8240,54 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
-msgid "No area selected yet"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Download area too large; will probably be rejected by server"
+msgid "Click to download the currently selected area"
 msgstr ""
 
-msgid "Download area ok, size probably acceptable to server"
+msgid "Download referrers (parent relations)"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download object"
+msgstr "Preuzmi objekt"
+
+msgid "Start downloading"
+msgstr "Započni preuzimanje"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "Odaberite, ako članovi relacije također trebaju biti preuzeti"
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap podaci"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "Raw GPS podaci"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
@@ -8112,24 +8296,56 @@ msgid ""
 "data, or GPX data, or Notes, or all.</html>"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "No area selected yet"
 msgstr ""
 
-msgid "Download object"
-msgstr "Preuzmi objekt"
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Započni preuzimanje"
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "Odaberite, ako članovi relacije također trebaju biti preuzeti"
+msgid "Edit selected snippet"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8174,9 +8390,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8726,6 +8939,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr "Poruka"
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr "Preuzimam datoteku"
 
@@ -9210,9 +9435,6 @@ msgstr "Označi objekte za uploadanje"
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9295,6 +9517,178 @@ msgstr[0] "{0} objekt za izbrisati:"
 msgstr[1] "{0} objekta za izbrisati:"
 msgstr[2] "{0} objekta za izbrisati:"
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9402,6 +9796,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9506,6 +9927,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9582,6 +10006,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10152,9 +10579,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10164,6 +10588,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10577,55 +11004,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11711,19 +12117,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11803,12 +12196,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12274,9 +12661,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12294,12 +12678,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12480,69 +12858,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12786,6 +13101,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12898,9 +13236,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -13003,86 +13338,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13092,18 +13347,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13155,36 +13398,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13272,27 +13488,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13338,35 +13539,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13498,6 +13673,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13555,13 +13733,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14497,33 +14669,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14582,20 +14727,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14619,109 +14750,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18434,9 +18469,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -19016,6 +19048,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21456,6 +21491,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22316,6 +22354,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -23011,6 +23121,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23763,6 +23876,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23873,15 +23989,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31737,13 +31844,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32241,6 +32354,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32249,6 +32365,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ht.po b/i18n/po/ht.po
index 5e995f3..c461493 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:45+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:45+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/hu.po b/i18n/po/hu.po
index 3dc163d..f7ac9c0 100644
--- a/i18n/po/hu.po
+++ b/i18n/po/hu.po
@@ -8,15 +8,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-07-25 15:13+0000\n"
-"Last-Translator: Gábor Babos <Unknown>\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-27 07:48+0000\n"
+"Last-Translator: Botos Yeti <Unknown>\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-08-13 04:47+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:46+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: hu\n"
 
@@ -57,55 +57,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "A hivatkozás megnyitása nem támogatott az aktuális („{0}”) platformon"
 
-msgid "Executing platform startup hook"
-msgstr "Platform indítása"
-
-msgid "Building main menu"
-msgstr "Főmenü felépítése"
-
-msgid "Help"
-msgstr "Súgó"
-
-msgid "Initializing internal boundaries data"
-msgstr "Belső határvonal adatok előkészítése"
-
-msgid "Initializing OSM API"
-msgstr "OSM API előkészítése"
-
-msgid "Initializing internal traffic data"
-msgstr "Belső forgalmi adatok előkészítése"
-
-msgid "Initializing validator"
-msgstr "Ellenőrző előkészítése"
-
-msgid "Initializing presets"
-msgstr "Beállítások előkészítése"
-
-msgid "Initializing map styles"
-msgstr "Térképstílusok előkészítése"
-
-msgid "Loading imagery preferences"
-msgstr "Légifelvétel-beállítások betöltése"
-
-msgid "Updating user interface"
-msgstr "Felhasználói felület frissítése"
-
 msgid "Failed to save default preferences."
 msgstr "Nem sikerült elmenteni az alapértelmezett beállításokat."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Rosszul formázott URL mellőzése: „{0}”"
-
-msgid "Warning"
-msgstr "Figyelmeztetés"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Rosszul formázott fájl-URL kihagyása: „{0}”"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"A „downloadgps” paraméter nem fogad el fájlneveket vagy fájl URL-eket"
-
 msgid "About"
 msgstr "Névjegy"
 
@@ -187,6 +141,9 @@ msgstr "Mégse"
 msgid "Click to abort launching external browsers"
 msgstr "Böngészőablakok megnyitásának megszakítása."
 
+msgid "Warning"
+msgstr "Figyelmeztetés"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Jelölj ki legalább egy már feltöltött pontot, vonalat vagy kapcsolatot."
@@ -479,14 +436,11 @@ msgstr ""
 "* egy önmagát nem keresztező szakaszt, vagy a szakasz két pontját;\n"
 "* legalább 3 pontot."
 
-msgid "Download from OSM..."
-msgstr "Letöltés OSM-ről…"
-
-msgid "Download map data from the OSM server."
-msgstr "Térképadatok letöltése az OSM kiszolgálóról."
+msgid "Download data"
+msgstr "Adatok letöltése"
 
-msgid "Please select a download area first."
-msgstr "Előbb kérlek jelölj ki letöltési területet."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -495,9 +449,6 @@ msgstr ""
 "<html>A művelet {0} egyedi letöltési kérést igényel.<br>Szeretnéd "
 "folytatni?</html>"
 
-msgid "Download data"
-msgstr "Adatok letöltése"
-
 msgid "Download notes in current view"
 msgstr "Aktuális nézethez tartozó jegyzetek letöltése"
 
@@ -566,6 +517,9 @@ msgstr "Nincs mit exportálni. Először szerezz adatokat."
 msgid "Export GPX file"
 msgstr "GPX fájl exportálása"
 
+msgid "Help"
+msgstr "Súgó"
+
 msgid "History"
 msgstr "Előzmények"
 
@@ -1050,7 +1004,7 @@ msgid "Download Location"
 msgstr "Letöltési hely"
 
 msgid "Download URL"
-msgstr "Letöltési URL"
+msgstr "URL letöltése"
 
 msgid "Start downloading data"
 msgstr "Adatok letöltésének indítása"
@@ -1134,23 +1088,6 @@ msgstr ""
 "Olyan vonalakat jelölj ki, amelyek nagyjából 90 vagy 180 fokos szöget zárnak "
 "be."
 
-msgid "Download from Overpass API ..."
-msgstr "Letöltés Overpass API-ról…"
-
-msgid "Download map data from Overpass API server."
-msgstr "Térképadatok letöltése az Overpass API kiszolgálóról."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Beillesztés"
 
@@ -2512,36 +2449,6 @@ msgstr "Kapcsolat kijelölése (hozzáadás)"
 msgid "Select relation"
 msgstr "Kapcsolat kijelölése"
 
-msgid "<not>"
-msgstr "<nem>"
-
-msgid "<or>"
-msgstr "<vagy>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<bal szülő>"
-
-msgid "<right parent>"
-msgstr "<jobb szülő>"
-
-msgid "<colon>"
-msgstr "<kettőspont>"
-
-msgid "<equals>"
-msgstr "<egyenlő>"
-
-msgid "<key>"
-msgstr "<kulcs>"
-
-msgid "<question mark>"
-msgstr "<kérdőjel>"
-
-msgid "<end-of-file>"
-msgstr "<a-fájl-vége>"
-
 msgid "Search..."
 msgstr "Keresés…"
 
@@ -2600,7 +2507,7 @@ msgid "Additional settings"
 msgstr "További beállítások"
 
 msgid "Search syntax"
-msgstr "Keresési szintaxis"
+msgstr ""
 
 msgid "Invalid search expression"
 msgstr "Érvénytelen keresőkifejezés"
@@ -2846,96 +2753,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Keresés {0} objektumban"
 msgstr[1] "Keresés {0} objektumokban"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "NÉ"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RK"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "Ö"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"A(z) \"{0}\" reguláris kifejezés szintaktikai hibát tartalmaz a(z) {1}. "
-"karakterpozícióban. A teljes hiba:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"\"{0}\" reguláris kifejezés értelmezési hibás, a teljes hiba:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "„{0}” időbélyeg elemzése sikertelen"
-
-msgid "Expecting {0} after {1}"
-msgstr "{0} várt ez után: {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Elemazonosító tartományok szükségesek"
-
-msgid "Range of changeset ids expected"
-msgstr "Módosításcsomag-azonosító tartományok szükségesek"
-
-msgid "Range of versions expected"
-msgstr "Verzió tartományok szükségesek"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"A címke-operátor használatakor a kulcs nem lehet üres. Pl.: kulcs=érték"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Ismeretlen elemtípus: {0}. A megengedett értékek: node (pont), way (vonal), "
-"relation (kapcsolat)"
-
-msgid "Positive integer expected"
-msgstr "Pozitív egész szám szükséges"
-
-msgid "Range of numbers expected"
-msgstr "Várt számtartomány"
-
-msgid "Unknown preset name: "
-msgstr "Ismeretlen címkekészlet név: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Nem várt jel. Várt {0}, kapott {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "MapCSS szelektor elemzése sikertelen"
-
-msgid "Unexpected token: {0}"
-msgstr "Nem várt utalvány: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "OR hiányzó paramétere"
-
-msgid "Missing parameter for XOR"
-msgstr "XOR hiányzó paramétere"
-
-msgid "Missing operator for NOT"
-msgstr "NOT hiányzó paramétere"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "\"{0}\" címke értéke automatikusan csonkolva {1} törölt objektumon"
 
@@ -2957,9 +2774,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Nem teljesített API-képességek"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Körkörös hivatkozás kapcsolatok között:"
-
 msgid "Removed obsolete tags"
 msgstr "Eltávolított elavult címkék"
 
@@ -3335,60 +3149,12 @@ msgstr "A kapcsolat szerepei hivatkoznak erre:"
 msgid "Automatic tag correction"
 msgstr "Automatikus címkekorrekció"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Nem hozható létre {0} könyvtár, automatikus mentés letiltva"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Nem hozható létre {0} fájl, más fájlnév lesz használva"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOHiba a fájl létrehozásakor, automatikus mentés kihagyva: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Nem törölhető a régi biztonsági mentés {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "A munkád automatikusan el lett mentve."
-
-msgid "Restoring files"
-msgstr "Fájlok visszaállítása"
-
-msgid "Unable to delete backup file {0}"
-msgstr "{0} biztonsági mentés fájl nem törölhető"
-
-msgid "Unable to delete PID file {0}"
-msgstr "{0} PID fájl nem törölhető"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "{0} archivált biztonsági mentés fájl nem törölhető"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Rossz széleségi érték: ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Rossz hosszúsági érték: ''{0}''"
 
-msgid "Question"
-msgstr "Kérdés"
-
-msgid "Message"
-msgstr "Üzenet"
-
-msgid "Enter text"
-msgstr "Írd be a szöveget"
-
-msgid "Installing plugins"
-msgstr "Bővítmények telepítése"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>A beállítófájl beállítások hozzáfűzését kéri <b>{0}</b> elemhez,<br/> "
-"de ennek az alapértelmezett értéke pillanatnyilag ismeretlen.<br/> Kérlek "
-"aktiváld a megfelelő funkciót manuálisan, majd próbáld újraimportálni."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Nem sikerült létrehozni a hiányző cache könyvtárat: {0}"
 
@@ -3498,6 +3264,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "A {0} beállítás törölve, mivel már nincs használatban."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>A beállítófájl beállítások hozzáfűzését kéri <b>{0}</b> elemhez,<br/> "
+"de ennek az alapértelmezett értéke pillanatnyilag ismeretlen.<br/> Kérlek "
+"aktiváld a megfelelő funkciót manuálisan, majd próbáld újraimportálni."
+
 msgid "Metric"
 msgstr "Metrikus"
 
@@ -3634,6 +3409,15 @@ msgstr ""
 msgid "Note"
 msgstr "Megjegyzés"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Nem sikerült lekérni az OAuth elérési tokent az igazoláskezelőtől."
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "A jelenlegi igazoláskezelő ''{0}'' típusú"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "Nem sikerült elmenteni az OAuth elérési tokent az igazoláskezelőbe."
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Várt ID > 0, kapott: {0}"
 
@@ -3650,6 +3434,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Egy elem ID = 0 azonosítóval nem lehet rejtett."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Körkörös hivatkozás kapcsolatok között:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "Nem adható {0} elem az adathalmazhoz, mert már benne van"
@@ -3692,6 +3479,59 @@ msgstr "Adatok egyesítése…"
 msgid "Test ''{0}'' completed in {1}"
 msgstr "\"{0}\" teszt befejezve {1} alatt"
 
+msgid "incomplete"
+msgstr "félkész"
+
+msgid "House {0}"
+msgstr "{0} ház"
+
+msgid "House number {0} at {1}"
+msgstr "{0} házszám itt: {1}"
+
+msgid "House number {0}"
+msgstr "{0} házszám"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "pont"
+msgstr[1] "pont"
+
+msgid "highway"
+msgstr "közút"
+
+msgid "railway"
+msgstr "vasút"
+
+msgid "waterway"
+msgstr "vízi út"
+
+msgid "landuse"
+msgstr "területfunkció"
+
+msgid "building"
+msgstr "épület"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} pont"
+msgstr[1] "{0} pont"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} tag"
+msgstr[1] "{0} tag"
+
+msgid "public transport"
+msgstr "tömegközlekedés"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "kapcsolat"
+msgstr[1] "kapcsolat"
+
+msgid "Changeset {0}"
+msgstr "{0} módosításcsomag"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Hiba a szűrőben <code>{0}</code>:<br>{1}"
 
@@ -3728,21 +3568,11 @@ msgstr ""
 "Nem egyesíthetőek különböző azonosítójú elemek. Az egyik azonosító {0}, a "
 "másik {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "pont"
-msgstr[1] "pont"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vonal"
 msgstr[1] "vonal"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "kapcsolat"
-msgstr[1] "kapcsolat"
-
 msgid "closedway"
 msgstr "zártvonal"
 
@@ -3777,6 +3607,126 @@ msgstr "''{0}'' azonosítójú elem nem összehasonlítható ''{1}'' elemmel."
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "{0} paraméter nincs a  0..{1} tartományban. Kapott érték ''{2}''."
 
+msgid "<not>"
+msgstr "<nem>"
+
+msgid "<or>"
+msgstr "<vagy>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<bal szülő>"
+
+msgid "<right parent>"
+msgstr "<jobb szülő>"
+
+msgid "<colon>"
+msgstr "<kettőspont>"
+
+msgid "<equals>"
+msgstr "<egyenlő>"
+
+msgid "<key>"
+msgstr "<kulcs>"
+
+msgid "<question mark>"
+msgstr "<kérdőjel>"
+
+msgid "<end-of-file>"
+msgstr "<a-fájl-vége>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"A(z) \"{0}\" reguláris kifejezés szintaktikai hibát tartalmaz a(z) {1}. "
+"karakterpozícióban. A teljes hiba:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"\"{0}\" reguláris kifejezés értelmezési hibás, a teljes hiba:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "„{0}” időbélyeg elemzése sikertelen"
+
+msgid "Expecting {0} after {1}"
+msgstr "{0} várt ez után: {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Elemazonosító tartományok szükségesek"
+
+msgid "Range of changeset ids expected"
+msgstr "Módosításcsomag-azonosító tartományok szükségesek"
+
+msgid "Range of versions expected"
+msgstr "Verzió tartományok szükségesek"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"A címke-operátor használatakor a kulcs nem lehet üres. Pl.: kulcs=érték"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Ismeretlen elemtípus: {0}. A megengedett értékek: node (pont), way (vonal), "
+"relation (kapcsolat)"
+
+msgid "Positive integer expected"
+msgstr "Pozitív egész szám szükséges"
+
+msgid "Range of numbers expected"
+msgstr "Várt számtartomány"
+
+msgid "Unknown preset name: "
+msgstr "Ismeretlen címkekészlet név: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "MapCSS szelektor elemzése sikertelen"
+
+msgid "Unexpected token: {0}"
+msgstr "Nem várt utalvány: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "OR hiányzó paramétere"
+
+msgid "Missing parameter for XOR"
+msgstr "XOR hiányzó paramétere"
+
+msgid "Missing operator for NOT"
+msgstr "NOT hiányzó paramétere"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Nem várt jel. Várt {0}, kapott {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "NÉ"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RK"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "Ö"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Nem sikerült betölteni a \"{0}\" térképrajzoló modult. Az osztály nem "
@@ -3862,6 +3812,122 @@ msgstr "Várt elem: „{0}”, kapott érték: „{1}”"
 msgid "value expected"
 msgstr "várt érték"
 
+msgid "Short Description:"
+msgstr "Rövid leírás:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Szerző:"
+
+msgid "Webpage:"
+msgstr "Weblap:"
+
+msgid "Description:"
+msgstr "Leírás:"
+
+msgid "Version:"
+msgstr "Verzió:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimum JOSM verzió:"
+
+msgid "by {0}"
+msgstr "{0} által"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM alapértelmezett (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"A futásidőben változtatható fedvény stílusok alapjául szolgáló belső stílus"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "a Potlatch 2 szerkesztőprogram fő stílusa"
+
+msgid "Internal Preset"
+msgstr "Belső készlet"
+
+msgid "The default preset for JOSM"
+msgstr "A JOSM alapértelmezett készlete"
+
+msgid "Addresses"
+msgstr "Lakcím"
+
+msgid "Checks for errors on addresses"
+msgstr "A lakcímek hibaellenőrzése"
+
+msgid "Tag combinations"
+msgstr "Cimke kombinációk"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Hiányzó vagy gyanús cimke kombinációk vizsgálata"
+
+msgid "Deprecated features"
+msgstr "Elavult elemek"
+
+msgid "Checks for deprecated features"
+msgstr "Elavult elemek keresése"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Geometriai hibák ellenőrzése"
+
+msgid "Highways"
+msgstr "Közutak"
+
+msgid "Checks for errors on highways"
+msgstr "Hibák keresése az országutakon"
+
+msgid "Multiple values"
+msgstr "Többszörös értékek"
+
+msgid "Checks for wrong multiple values"
+msgstr "Hibás többszörös értékek keresése"
+
+msgid "Numeric values"
+msgstr "Szám értékek"
+
+msgid "Checks for wrong numeric values"
+msgstr "Hibás szám értékek keresése"
+
+msgid "Religion"
+msgstr "Vallás"
+
+msgid "Checks for errors on religious objects"
+msgstr "Vallási objektumok hibáinak keresése"
+
+msgid "Relations"
+msgstr "Kapcsolatok"
+
+msgid "Checks for errors on relations"
+msgstr "Kapcsolatok hibáinak keresése"
+
+msgid "Territories"
+msgstr "Területek"
+
+msgid "Checks for territories-specific features"
+msgstr "Területspecifikus elemek ellenőrzései"
+
+msgid "Unnecessary tags"
+msgstr "Fölösleges tagok"
+
+msgid "Checks for unnecessary tags"
+msgstr "Fölösleges tagok keresése"
+
+msgid "Wikipedia"
+msgstr "Wikipédia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Hibás Wikipédia tagok keresése"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 "Az UTM vetülethez (''+proj=utm'') szükséges a ''+zone=…'' paraméter megadása."
@@ -4052,9 +4118,6 @@ msgstr "Az URL érvénytelen horgonyt tartalmaz: {0}"
 msgid "URL validator"
 msgstr "URL-ellenőrző"
 
-msgid "Addresses"
-msgstr "Lakcím"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Hibák keresése a lakcímekben és associatedStreet kapcsolatokban."
 
@@ -4247,9 +4310,6 @@ msgstr "Kettőzött útpontok"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Egymást követő azonos pontokat tartalmazó vonalak keresése"
 
-msgid "Highways"
-msgstr "Közutak"
-
 msgid "Performs semantic checks on highways."
 msgstr "Szemantikai ellernőrzés végrehajtása az autópályákon."
 
@@ -4819,9 +4879,6 @@ msgstr "folyóvíz típus {0}"
 msgid "boundary type {0}"
 msgstr "határvonal típus {0}"
 
-msgid "building"
-msgstr "épület"
-
 msgid "area"
 msgstr "terület"
 
@@ -4939,45 +4996,15 @@ msgstr "Ne mutasd újra (a munkamenet során)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ne mutasd újra (emlékezz a választásomra)"
 
-msgid "incomplete"
-msgstr "félkész"
-
-msgid "House {0}"
-msgstr "{0} ház"
-
-msgid "House number {0} at {1}"
-msgstr "{0} házszám itt: {1}"
-
-msgid "House number {0}"
-msgstr "{0} házszám"
-
-msgid "highway"
-msgstr "közút"
-
-msgid "railway"
-msgstr "vasút"
-
-msgid "waterway"
-msgstr "vízi út"
-
-msgid "landuse"
-msgstr "területfunkció"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} pont"
-msgstr[1] "{0} pont"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} tag"
-msgstr[1] "{0} tag"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Rosszul formázott URL mellőzése: „{0}”"
 
-msgid "public transport"
-msgstr "tömegközlekedés"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Rosszul formázott fájl-URL kihagyása: „{0}”"
 
-msgid "Changeset {0}"
-msgstr "{0} módosításcsomag"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"A „downloadgps” paraméter nem fogad el fájlneveket vagy fájl URL-eket"
 
 msgid "Precondition violation"
 msgstr "Nem teljesített előfeltétel"
@@ -5067,6 +5094,70 @@ msgstr "Eltolás"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "''{0}'' paraméter nem üres értéket vár, de ezt kapta: ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Elavult JAVA verzió"
+
+msgid "Update Java"
+msgstr "Java frissítés"
+
+msgid "You are running version {0} of Java."
+msgstr "A(z) {0} verziójú Java-t futtatod."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Ezt a verziót {1} óta nem tartja karban a(z) {0} és már nem támogatott a "
+"további használata."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"Hamarosan a JOSM már nem fog működni ezzel a verzióval; erősen javasolt "
+"frissítened a {0} Java verzióra."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Szeretnél most frissíteni?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Platform indítása"
+
+msgid "Building main menu"
+msgstr "Főmenü felépítése"
+
+msgid "Updating user interface"
+msgstr "Felhasználói felület frissítése"
+
+msgid "Initializing internal boundaries data"
+msgstr "Belső határvonal adatok előkészítése"
+
+msgid "Initializing OSM API"
+msgstr "OSM API előkészítése"
+
+msgid "Initializing internal traffic data"
+msgstr "Belső forgalmi adatok előkészítése"
+
+msgid "Initializing validator"
+msgstr "Ellenőrző előkészítése"
+
+msgid "Initializing presets"
+msgstr "Beállítások előkészítése"
+
+msgid "Initializing map styles"
+msgstr "Térképstílusok előkészítése"
+
+msgid "Loading imagery preferences"
+msgstr "Légifelvétel-beállítások betöltése"
+
 msgid "usage"
 msgstr "használat"
 
@@ -5566,6 +5657,89 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "A jelenlegi érték nem érvényes szelet index a megadott nagyítási szinten"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Egy hibával találkoztál a JOSM-ban"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Váratlan hiba történt.\n"
+"Ez mindig kódolási hiba. Ha a JOSM legújabb verzióját használod, arra "
+"kérünk, fontold meg a hiba bejelentését."
+
+msgid "Debug information"
+msgstr "Hibakeresési információk"
+
+msgid "Manually report at:"
+msgstr "Jelentés kézzel itt:"
+
+msgid "Is JOSM up to date?"
+msgstr "A JOSM naprakész?"
+
+msgid "Send bug report"
+msgstr "Hibajelentés küldése"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Ha a JOSM és bővítményei legfrissebb verzióját használod, kérlek küldj egy "
+"hibajelentést a hibajegy kezelőnkbe.\n"
+"A főbb adatok a hibáról itt már ki lesznek töltve neked. Kérlek, írd le a "
+"hiba reprodukálásának menetét és adj meg minél több részletet."
+
+msgid "Report Bug"
+msgstr "Hiba jelentése"
+
+msgid "Suppress this error for this session."
+msgstr "Ezen hiba elrejtése a munkamenet alatt."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "További párbeszédablakok elhagyása ebben a munkamenetben."
+
+msgid "Ignore this error."
+msgstr "Hiba mellőzése."
+
+msgid "Include the system status report."
+msgstr "Rendszer állapotjelentés csatolása."
+
+msgid "Include information about the data you were working on."
+msgstr "Információk csatolása az adatokról, amin dolgozol."
+
+msgid "Include all stack traces."
+msgstr "Teljes stack trace csatolása."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "A jelenlegi JOSM verziód: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "A JOSM frissítéseket keres…"
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Hiba történt a JOSM verziód frissességének ellenőrzése közben."
+
+msgid "JOSM is up to date."
+msgstr "A JOSM naprakész."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"A JOSM elavult, a jelenlegi verzió a {0}. Javasoljuk a JOSM frissítését."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Mielőtt hibajelentést küldenél be, győződj meg arról, hogy a legfrissebb "
+"JOSM verziót használod:"
+
+msgid "Update JOSM"
+msgstr "JOSM frissítés"
+
 msgid "Conflict background: no conflict"
 msgstr "Ütközés háttérszín: nincs ütközés"
 
@@ -6326,6 +6500,22 @@ msgstr ""
 "objektumok el lesznek távolítva. Szeretnéd beilleszteni az adatokat a "
 "félkész objektumok nélkül?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Be akarod illeszteni ezeket a cimkéket?"
+
+msgid "Clear buffer"
+msgstr "Puffer kiürítése"
+
+msgid "Ignore warnings"
+msgstr "Figyelmeztetések figyelmen kívül hagyása"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Sajnálom, de nem lehetséges címkéket beilleszteni a vágólapról, "
+"mert az nem tartalmaz JOSM objektumot vagy  alkalmas szöveget. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Csak a kijelölt objektumok"
 
@@ -6925,9 +7115,6 @@ msgstr "Forrás"
 msgid "Title:"
 msgstr "Cím:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Beépített stílus elérési útja:"
 
@@ -7045,9 +7232,6 @@ msgstr ""
 "Érvénytelen ID lista  lett megadva\n"
 "Nem lehet folytatni."
 
-msgid "Relations"
-msgstr "Kapcsolatok"
-
 msgid "Open a list of all relations."
 msgstr "Megnyitja az összes kapcsolat listáját"
 
@@ -8557,26 +8741,6 @@ msgstr "A szélesség értéke [-90,90] tartományban kell legyen."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "A hosszúság értéke  [-180,180] tartományban kell legyen."
 
-msgid "Data Sources and Types:"
-msgstr "Adatforrások és típusok:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap adatok"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Jelöld be a kijelölt letöltési területen található OSM-adatok letöltéséhez."
-
-msgid "Raw GPS data"
-msgstr "Nyers GPS-adatok"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Jelöld ki a GPS-nyomvonalak letöltéséhez a kijelölt letöltési területről."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Jelöld be a kijelölt területen lévő jegyzetek letöltéséhez."
-
 msgid "Download as new layer"
 msgstr "Letöltés új rétegre"
 
@@ -8612,30 +8776,12 @@ msgstr ""
 "Kijelöléshez nyomd meg és húzd a bal egérgombot, a nyilak és a jobb egérgom "
 "mozgatja a térképet, az egérgörgő nagyítja."
 
-msgid "No area selected yet"
-msgstr "Nincs kijelölt terület"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Letöltési terület túl nagy, valószínűleg a szerver elutasítja"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Letöltési terület mérete rendben, a szerver számára elfogadható"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Kattints a dialógusablak bezárásához és a letöltés megszakításához"
 
 msgid "Click to download the currently selected area"
 msgstr "Kattints a kijelölt terület letöltéséhez"
 
-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>Se az <strong>{0}</strong>, sem <strong>{1}</strong> sem "
-"<strong>{2}</strong> nincsenek kijelölve.<br>Kérlek válaszd ki, hogy OSM "
-"adatokat, GPX adatokat, Jegyzeteket, vagy mindet le szeretnéd tölteni.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Hivatkozók (szülő kapcsolatok) letöltése"
 
@@ -8658,6 +8804,93 @@ msgstr "Jelöld be, ha a kapcsolat tagjait is le kellene tölteni"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Hivatkozók (szülő kapcsolatok és utak) letöltése"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Adatforrások és típusok:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap adatok"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Jelöld be a kijelölt letöltési területen található OSM-adatok letöltéséhez."
+
+msgid "Raw GPS data"
+msgstr "Nyers GPS-adatok"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Jelöld ki a GPS-nyomvonalak letöltéséhez a kijelölt letöltési területről."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Jelöld be a kijelölt területen lévő jegyzetek letöltéséhez."
+
+msgid "Please select a download area first."
+msgstr "Előbb kérlek jelölj ki letöltési területet."
+
+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>Se az <strong>{0}</strong>, sem <strong>{1}</strong> sem "
+"<strong>{2}</strong> nincsenek kijelölve.<br>Kérlek válaszd ki, hogy OSM "
+"adatokat, GPX adatokat, Jegyzeteket, vagy mindet le szeretnéd tölteni.</html>"
+
+msgid "No area selected yet"
+msgstr "Nincs kijelölt terület"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Letöltési terület túl nagy, valószínűleg a szerver elutasítja"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Letöltési terület mérete rendben, a szerver számára elfogadható"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "történelem"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8700,9 +8933,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Adatfeldolgozási hiba"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9314,6 +9544,18 @@ msgstr "Azonosítása a megadott felhasználónévvel és jelszóval"
 msgid "Cancel authentication"
 msgstr "Hitelesítés megszakítása"
 
+msgid "Question"
+msgstr "Kérdés"
+
+msgid "Message"
+msgstr "Üzenet"
+
+msgid "Enter text"
+msgstr "Írd be a szöveget"
+
+msgid "Installing plugins"
+msgstr "Bővítmények telepítése"
+
 msgid "Downloading file"
 msgstr "Fájl letöltése"
 
@@ -9882,9 +10124,6 @@ msgstr "Feltöltendő objektumok kijelölése"
 msgid "Cancel uploading"
 msgstr "Feltöltés megszakítása"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Nemvárt érték \"{0}\" kulcshoz a beállításokban: \"{1}\""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Egy módosításcsomag megtöltése és visszatérés a feltöltési ablakhoz"
 
@@ -9970,6 +10209,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} törlendő objektum:"
 msgstr[1] "{0} törlendő objektum:"
 
+msgid "All Formats"
+msgstr "Minden formátum"
+
+msgid "Could not export ''{0}''."
+msgstr "A(z) ''{0}'' kiöntése nem lehetséges."
+
+msgid "Could not import ''{0}''."
+msgstr "A(z) ''{0}'' beolvasása nem lehetséges."
+
+msgid "Could not import files."
+msgstr "A fájlok beolvasása nem lehetséges."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>A(z) ''{0}'' fájl olvasása nem lehetséges.<br>A hiba:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>A fájlok olvasása nem lehetséges.<br>A hiba:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON fájlok"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "A ''{0}'' réteg nem támogatott"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Megjegyzés: A GPL nem kompatibilis az OSM-licenccel. Ne tölts fel GPL "
+"szerint licencelt nyomvonalakat."
+
+msgid "GPS track description"
+msgstr "GPS-nyomvonal leírása"
+
+msgid "Add author information"
+msgstr "Szerzői információk hozzáadása"
+
+msgid "Real name"
+msgstr "Valódi név"
+
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Előre definiált"
+
+msgid "Copyright year"
+msgstr "Copyright éve"
+
+msgid "Keywords"
+msgstr "Kulcsszavak"
+
+msgid "Export options"
+msgstr "Exportálási opciók"
+
+msgid "Export and Save"
+msgstr "Exportálás és mentés"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Hiba a(z) {0} exportálása során:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Válassz egy előre definiált licencet"
+
+msgid "GPX Files"
+msgstr "GPX fájlok"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "A ''{0}'' réteg feldolgozása sikertelen"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"GPX-adathiba történt a ''{0}'' réteg feldolgozása során. Csak a fájl egy "
+"része lesz elérhető."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Hiba történt a GPX-fájl feldolgozása során ''{0}''. Csak a fájl egy része "
+"lesz elérhető."
+
+msgid "Image Files"
+msgstr "Képfájlok"
+
+msgid "folder"
+msgstr "könyvtár"
+
+msgid "Looking for image files"
+msgstr "Képfájlok keresése"
+
+msgid "No image files found."
+msgstr "Nem találhatóak képfájlok."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 fájlok"
+
+msgid "Coordinates imported: {0}"
+msgstr "Behozott koordináták: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Hibás formátumú mondatok: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Ellenörző összeg hibák: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Ismeretlen mondatok: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nullpont koordináták: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA beolvasás sikeres:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA beolvasás sikertelen!"
+
+msgid "Note Files"
+msgstr "Jegyzet fájlok"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Az OSM szerver fájlok bzip2 tömörítettek"
+
+msgid "OsmChange File"
+msgstr "OsmChange fájl"
+
+msgid "File ''{0}'' does not exist."
+msgstr "A(z) ''{0}'' fájl nem létezik."
+
+msgid "No data found in file {0}."
+msgstr "A(z) {0} fájlban nincs adat."
+
+msgid "Open OsmChange file"
+msgstr "OsmChange fájl megnyitása"
+
+msgid "OSM Server Files"
+msgstr "OSM szerver fájlok"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Egy hiba történt mentés közben.<br>A hiba:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Egy hiba történt a biztonsági másolat visszatöltése közben.<br>A "
+"hiba:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Az OSM szerver fájlok zip tömörítettek"
+
+msgid "Invalid dataset"
+msgstr "Érvénytelen adathalmaz"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nem található adat a(z) ''{0}'' réteghez."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nem található adat a(z) ''{0}'' fájlban."
+
+msgid "Open OSM file"
+msgstr "OSM fájl megnyitása"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS fájlok (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nemtámogatott WMS fájl verzió; talált {0}, várt {1}"
+
 msgid "Native projections"
 msgstr "Natív vetítések"
 
@@ -10081,6 +10503,33 @@ msgstr "Ne jelenjen meg többé ez az üzenet"
 msgid "Hide this message and never show it again"
 msgstr "Üzenet végleges elrejtése"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Nem hozható létre {0} könyvtár, automatikus mentés letiltva"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Nem hozható létre {0} fájl, más fájlnév lesz használva"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOHiba a fájl létrehozásakor, automatikus mentés kihagyva: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Nem törölhető a régi biztonsági mentés {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "A munkád automatikusan el lett mentve."
+
+msgid "Restoring files"
+msgstr "Fájlok visszaállítása"
+
+msgid "Unable to delete backup file {0}"
+msgstr "{0} biztonsági mentés fájl nem törölhető"
+
+msgid "Unable to delete PID file {0}"
+msgstr "{0} PID fájl nem törölhető"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "{0} archivált biztonsági mentés fájl nem törölhető"
+
 msgid "Customize Color"
 msgstr "Szín testreszabása"
 
@@ -10184,6 +10633,9 @@ msgstr "Összes jegyzet:"
 msgid "Changes need uploading?"
 msgstr "A változtatásokat fel kell tölteni?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "letöltött területen kívül"
 
@@ -10259,6 +10711,9 @@ msgstr "Ellenőrzési hibák"
 msgid "No validation errors"
 msgstr "Nincs ellenőrzési hiba"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "WMS könyvjelző beállítása"
 
@@ -10882,9 +11337,6 @@ msgstr "(Az URL: "
 msgid "Select the map painting styles"
 msgstr "Térképrajz stílusának kijelölése"
 
-msgid "loading style ''{0}''..."
-msgstr "stílus betöltése: ''{0}''…"
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10898,6 +11350,9 @@ msgstr[1] ""
 "{0} hiba történt a stílus betöltésekor. További információkért kattints az "
 "\"Infó\" elemre a jobb egérgomb menüből."
 
+msgid "loading style ''{0}''..."
+msgstr "stílus betöltése: ''{0}''…"
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Nem sikerült betölteni a térképstílusokat innen: \"{0}\". Kivétel: {1}"
@@ -11431,27 +11886,6 @@ msgstr "Bővítmények letöltése"
 msgid "Icon paths:"
 msgstr "Ikon elérési útvonalai:"
 
-msgid "Short Description:"
-msgstr "Rövid leírás:"
-
-msgid "Author:"
-msgstr "Szerző:"
-
-msgid "Webpage:"
-msgstr "Weblap:"
-
-msgid "Description:"
-msgstr "Leírás:"
-
-msgid "Version:"
-msgstr "Verzió:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimum JOSM verzió:"
-
-msgid "by {0}"
-msgstr "{0} által"
-
 msgid "Name (optional):"
 msgstr "Név (opcionális)"
 
@@ -12624,20 +13058,6 @@ msgstr ""
 "Figyelmeztetés: érvénytelen formátumú bejegyzés a stíluslistában \"{0}\". "
 "Kapott érték \"{1}\""
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM alapértelmezett (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"A futásidőben változtatható fedvény stílusok alapjául szolgáló belső stílus"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "a Potlatch 2 szerkesztőprogram fő stílusa"
-
 msgid "Map Settings"
 msgstr "Térképbeállítások"
 
@@ -12735,12 +13155,6 @@ msgstr ""
 "Figyelmeztetés: érvénytelen formátumú bejegyzés a címkekészlet listában "
 "\"{0}\". Kapott érték: \"{1}\""
 
-msgid "Internal Preset"
-msgstr "Belső készlet"
-
-msgid "The default preset for JOSM"
-msgstr "A JOSM alapértelmezett készlete"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "{0} bővítményre szüksége van ennek a bővítménynek:"
@@ -13243,9 +13657,6 @@ msgstr "OSM jelszó:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Nem sikerült lekérni az OSM igazolásokat az igazoláskezelőtől."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "A jelenlegi igazoláskezelő ''{0}'' típusú"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Nem sikerült elmenteni az OSM igazolásokat az igazoláskezelőbe."
 
@@ -13265,12 +13676,6 @@ msgstr ""
 "Meghatározza, hogy a jegyzet hány napja kell lezárva legyen ahhoz, hogy "
 "többé ne töltődjön le"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Nem sikerült lekérni az OAuth elérési tokent az igazoláskezelőtől."
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "Nem sikerült elmenteni az OAuth elérési tokent az igazoláskezelőbe."
-
 msgid "Save to preferences"
 msgstr "Mentés a beállításokhoz"
 
@@ -13474,69 +13879,6 @@ msgstr ""
 "Figyelem: helytelen formátumú elem a(z) ''{0}'' szabálylistában. Kapott "
 "''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "A lakcímek hibaellenőrzése"
-
-msgid "Tag combinations"
-msgstr "Cimke kombinációk"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Hiányzó vagy gyanús cimke kombinációk vizsgálata"
-
-msgid "Deprecated features"
-msgstr "Elavult elemek"
-
-msgid "Checks for deprecated features"
-msgstr "Elavult elemek keresése"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Geometriai hibák ellenőrzése"
-
-msgid "Checks for errors on highways"
-msgstr "Hibák keresése az országutakon"
-
-msgid "Multiple values"
-msgstr "Többszörös értékek"
-
-msgid "Checks for wrong multiple values"
-msgstr "Hibás többszörös értékek keresése"
-
-msgid "Numeric values"
-msgstr "Szám értékek"
-
-msgid "Checks for wrong numeric values"
-msgstr "Hibás szám értékek keresése"
-
-msgid "Religion"
-msgstr "Vallás"
-
-msgid "Checks for errors on religious objects"
-msgstr "Vallási objektumok hibáinak keresése"
-
-msgid "Checks for errors on relations"
-msgstr "Kapcsolatok hibáinak keresése"
-
-msgid "Territories"
-msgstr "Területek"
-
-msgid "Checks for territories-specific features"
-msgstr "Területspecifikus elemek ellenőrzései"
-
-msgid "Unnecessary tags"
-msgstr "Fölösleges tagok"
-
-msgid "Checks for unnecessary tags"
-msgstr "Fölösleges tagok keresése"
-
-msgid "Wikipedia"
-msgstr "Wikipédia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Hibás Wikipédia tagok keresése"
-
 msgid "Tag checker rules"
 msgstr "Cimke vizsgálati szabályok"
 
@@ -13797,6 +14139,38 @@ msgstr "Minden fájl (*.*)"
 msgid "Received error page:"
 msgstr "Visszakapott hibaoldal:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"A(z) ''{0}'' kulcsú beállítás nem foglal magában ''{1}''-t. Nem lehet "
+"visszaállítani a geometriát a beállításokból."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"A(z) ''{0}'' kulcsú beállítás nem ad int értéket a(z) ''{1}''-nek. Kapott: "
+"{2}. Nem lehet visszaállítani a geometriát a beállításokból."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"A(z) ''{1}'' mező értelmezése meghiúsult a(z) ''{0}'' kulcs beállításokban. "
+"Ez volt a kivétel: {2}. Nem lehet visszaállítani a geometriát a "
+"beállításokból."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"A(z) ''{0}'' kulcsú beállítás nem létezik. Nem lehet visszaállítani a "
+"geometriát a beállításokból."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Hibás formátumú geometria figyelmen kívül hagyása: {0}"
+
 msgid "Min. latitude"
 msgstr "Legkisebb szélesség"
 
@@ -13936,9 +14310,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "A(z) {0} törölt kapcsolat-tag a(z) {1} kapcsolat által használt."
 
-msgid "All Formats"
-msgstr "Minden formátum"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "{0} és {1} közötti pontok letöltése folyamatban…"
 
@@ -14069,95 +14440,6 @@ msgstr "Szerver válasz feldolgozás…"
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Váratlan XML elem ''{0}'' névvel"
 
-msgid "Could not export ''{0}''."
-msgstr "A(z) ''{0}'' kiöntése nem lehetséges."
-
-msgid "Could not import ''{0}''."
-msgstr "A(z) ''{0}'' beolvasása nem lehetséges."
-
-msgid "Could not import files."
-msgstr "A fájlok beolvasása nem lehetséges."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>A(z) ''{0}'' fájl olvasása nem lehetséges.<br>A hiba:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>A fájlok olvasása nem lehetséges.<br>A hiba:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON fájlok"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "A ''{0}'' réteg nem támogatott"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Megjegyzés: A GPL nem kompatibilis az OSM-licenccel. Ne tölts fel GPL "
-"szerint licencelt nyomvonalakat."
-
-msgid "GPS track description"
-msgstr "GPS-nyomvonal leírása"
-
-msgid "Add author information"
-msgstr "Szerzői információk hozzáadása"
-
-msgid "Real name"
-msgstr "Valódi név"
-
-msgid "E-Mail"
-msgstr "E-mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Előre definiált"
-
-msgid "Copyright year"
-msgstr "Copyright éve"
-
-msgid "Keywords"
-msgstr "Kulcsszavak"
-
-msgid "Export options"
-msgstr "Exportálási opciók"
-
-msgid "Export and Save"
-msgstr "Exportálás és mentés"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Hiba a(z) {0} exportálása során:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Válassz egy előre definiált licencet"
-
-msgid "GPX Files"
-msgstr "GPX fájlok"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "A ''{0}'' réteg feldolgozása sikertelen"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"GPX-adathiba történt a ''{0}'' réteg feldolgozása során. Csak a fájl egy "
-"része lesz elérhető."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Hiba történt a GPX-fájl feldolgozása során ''{0}''. Csak a fájl egy része "
-"lesz elérhető."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Feldolgozási hiba: érvénytelen dokumentum struktúra a GPX fájlban."
 
@@ -14167,18 +14449,6 @@ msgstr "(sorban {0}, oszlopban {1})"
 msgid "Unknown mode {0}."
 msgstr "Ismeretlen mód {0}."
 
-msgid "Image Files"
-msgstr "Képfájlok"
-
-msgid "folder"
-msgstr "könyvtár"
-
-msgid "Looking for image files"
-msgstr "Képfájlok keresése"
-
-msgid "No image files found."
-msgstr "Nem találhatóak képfájlok."
-
 msgid "get number of unread messages"
 msgstr "olvasatlan üzenetek számának lekérdezése"
 
@@ -14233,36 +14503,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "A szerver a(z) {0} azonosítóra 404-es hibakóddal válaszolt. Kihagyás."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 fájlok"
-
-msgid "Coordinates imported: {0}"
-msgstr "Behozott koordináták: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Hibás formátumú mondatok: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Ellenörző összeg hibák: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Ismeretlen mondatok: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nullpont koordináták: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA beolvasás sikeres:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA beolvasás sikertelen!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer kivétel, esetleg egy hiányzó címke miatt."
 
-msgid "Note Files"
-msgstr "Jegyzet fájlok"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14358,9 +14601,6 @@ msgstr "(Kód={0})"
 msgid "The server replied an error with code {0}."
 msgstr "A szerver a(z) {0} hibakóddal válaszolt."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Az OSM szerver fájlok bzip2 tömörítettek"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Az OsmChange dokumentum előszava már meg van írva. Kérlek, csak egyet írj."
@@ -14369,18 +14609,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Az OsmChange dokumentum előszava még nincs megírva. Kérlek, előbb írj egyet."
 
-msgid "OsmChange File"
-msgstr "OsmChange fájl"
-
-msgid "File ''{0}'' does not exist."
-msgstr "A(z) ''{0}'' fájl nem létezik."
-
-msgid "No data found in file {0}."
-msgstr "A(z) {0} fájlban nincs adat."
-
-msgid "Open OsmChange file"
-msgstr "OsmChange fájl megnyitása"
-
 msgid "Unsupported version: {0}"
 msgstr "Nem támogatott verzió: {0}"
 
@@ -14432,37 +14660,9 @@ msgstr "A HTTP kapcsolat aláírása meghiúsult az OAuth hitelesítési fejléc
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Nem várt értékű beállítás ''{0}''. Kapott: ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM szerver fájlok"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Egy hiba történt mentés közben.<br>A hiba:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Egy hiba történt a biztonsági másolat visszatöltése közben.<br>A "
-"hiba:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Az OSM szerver fájlok zip tömörítettek"
-
 msgid "Parsing OSM history data ..."
 msgstr "OSM előzményadatok feldolgozása…"
 
-msgid "Invalid dataset"
-msgstr "Érvénytelen adathalmaz"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nem található adat a(z) ''{0}'' réteghez."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nem található adat a(z) ''{0}'' fájlban."
-
-msgid "Open OSM file"
-msgstr "OSM fájl megnyitása"
-
 msgid "Reading was canceled"
 msgstr "A beolvasás meg lett szakítva"
 
@@ -14602,6 +14802,9 @@ msgstr "Kapcsolódás a szerverhez…"
 msgid "Downloading OSM notes..."
 msgstr "OSM jegyzetek letöltése…"
 
+msgid "Downloading data..."
+msgstr "Adatok letöltése…"
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14664,14 +14867,8 @@ msgstr "Nem várt (0) azonosító egy OSM elemhez"
 msgid "Failed to evaluate {0}"
 msgstr "Nem sikerült kiértékelni: {0}"
 
-msgid "Downloading data..."
-msgstr "Adatok letöltése…"
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS fájlok (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nemtámogatott WMS fájl verzió; talált {0}, várt {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Nemvárt érték \"{0}\" kulcshoz a beállításokban: \"{1}\""
 
 msgid "{0} bytes have been read"
 msgstr "{0} bájt volt olvasva"
@@ -15820,37 +16017,6 @@ msgstr "URL megnyitása: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "Az URL nem tartalmaz {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Elavult JAVA verzió"
-
-msgid "Update Java"
-msgstr "Java frissítés"
-
-msgid "You are running version {0} of Java."
-msgstr "A(z) {0} verziójú Java-t futtatod."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Ezt a verziót {1} óta nem tartja karban a(z) {0} és már nem támogatott a "
-"további használata."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"Hamarosan a JOSM már nem fog működni ezzel a verzióval; erősen javasolt "
-"frissítened a {0} Java verzióra."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Szeretnél most frissíteni?"
-
 msgid "reserved"
 msgstr "fenntartott"
 
@@ -15929,22 +16095,6 @@ msgstr "Gyanús karakterek a kulcsban:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Az érték túl hosszú (max {0} karakter):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Be akarod illeszteni ezeket a cimkéket?"
-
-msgid "Clear buffer"
-msgstr "Puffer kiürítése"
-
-msgid "Ignore warnings"
-msgstr "Figyelmeztetések figyelmen kívül hagyása"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Sajnálom, de nem lehetséges címkéket beilleszteni a vágólapról, "
-"mert az nem tartalmaz JOSM objektumot vagy  alkalmas szöveget. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "{0} fájl nem törölhető"
 
@@ -15968,130 +16118,15 @@ msgid_plural "days"
 msgstr[0] "nap"
 msgstr[1] "napok"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"A(z) ''{0}'' kulcsú beállítás nem foglal magában ''{1}''-t. Nem lehet "
-"visszaállítani a geometriát a beállításokból."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"A(z) ''{0}'' kulcsú beállítás nem ad int értéket a(z) ''{1}''-nek. Kapott: "
-"{2}. Nem lehet visszaállítani a geometriát a beállításokból."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"A(z) ''{1}'' mező értelmezése meghiúsult a(z) ''{0}'' kulcs beállításokban. "
-"Ez volt a kivétel: {2}. Nem lehet visszaállítani a geometriát a "
-"beállításokból."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"A(z) ''{0}'' kulcsú beállítás nem létezik. Nem lehet visszaállítani a "
-"geometriát a beállításokból."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Hibás formátumú geometria figyelmen kívül hagyása: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Nem sikerült betölteni az XML sémát."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Egy hibával találkoztál a JOSM-ban"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Váratlan hiba történt.\n"
-"Ez mindig kódolási hiba. Ha a JOSM legújabb verzióját használod, arra "
-"kérünk, fontold meg a hiba bejelentését."
-
-msgid "Debug information"
-msgstr "Hibakeresési információk"
-
-msgid "Manually report at:"
-msgstr "Jelentés kézzel itt:"
-
-msgid "Is JOSM up to date?"
-msgstr "A JOSM naprakész?"
-
-msgid "Send bug report"
-msgstr "Hibajelentés küldése"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Ha a JOSM és bővítményei legfrissebb verzióját használod, kérlek küldj egy "
-"hibajelentést a hibajegy kezelőnkbe.\n"
-"A főbb adatok a hibáról itt már ki lesznek töltve neked. Kérlek, írd le a "
-"hiba reprodukálásának menetét és adj meg minél több részletet."
-
-msgid "Report Bug"
-msgstr "Hiba jelentése"
-
-msgid "Suppress this error for this session."
-msgstr "Ezen hiba elrejtése a munkamenet alatt."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "További párbeszédablakok elhagyása ebben a munkamenetben."
-
-msgid "Ignore this error."
-msgstr "Hiba mellőzése."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Nem sikerült hibajelentést nyitni. Kérlek, jelentsd a hibát manuálisan az "
 "alábbi weboldalon:"
 
-msgid "Include the system status report."
-msgstr "Rendszer állapotjelentés csatolása."
-
-msgid "Include information about the data you were working on."
-msgstr "Információk csatolása az adatokról, amin dolgozol."
-
-msgid "Include all stack traces."
-msgstr "Teljes stack trace csatolása."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "A jelenlegi JOSM verziód: {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "A JOSM frissítéseket keres…"
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Hiba történt a JOSM verziód frissességének ellenőrzése közben."
-
-msgid "JOSM is up to date."
-msgstr "A JOSM naprakész."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"A JOSM elavult, a jelenlegi verzió a {0}. Javasoljuk a JOSM frissítését."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Mielőtt hibajelentést küldenél be, győződj meg arról, hogy a legfrissebb "
-"JOSM verziót használod:"
-
-msgid "Update JOSM"
-msgstr "JOSM frissítés"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -17009,7 +17044,7 @@ msgstr "kutyaverseny"
 
 msgctxt "sport"
 msgid "equestrian"
-msgstr "díjugratás"
+msgstr "lovaglás"
 
 msgctxt "sport"
 msgid "field_hockey"
@@ -19496,22 +19531,22 @@ msgid "Bus"
 msgstr "Busz"
 
 msgid "Bus stop (legacy)"
-msgstr "Buszmegálló (örökség)"
+msgstr "Buszmegálló (maradvány)"
 
 msgid "Tram stop (legacy)"
-msgstr "Villamosmegálló (örökség)"
+msgstr "Villamosmegálló (maradvány)"
 
 msgid "Train"
 msgstr "Vonat"
 
 msgid "Railway halt (legacy)"
-msgstr "Vasúti megálló (örökség)"
+msgstr "Vasúti megálló (maradvány)"
 
 msgid "Trolleybus"
 msgstr "Trolibusz"
 
 msgid "Share taxi"
-msgstr "Megosztott taxi"
+msgstr "Iránytaxi"
 
 msgid "Ferry"
 msgstr "Komp"
@@ -19539,10 +19574,10 @@ msgid "Reference Number"
 msgstr "Azonosítószám"
 
 msgid "Public Transport (Legacy)"
-msgstr "Tömegközlekedés (örökség)"
+msgstr "Tömegközlekedés (maradvány)"
 
 msgid "Public transport route (Legacy)"
-msgstr "Tömegközlekedési útvonal (örökség)"
+msgstr "Tömegközlekedési útvonal (maradvány)"
 
 msgid "forward segment"
 msgstr "előre szakasz"
@@ -19847,9 +19882,6 @@ msgstr "Tábla tartalma"
 msgid "notice"
 msgstr "hirdetések"
 
-msgid "history"
-msgstr "történelem"
-
 msgid "nature"
 msgstr "természet"
 
@@ -20431,6 +20463,9 @@ msgstr "Szociális létesítmény"
 msgid "Nursing Home"
 msgstr "Ápolóotthon"
 
+msgid "Nursing Home (Legacy)"
+msgstr "Ápolóotthon (maradvány)"
+
 msgid "Group Home"
 msgstr "Lakóotthon"
 
@@ -20743,7 +20778,7 @@ msgid "Sports Centre"
 msgstr "Sportközpont"
 
 msgid "Fitness Centre"
-msgstr "Fitneszközpont"
+msgstr "Edzőterem"
 
 msgid "Pitch"
 msgstr "Sportpálya"
@@ -20832,7 +20867,7 @@ msgstr "sportközpont"
 
 msgctxt "running"
 msgid "fitness_centre"
-msgstr "fitneszközpont"
+msgstr "edzőterem"
 
 msgctxt "running"
 msgid "stadium"
@@ -20892,7 +20927,7 @@ msgid "Gymnastics"
 msgstr "Torna"
 
 msgid "fitness_centre"
-msgstr "fitneszközpont"
+msgstr "edzőterem"
 
 msgid "Ice Skating"
 msgstr "Jégkorcsolya"
@@ -22877,6 +22912,9 @@ msgstr "Ajándékbolt"
 msgid "Variety Store"
 msgstr "100 forintos bolt"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Fogadóiroda"
 
@@ -23756,6 +23794,78 @@ msgstr "Üzleti terület"
 msgid "Industrial"
 msgstr "Iparterület"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garázsok"
 
@@ -24456,6 +24566,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25213,6 +25326,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "RAIG - Auvergne 2013 - 25 cm"
 
@@ -25325,15 +25441,6 @@ msgstr "Pegau régi térképe - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -27787,7 +27894,7 @@ msgstr ""
 "távolságra és szögben lehessen pontokat elhelyezni."
 
 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."
+msgstr ""
 
 msgid ""
 "Gives assistance for the mapping process of indoor OSM building data. "
@@ -33589,15 +33696,21 @@ msgstr "a korábbi értékre (módosítatlan mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Fotó Geotagging bővítmény"
 
-msgid "Writing position information to image files..."
-msgstr "Pozíció írása a képekbe…"
-
 msgid "Could not read mtime."
 msgstr "mtime nem olvasható."
 
 msgid "Could not write mtime."
 msgstr "mtime nem írható."
 
+msgid "Writing position information to image files..."
+msgstr "Pozíció írása a képekbe…"
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "A fájlt nem lehetett törölni!"
 
@@ -34109,6 +34222,9 @@ msgstr "Hiba javítása"
 msgid "PT: dummy test warning"
 msgstr "PT: színlelt tesz figyelmeztetés"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "PT: az útvonal szakadást tartalmaz, ami javítható sorbarendezéssel"
 
@@ -34117,6 +34233,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/hy.po b/i18n/po/hy.po
index e733626..37dc6fb 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:35+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:34+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: hy\n"
 
@@ -58,54 +58,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Օգնություն"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr[1] ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Օգնություն"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ia.po b/i18n/po/ia.po
index 59823ba..d9c40b9 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:48+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:47+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ia\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Adjuta"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Attention"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Circa"
 
@@ -180,6 +135,9 @@ msgstr "Cancellar"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Attention"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Adjuta"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/id.po b/i18n/po/id.po
index 48d937e..30d88d6 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:48+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:48+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: id\n"
 "X-Language: id_ID\n"
@@ -56,54 +56,9 @@ msgstr "Latar Belakang syarat penggunaan"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Membuka tautan tidak dapat dilakukan pada platform ini (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Melaksanakan platform baru yang terkait"
-
-msgid "Building main menu"
-msgstr "Membangun menu utama"
-
-msgid "Help"
-msgstr "Bantuan"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Menginisialisasi OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Menginisialisasi alat validasi"
-
-msgid "Initializing presets"
-msgstr "Menginisialisasi preset"
-
-msgid "Initializing map styles"
-msgstr "Menginisialisasi tampilan peta"
-
-msgid "Loading imagery preferences"
-msgstr "Memuat Preferensi citra"
-
-msgid "Updating user interface"
-msgstr "Memperbaharui tampilan pengguna"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Mengabaikan dokumen URL yang cacat: \"{0}\""
-
-msgid "Warning"
-msgstr "Peringatan"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Mengabaikan file URL yang rusak: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" tidak menerima nama file atau URL file"
-
 msgid "About"
 msgstr "Tentang"
 
@@ -180,6 +135,9 @@ msgstr "Batalkan"
 msgid "Click to abort launching external browsers"
 msgstr "Klik untuk membatalkan membuka dengan browser eksternal"
 
+msgid "Warning"
+msgstr "Peringatan"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Silahkan pilih paling tidak satu node/titik, way/garis, atau relasi yang "
@@ -467,14 +425,11 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Download dari OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Download data peta dari server OSM."
+msgid "Download data"
+msgstr "Download data"
 
-msgid "Please select a download area first."
-msgstr "Silahkan pilih area untuk didownload terlebih dahulu"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -483,9 +438,6 @@ msgstr ""
 "<html>Tindakan ini akan membutuhkan {0} permintaan<br>download "
 "individu.Apakah Anda ingin<br>melanjutkan?</html>"
 
-msgid "Download data"
-msgstr "Download data"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -554,6 +506,9 @@ msgstr "Tidak ada yang dapat diekspor. Ambil beberapa data terlebih dahulu."
 msgid "Export GPX file"
 msgstr "Ekspor file GPX"
 
+msgid "Help"
+msgstr "Bantuan"
+
 msgid "History"
 msgstr "Sejarah"
 
@@ -1107,23 +1062,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Silahkan pilih jalur dengan sudut maksimum 90 atau 180 derajat."
 
-msgid "Download from Overpass API ..."
-msgstr "Download dari Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Download data peta dari server API Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Tempel"
 
@@ -2459,36 +2397,6 @@ msgstr "Pilih relasi (tambah)"
 msgid "Select relation"
 msgstr "Memilih relasi"
 
-msgid "<not>"
-msgstr "<bukan>"
-
-msgid "<or>"
-msgstr "<atau>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<parent kiri>"
-
-msgid "<right parent>"
-msgstr "<parent kanan>"
-
-msgid "<colon>"
-msgstr "<titik dua>"
-
-msgid "<equals>"
-msgstr "<sama dengan>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<tanda tanya>"
-
-msgid "<end-of-file>"
-msgstr "<akhir-dari-berkas>"
-
 msgid "Search..."
 msgstr "Cari..."
 
@@ -2787,96 +2695,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Terdapat kesalahan Regex \"{0}\" pada offset {1}, kesalahan penuh:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Terdapat kesalahan pada \"{0}\" , kerusakan penuh:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "Jangkauan id primitif diperkirakan"
-
-msgid "Range of changeset ids expected"
-msgstr "Jangkauan id changeset diperkirakan"
-
-msgid "Range of versions expected"
-msgstr "Jangkauan versi diharapkan"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Key tidak dapat dikosongkan ketika label operator sedang digunakan. Contoh "
-"penggunaan: key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipe primitif tidak dapat diketahui: {0}. Nilai yang diperbolehkan adalah "
-"node, jalur, atau hubungan"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "Jarak pada angka diharapkan"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Token tidak diharapkan. Diharapkan {0}, ditemukan {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Token tidak diharapkan: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Kehilangan paramater untuk OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Parameter hilang untuk XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Kehilangan operator untuk NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2898,9 +2716,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Pelanggaran kapabilitas API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Ketergantungan siklik diantara hubungan"
-
 msgid "Removed obsolete tags"
 msgstr "Menghapus tag yang sudah tidak digunakan"
 
@@ -3257,62 +3072,12 @@ msgstr "Peran dalam relasi yang merujuk kepada"
 msgid "Automatic tag correction"
 msgstr "Koreksi tag otomatis"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Tidak dapat membuat direktori {0}, penyimpanan otomatis akan dinonaktifkan"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Tidak dapat membuat berkas {0}, nama berkas lainnya akan digunakan"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"KesalahanIO ketika membuat file, tidak akan menyimpan secara otomatis: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Tidak dapat menghapus berkas cadangan yang lama {0}"
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Mengembalikan file"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Nilai lintang tidak sah ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Nilai bujur tidak sah \"{0}\""
 
-msgid "Question"
-msgstr "Pertanyaan"
-
-msgid "Message"
-msgstr "Pesan"
-
-msgid "Enter text"
-msgstr "Masukkan teks"
-
-msgid "Installing plugins"
-msgstr "Meng-install plugin"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Pengaturan file meminta untuk menambahkan pilihan ke <b>{0}</b>,<br/> "
-"tapi nilainya tidak diketahui saat ini.<br/> Tolong aktifkan fungsi "
-"menyesuaikan secara manual dan coba untuk mengimpor.."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3410,6 +3175,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Pengaturan pilihan {0} telah dihapus sejak tidak dipakai lagi"
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Pengaturan file meminta untuk menambahkan pilihan ke <b>{0}</b>,<br/> "
+"tapi nilainya tidak diketahui saat ini.<br/> Tolong aktifkan fungsi "
+"menyesuaikan secara manual dan coba untuk mengimpor.."
+
 msgid "Metric"
 msgstr "Metrik"
 
@@ -3539,6 +3313,15 @@ msgstr ""
 msgid "Note"
 msgstr "Catatan"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Manajer credential saat adalah tipe ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 diharapkan. Mendapat {0}."
 
@@ -3555,6 +3338,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Primirif dengan ID = 0 tidak dapat tidak terlihat"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Ketergantungan siklik diantara hubungan"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3595,6 +3381,55 @@ msgstr "Menggabungkan data..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
+msgid "incomplete"
+msgstr "tidak lengkap"
+
+msgid "House {0}"
+msgstr "Rumah {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Nomor rumah {0} pada {1}"
+
+msgid "House number {0}"
+msgstr "Nomor rumah {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "Node"
+
+msgid "highway"
+msgstr "Jalan Tol"
+
+msgid "railway"
+msgstr "Rel Kereta"
+
+msgid "waterway"
+msgstr "Jalur Air"
+
+msgid "landuse"
+msgstr "penggunaan lahan"
+
+msgid "building"
+msgstr "bangunan"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} anggota"
+
+msgid "public transport"
+msgstr "transportasi umum"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "Relasi"
+
+msgid "Changeset {0}"
+msgstr "Changeset {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3633,18 +3468,10 @@ msgstr ""
 "Tidak dapat menggabungkan primitif dengan ids. id ini adalah {0},  dan yang "
 "lain adalah {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "Node"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "Way/garis"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "Relasi"
-
 msgid "closedway"
 msgstr "jalan buntu"
 
@@ -3683,6 +3510,126 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parameter {0} tidak didalam jangkauan 0..{1}. Memiliki ''{2}''."
 
+msgid "<not>"
+msgstr "<bukan>"
+
+msgid "<or>"
+msgstr "<atau>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<parent kiri>"
+
+msgid "<right parent>"
+msgstr "<parent kanan>"
+
+msgid "<colon>"
+msgstr "<titik dua>"
+
+msgid "<equals>"
+msgstr "<sama dengan>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<tanda tanya>"
+
+msgid "<end-of-file>"
+msgstr "<akhir-dari-berkas>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Terdapat kesalahan Regex \"{0}\" pada offset {1}, kesalahan penuh:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Terdapat kesalahan pada \"{0}\" , kerusakan penuh:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "Jangkauan id primitif diperkirakan"
+
+msgid "Range of changeset ids expected"
+msgstr "Jangkauan id changeset diperkirakan"
+
+msgid "Range of versions expected"
+msgstr "Jangkauan versi diharapkan"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Key tidak dapat dikosongkan ketika label operator sedang digunakan. Contoh "
+"penggunaan: key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipe primitif tidak dapat diketahui: {0}. Nilai yang diperbolehkan adalah "
+"node, jalur, atau hubungan"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "Jarak pada angka diharapkan"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Token tidak diharapkan: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Kehilangan paramater untuk OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Parameter hilang untuk XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Kehilangan operator untuk NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Token tidak diharapkan. Diharapkan {0}, ditemukan {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3766,6 +3713,123 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Deskripsi singkat:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Pembuat:"
+
+msgid "Webpage:"
+msgstr "Halaman web:"
+
+msgid "Description:"
+msgstr "Deskripsi:"
+
+msgid "Version:"
+msgstr "Versi:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versi minimum JOSM:"
+
+msgid "by {0}"
+msgstr "oleh {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"model internal untuk digunakan sebagai dasar untuk model tampalan runtime "
+"yang dapat diganti"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "model utama Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Internal Preset"
+
+msgid "The default preset for JOSM"
+msgstr "Pengaturan awal preset untuk JOSM"
+
+msgid "Addresses"
+msgstr "Alamat"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Jalan Raya"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Agama"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relasi"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3958,9 +4022,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Alamat"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Cek kesalahan dalam alamat dan relasi jalan terkait."
 
@@ -4152,9 +4213,6 @@ msgstr "Duplikasi node/titik dari way/garis"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "memeriksa garis/way dengan urutan titik/node yang sama"
 
-msgid "Highways"
-msgstr "Jalan Raya"
-
 msgid "Performs semantic checks on highways."
 msgstr "Melakukan pemeriksaan semantik di jalan raya."
 
@@ -4708,9 +4766,6 @@ msgstr "tipe jalur air {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "bangunan"
-
 msgid "area"
 msgstr "area"
 
@@ -4828,43 +4883,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Jangan tunjukkan lagi (ingat pilihan)"
 
-msgid "incomplete"
-msgstr "tidak lengkap"
-
-msgid "House {0}"
-msgstr "Rumah {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Nomor rumah {0} pada {1}"
-
-msgid "House number {0}"
-msgstr "Nomor rumah {0}"
-
-msgid "highway"
-msgstr "Jalan Tol"
-
-msgid "railway"
-msgstr "Rel Kereta"
-
-msgid "waterway"
-msgstr "Jalur Air"
-
-msgid "landuse"
-msgstr "penggunaan lahan"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} anggota"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Mengabaikan dokumen URL yang cacat: \"{0}\""
 
-msgid "public transport"
-msgstr "transportasi umum"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Mengabaikan file URL yang rusak: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" tidak menerima nama file atau URL file"
 
 msgid "Precondition violation"
 msgstr "Pelanggaran persyaratan"
@@ -4955,6 +4981,66 @@ msgstr ""
 "Mengharapkan mendapatkan value yang tidak kosong untuk parameter \"{0}\", "
 "mendapatkan \"{1}\""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Melaksanakan platform baru yang terkait"
+
+msgid "Building main menu"
+msgstr "Membangun menu utama"
+
+msgid "Updating user interface"
+msgstr "Memperbaharui tampilan pengguna"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Menginisialisasi OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Menginisialisasi alat validasi"
+
+msgid "Initializing presets"
+msgstr "Menginisialisasi preset"
+
+msgid "Initializing map styles"
+msgstr "Menginisialisasi tampilan peta"
+
+msgid "Loading imagery preferences"
+msgstr "Memuat Preferensi citra"
+
 msgid "usage"
 msgstr "penggunaan"
 
@@ -5430,6 +5516,79 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Nilai saat ini tidak valid pada indeks peta untuk tingkat zoom yang diberikan"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Anda mengalami bug di JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Laporkan Bug"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Menekan dialog kesalahan lebih lanjut untuk sesi ini."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr "Latar belakang konflik:tidak konflik"
 
@@ -6150,6 +6309,22 @@ msgstr ""
 "objek yang belum lengkap akan dihapus. Apakah anda mau menempel data tanpa "
 "objek yang belum lengkap?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Apakah Anda ingin menempelkan tag ini?"
+
+msgid "Clear buffer"
+msgstr "Bersihkan penyangga"
+
+msgid "Ignore warnings"
+msgstr "Abaikan peringatan"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Maaf, itu tidak mungkin untuk menyisipkan tag dari penyangga. Ini "
+"tidak ada dalam objek JOSM atau teks yang sesuai. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Hanya untuk objek yang dipilih"
 
@@ -6729,9 +6904,6 @@ msgstr "Sumber"
 msgid "Title:"
 msgstr "Judul:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Bangun Gaya, jalur internal"
 
@@ -6842,9 +7014,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relasi"
-
 msgid "Open a list of all relations."
 msgstr "Buka daftar dari semua relasi"
 
@@ -8317,25 +8486,6 @@ msgstr "Nilai dari lintang memiliki interval [-90,90] yang dibutuhkan"
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Nilai dari bujur harus terletak pada interval [-180,180]"
 
-msgid "Data Sources and Types:"
-msgstr "Sumber data dan jenis:"
-
-msgid "OpenStreetMap data"
-msgstr "Data OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Pilih untuk mendownload data OSM pada area download yang ada"
-
-msgid "Raw GPS data"
-msgstr "Data GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Pilih untuk mendownload jejak GPS pada area download yang telah dipilih."
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Download sebagai layer baru"
 
@@ -8369,27 +8519,12 @@ msgstr ""
 "Gunakan klik kiri dan geser ke area yang dipilih, panah atau tombol kanan "
 "mouse untuk mengarahkan peta, roda gulir atau + / - untuk memperbesar."
 
-msgid "No area selected yet"
-msgstr "Belum ada area yang terpilih"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Area download terlalu besar; kemungkinan akan ditolak oleh server"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Download sudah ok, ukuran mungkin akan diterima oleh server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Klik untuk menutup kotak dialog dan membatalkan proses download"
 
 msgid "Click to download the currently selected area"
 msgstr "Klik untuk mendownload area yang telah dipilih saat ini."
 
-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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "Download acuan (parent relations)"
 
@@ -8412,6 +8547,89 @@ msgstr "Pilih jika anggota dari sebuah relasi seharusnya didownload"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Download referensi (parents relation and ways)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Sumber data dan jenis:"
+
+msgid "OpenStreetMap data"
+msgstr "Data OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Pilih untuk mendownload data OSM pada area download yang ada"
+
+msgid "Raw GPS data"
+msgstr "Data GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Pilih untuk mendownload jejak GPS pada area download yang telah dipilih."
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+msgstr "Silahkan pilih area untuk didownload terlebih dahulu"
+
+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 ""
+
+msgid "No area selected yet"
+msgstr "Belum ada area yang terpilih"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Area download terlalu besar; kemungkinan akan ditolak oleh server"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Download sudah ok, ukuran mungkin akan diterima oleh server"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "Sejarah"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8454,9 +8672,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9054,6 +9269,18 @@ msgstr "Membuktikan dengan memberikan nama pengguna dan kata sandi"
 msgid "Cancel authentication"
 msgstr "Batalkan otentikasi"
 
+msgid "Question"
+msgstr "Pertanyaan"
+
+msgid "Message"
+msgstr "Pesan"
+
+msgid "Enter text"
+msgstr "Masukkan teks"
+
+msgid "Installing plugins"
+msgstr "Meng-install plugin"
+
 msgid "Downloading file"
 msgstr "Mengunduh data"
 
@@ -9584,9 +9811,6 @@ msgstr "Pilih objek untuk di upload"
 msgid "Cancel uploading"
 msgstr "Batalkan proses upload"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Mengisi satu changeset dan kembali ke dialog unggah"
 
@@ -9668,6 +9892,190 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objek untuk dihapus:"
 
+msgid "All Formats"
+msgstr "Semua format"
+
+msgid "Could not export ''{0}''."
+msgstr "Tidak bisa ekspor \"{0}\""
+
+msgid "Could not import ''{0}''."
+msgstr "Tidak bisa impor \"{0}\""
+
+msgid "Could not import files."
+msgstr "Tidak bisa impor berkas."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Tidak bisa membaca berkas ''{0}''.<br>Kesalahan berupa:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Tidak bisa membaca berkas.<br>Kesalahan:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Berkas GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Layer \"{0}\" tidak mendukung"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Catatan: GPL tidak kompatibel dengan lisensi OSM. Jangan mengupload jalur "
+"berlisensi GPL."
+
+msgid "GPS track description"
+msgstr "Deskripsi jalur GPS"
+
+msgid "Add author information"
+msgstr "Tambahkan informasi penulis"
+
+msgid "Real name"
+msgstr "Nama asli"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Hak cipta (URL)"
+
+msgid "Predefined"
+msgstr "Pradefinisi"
+
+msgid "Copyright year"
+msgstr "Tahun Hak Cipta"
+
+msgid "Keywords"
+msgstr "Kata-kunci"
+
+msgid "Export options"
+msgstr "Opsi Eksport"
+
+msgid "Export and Save"
+msgstr "Eksport dan Simpan"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Kesalahan saat mengekspor {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Pilih sebuah lisensi standar"
+
+msgid "GPX Files"
+msgstr "berkas GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Memisahkan data untuk layer \"{0}\" gagal"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Kesalahan terjadi saat memisahkan data gpx untuk layer \"{0}\". Hanya bagian "
+"berkas yang akan disediakan."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Kesalahan terjadi saat mengurai berkas gpx \"{0}\". Hanya bagian berkas yang "
+"tersedia."
+
+msgid "Image Files"
+msgstr "Berkas Citra"
+
+msgid "folder"
+msgstr "folder"
+
+msgid "Looking for image files"
+msgstr "Mencari file citra"
+
+msgid "No image files found."
+msgstr "Tidak ada file citra yang ditemukan"
+
+msgid "NMEA-0183 Files"
+msgstr "Berkas NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Koordinat sudah diimpor: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Kalimat cacat: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Kesalahan checksum: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Kalimat yang tidak diketahui: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Koordinat nol: {0}"
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "import NMEA gagal"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Berkas server OSM bzip2 terkompres"
+
+msgid "OsmChange File"
+msgstr "Berkas OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Berkas ''{0}'' tidak ada."
+
+msgid "No data found in file {0}."
+msgstr "Tidak ada data ditemukan di dalam berkas ''{0}''."
+
+msgid "Open OsmChange file"
+msgstr "Buka berkas Perubahan Osm"
+
+msgid "OSM Server Files"
+msgstr "Berkas server OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Terjadi kesalahan saat menyimpan<br>Kesalahan adalah: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>kesalahan terjadi saat mengembalikan file cadangan.<br>Kesalahan "
+"adalah:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "file layanan OSM gzip telah dikompres"
+
+msgid "Invalid dataset"
+msgstr "Dataset tidak valid"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Tidak ada data ditemukan untuk layer ''{0}''"
+
+msgid "No data found in file ''{0}''."
+msgstr "Tidak ada data yang ditemukan pada berkas \"{0}\"."
+
+msgid "Open OSM file"
+msgstr "Buka berkas OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Berkas WMS  (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "tidak mendukung file WMS versi; ditemukan {0}, diharapkan {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9775,6 +10183,35 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Sembunyikan pesan ini dan jangan pernah munculkan lagi"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Tidak dapat membuat direktori {0}, penyimpanan otomatis akan dinonaktifkan"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Tidak dapat membuat berkas {0}, nama berkas lainnya akan digunakan"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"KesalahanIO ketika membuat file, tidak akan menyimpan secara otomatis: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Tidak dapat menghapus berkas cadangan yang lama {0}"
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Mengembalikan file"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Penyesuaian warna"
 
@@ -9874,6 +10311,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "diluar area yang didownload"
 
@@ -9948,6 +10388,9 @@ msgstr "Kesalahan validasi"
 msgid "No validation errors"
 msgstr "Tidak ada kesalahan validasi"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Pengaturan bookmark WMS"
 
@@ -10561,9 +11004,6 @@ msgstr "(URL adalah: "
 msgid "Select the map painting styles"
 msgstr "memilih model pewarnaan peta"
 
-msgid "loading style ''{0}''..."
-msgstr "Memual model \"{0}\"..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10574,6 +11014,9 @@ msgstr[0] ""
 "Disana terjadi kesalahan {0} ketika memuat model ini. Pilih \"Info\" dari "
 "klik kanan menu untuk detail."
 
+msgid "loading style ''{0}''..."
+msgstr "Memual model \"{0}\"..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -11104,27 +11547,6 @@ msgstr "Download plugin"
 msgid "Icon paths:"
 msgstr "ikon jalur:"
 
-msgid "Short Description:"
-msgstr "Deskripsi singkat:"
-
-msgid "Author:"
-msgstr "Pembuat:"
-
-msgid "Webpage:"
-msgstr "Halaman web:"
-
-msgid "Description:"
-msgstr "Deskripsi:"
-
-msgid "Version:"
-msgstr "Versi:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versi minimum JOSM:"
-
-msgid "by {0}"
-msgstr "oleh {0}"
-
 msgid "Name (optional):"
 msgstr "Nama (pilihan):"
 
@@ -12280,21 +12702,6 @@ msgstr ""
 "peringatan: format ilegal dari entri pada daftar model ''{0}''. Mendapatkan "
 "''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"model internal untuk digunakan sebagai dasar untuk model tampalan runtime "
-"yang dapat diganti"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "model utama Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Pengaturan Peta"
 
@@ -12391,12 +12798,6 @@ msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 "Peringatan: illegal format dari entri daftar preset ''{0}''. Menjadi ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Internal Preset"
-
-msgid "The default preset for JOSM"
-msgstr "Pengaturan awal preset untuk JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Plugin {0} masih diperlukan oleh plugin {1} ini:"
@@ -12887,9 +13288,6 @@ msgstr "Kata sandi OSM:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Manajer credential saat adalah tipe ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12907,12 +13305,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr "Simpan ke pengaturan"
 
@@ -13104,69 +13496,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Agama"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13421,6 +13750,38 @@ msgstr "Semua file (*.*)"
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Pengaturan dengan key \"{0}\" tidak termasuk \"{1}\". Tidak dapat "
+"mengembalikan jendela geometri dari pengaturan."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Pengaturan dengan key \"{0}\" tidak menyediakan int value untuk \"{1}\". "
+"Mendapat {2}. Tidak dapat mengembalikan jendela geometri dari pengaturan."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Gagal untuk mengurai field \"{1}\" dalam pengaturan dengan key \"{0}\". "
+"Pengecualian: {2}. Tidak dapat mengembalikan jendela geometri dari "
+"pengaturan."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Pengaturan dengan kunci \"{0}\" tidak ada. Tidak dapat mengembalikan jendela "
+"geometry dari pengaturan."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Mengabaikan geometri cacat: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. lintang"
 
@@ -13553,9 +13914,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Hapus member {0} digunakan oleh relasi {1}"
 
-msgid "All Formats"
-msgstr "Semua format"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Mengunduh titik {0} ke {1}..."
 
@@ -13664,95 +14022,6 @@ msgstr "Memisahkan respon dari server..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Tidak terduga elemen XML dengan nama ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Tidak bisa ekspor \"{0}\""
-
-msgid "Could not import ''{0}''."
-msgstr "Tidak bisa impor \"{0}\""
-
-msgid "Could not import files."
-msgstr "Tidak bisa impor berkas."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Tidak bisa membaca berkas ''{0}''.<br>Kesalahan berupa:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Tidak bisa membaca berkas.<br>Kesalahan:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Berkas GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Layer \"{0}\" tidak mendukung"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Catatan: GPL tidak kompatibel dengan lisensi OSM. Jangan mengupload jalur "
-"berlisensi GPL."
-
-msgid "GPS track description"
-msgstr "Deskripsi jalur GPS"
-
-msgid "Add author information"
-msgstr "Tambahkan informasi penulis"
-
-msgid "Real name"
-msgstr "Nama asli"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Hak cipta (URL)"
-
-msgid "Predefined"
-msgstr "Pradefinisi"
-
-msgid "Copyright year"
-msgstr "Tahun Hak Cipta"
-
-msgid "Keywords"
-msgstr "Kata-kunci"
-
-msgid "Export options"
-msgstr "Opsi Eksport"
-
-msgid "Export and Save"
-msgstr "Eksport dan Simpan"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Kesalahan saat mengekspor {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Pilih sebuah lisensi standar"
-
-msgid "GPX Files"
-msgstr "berkas GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Memisahkan data untuk layer \"{0}\" gagal"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Kesalahan terjadi saat memisahkan data gpx untuk layer \"{0}\". Hanya bagian "
-"berkas yang akan disediakan."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Kesalahan terjadi saat mengurai berkas gpx \"{0}\". Hanya bagian berkas yang "
-"tersedia."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parse kesalahan: struktur dokumen valid untuk dokumen GPX."
 
@@ -13762,18 +14031,6 @@ msgstr "(di garis {0}, kolom {1})"
 msgid "Unknown mode {0}."
 msgstr "Mode tidak diketahui {0}."
 
-msgid "Image Files"
-msgstr "Berkas Citra"
-
-msgid "folder"
-msgstr "folder"
-
-msgid "Looking for image files"
-msgstr "Mencari file citra"
-
-msgid "No image files found."
-msgstr "Tidak ada file citra yang ditemukan"
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13826,36 +14083,9 @@ msgstr "Mengambil relasi dengan id {0} dari \"{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server menjawab dengan respon kode 404 untuk id {0}. Melewatkan."
 
-msgid "NMEA-0183 Files"
-msgstr "Berkas NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Koordinat sudah diimpor: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Kalimat cacat: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Kesalahan checksum: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Kalimat yang tidak diketahui: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Koordinat nol: {0}"
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "import NMEA gagal"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Pengecualian pointer nol, Kemungkinan ada tag yang hilang"
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13949,27 +14179,12 @@ msgstr "(Kode={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Server menjawab sebuah kesalahan dengan kode {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Berkas server OSM bzip2 terkompres"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr "Prolog dokumen OsmChange sudah ditulis. Harap ditulis hanya sekali."
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr "Prolog dokumen OsmChange belum ditulis. Harap menulis pertama."
 
-msgid "OsmChange File"
-msgstr "Berkas OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Berkas ''{0}'' tidak ada."
-
-msgid "No data found in file {0}."
-msgstr "Tidak ada data ditemukan di dalam berkas ''{0}''."
-
-msgid "Open OsmChange file"
-msgstr "Buka berkas Perubahan Osm"
-
 msgid "Unsupported version: {0}"
 msgstr "versi tidak mendukung: {0}"
 
@@ -14019,38 +14234,9 @@ msgstr "Gagal menandai koneksi HTTP dengan header otentikasi OAuth"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "Berkas server OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Terjadi kesalahan saat menyimpan<br>Kesalahan adalah: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>kesalahan terjadi saat mengembalikan file cadangan.<br>Kesalahan "
-"adalah:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "file layanan OSM gzip telah dikompres"
-
 msgid "Parsing OSM history data ..."
 msgstr "menguraikan data riwayat OSM"
 
-msgid "Invalid dataset"
-msgstr "Dataset tidak valid"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Tidak ada data ditemukan untuk layer ''{0}''"
-
-msgid "No data found in file ''{0}''."
-msgstr "Tidak ada data yang ditemukan pada berkas \"{0}\"."
-
-msgid "Open OSM file"
-msgstr "Buka berkas OSM"
-
 msgid "Reading was canceled"
 msgstr "Pembacaan dibatalkan"
 
@@ -14189,6 +14375,9 @@ msgstr "Memanggil Server..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr "Mengunduh data..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14248,14 +14437,8 @@ msgstr "Bukan pengeculaian id 0 untuk osm primitif ditemukan"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Mengunduh data..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Berkas WMS  (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "tidak mendukung file WMS versi; ditemukan {0}, diharapkan {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -15317,33 +15500,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -15402,22 +15558,6 @@ msgstr "Karakter mencurigakan dalam key:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Value terlalu panjang (maksimal {0} karakter):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Apakah Anda ingin menempelkan tag ini?"
-
-msgid "Clear buffer"
-msgstr "Bersihkan penyangga"
-
-msgid "Ignore warnings"
-msgstr "Abaikan peringatan"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Maaf, itu tidak mungkin untuk menyisipkan tag dari penyangga. Ini "
-"tidak ada dalam objek JOSM atau teks yang sesuai. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15441,118 +15581,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Pengaturan dengan key \"{0}\" tidak termasuk \"{1}\". Tidak dapat "
-"mengembalikan jendela geometri dari pengaturan."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Pengaturan dengan key \"{0}\" tidak menyediakan int value untuk \"{1}\". "
-"Mendapat {2}. Tidak dapat mengembalikan jendela geometri dari pengaturan."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Gagal untuk mengurai field \"{1}\" dalam pengaturan dengan key \"{0}\". "
-"Pengecualian: {2}. Tidak dapat mengembalikan jendela geometri dari "
-"pengaturan."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Pengaturan dengan kunci \"{0}\" tidak ada. Tidak dapat mengembalikan jendela "
-"geometry dari pengaturan."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Mengabaikan geometri cacat: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Gagal memuat skema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Anda mengalami bug di JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Laporkan Bug"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Menekan dialog kesalahan lebih lanjut untuk sesi ini."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19286,9 +19321,6 @@ msgstr "Isi Papan"
 msgid "notice"
 msgstr "Pemberitahuan"
 
-msgid "history"
-msgstr "Sejarah"
-
 msgid "nature"
 msgstr "Alam"
 
@@ -19868,6 +19900,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Rumah perawatan"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22308,6 +22343,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr "Berbagai Toko"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -23168,6 +23206,78 @@ msgstr "Komersial"
 msgid "Industrial"
 msgstr "Industri"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garages"
 
@@ -23865,6 +23975,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24617,6 +24730,9 @@ msgstr "Kadaster"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24727,15 +24843,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32985,15 +33092,21 @@ msgstr "Ke nilai sebelumnya (tidak ada perubahan pada mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Plugin Geotagging Foto"
 
-msgid "Writing position information to image files..."
-msgstr "Menulis informasi posisi pada berkas gambar..."
-
 msgid "Could not read mtime."
 msgstr "Tidak bisa membaca mtime"
 
 msgid "Could not write mtime."
 msgstr "Tidak bisa menulis mtime"
 
+msgid "Writing position information to image files..."
+msgstr "Menulis informasi posisi pada berkas gambar..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Berkas tidak dapat dihapus!"
 
@@ -33492,6 +33605,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33500,6 +33616,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/is.po b/i18n/po/is.po
index cf3bd36..9ce5ec6 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:47+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:47+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: is\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Hjálp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Hunsa gallaða vefslóð: \"{0}\""
-
-msgid "Warning"
-msgstr "Aðvörun"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Hunsa gallaða skráarslóð: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Um JOSM..."
 
@@ -180,6 +135,9 @@ msgstr "Hætta við"
 msgid "Click to abort launching external browsers"
 msgstr "Smelltu til að hætta við að keyra vefskoðara"
 
+msgid "Warning"
+msgstr "Aðvörun"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Þú verður að velja hnút, veg eða vensl sem hefur verið hlaðið upp nú þegar."
@@ -459,23 +417,17 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Sækja frá OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Sækja kortagögn frá OSM miðlaranum."
+msgid "Download data"
+msgstr "Sækja gögn"
 
-msgid "Please select a download area first."
-msgstr "Veljið fyrst svæði sem á að sækja"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "Sækja gögn"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -542,6 +494,9 @@ msgstr "Ekkert til að vista. Opnaðu gögn fyrst."
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Hjálp"
+
 msgid "History"
 msgstr "Breytingaskrá"
 
@@ -1041,23 +996,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Líma"
 
@@ -2323,36 +2261,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Leita..."
 
@@ -2639,88 +2547,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Óþekkt gerð hlutar „{0}“. Þekktar gerðir eru node, way og relation fyrir "
-"hnút, veg og vensl"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2738,9 +2564,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Farið var umfram getu forritunarviðmótsins"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3090,57 +2913,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3230,6 +3008,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3358,6 +3142,15 @@ msgstr ""
 msgid "Note"
 msgstr "Athugasemd"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3372,6 +3165,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3408,9 +3204,62 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
-
+msgid "incomplete"
+msgstr "óklárað"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "hnútur"
+msgstr[1] "hnútar"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr "vatnsfarvegur"
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr "bygging"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} hnútur"
+msgstr[1] "{0} hnútar"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} stak"
+msgstr[1] "{0} stök"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "vensl"
+msgstr[1] "vensl"
+
+msgid "Changeset {0}"
+msgstr "Breytingarsett {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
 msgid "Error in filter"
 msgstr ""
 
@@ -3442,21 +3291,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "hnútur"
-msgstr[1] "hnútar"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "vegur"
 msgstr[1] "vegir"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "vensl"
-msgstr[1] "vensl"
-
 msgid "closedway"
 msgstr ""
 
@@ -3490,6 +3329,118 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Óþekkt gerð hlutar „{0}“. Þekktar gerðir eru node, way og relation fyrir "
+"hnút, veg og vensl"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3567,6 +3518,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Heimilisfang"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Vegir"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Vensl"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3751,9 +3817,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Heimilisfang"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3938,9 +4001,6 @@ msgstr "Hnútur endurtekinn í vegi"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr "Vegir"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4479,9 +4539,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "bygging"
-
 msgid "area"
 msgstr ""
 
@@ -4596,45 +4653,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "óklárað"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr "vatnsfarvegur"
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} hnútur"
-msgstr[1] "{0} hnútar"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} stak"
-msgstr[1] "{0} stök"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Hunsa gallaða vefslóð: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Hunsa gallaða skráarslóð: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Breytingarsett {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
 
 msgid "Precondition violation"
 msgstr ""
@@ -4724,6 +4750,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5187,6 +5273,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Senda villutilkynningu"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5881,6 +6040,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6437,9 +6610,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6550,9 +6720,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Vensl"
-
 msgid "Open a list of all relations."
 msgstr "Sýna lista yfir vensl"
 
@@ -7952,24 +8119,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Gagnalindir:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap gögn"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Veljið til að sækja OSM gögn í völdu svæði."
-
-msgid "Raw GPS data"
-msgstr "GPS gögn"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Veljið til að sækja GPS slóðir í völdu svæði."
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Sækja sem nýtt lag"
 
@@ -7997,27 +8146,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
-msgid "No area selected yet"
-msgstr ""
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Sótt svæði er of stórt. Verður sennilega hafnað af miðlara"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Stærð svæðis er í lagi, sennilega ásættanleg fyrir miðlara"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Smellið til að loka glugga og hætta að sækja gögn"
 
 msgid "Click to download the currently selected area"
 msgstr "Smellið til að sækja valið svæði"
 
-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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr ""
 
@@ -8038,6 +8172,88 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr ""
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Gagnalindir:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap gögn"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Veljið til að sækja OSM gögn í völdu svæði."
+
+msgid "Raw GPS data"
+msgstr "GPS gögn"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Veljið til að sækja GPS slóðir í völdu svæði."
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+msgstr "Veljið fyrst svæði sem á að sækja"
+
+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 ""
+
+msgid "No area selected yet"
+msgstr ""
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Sótt svæði er of stórt. Verður sennilega hafnað af miðlara"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Stærð svæðis er í lagi, sennilega ásættanleg fyrir miðlara"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "sagnfræði"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8080,9 +8296,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8623,6 +8836,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9104,9 +9329,6 @@ msgstr "Veldu hluti til að hlaða upp"
 msgid "Cancel uploading"
 msgstr "Hætta við að hlaða upp"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9185,6 +9407,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} hlut verður eytt:"
 msgstr[1] "{0} hlutum verður eytt:"
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr "lýsing á gps ferli"
+
+msgid "Add author information"
+msgstr "Bæta við höfundaupplýsingum"
+
+msgid "Real name"
+msgstr "Nafn"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9292,6 +9686,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Sérsníða liti"
 
@@ -9395,6 +9816,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "utan sótts svæðis"
 
@@ -9468,6 +9892,9 @@ msgstr "Villur sem fundust við athugun"
 msgid "No validation errors"
 msgstr "Engar villur fundust við athugun"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10037,9 +10464,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10049,6 +10473,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10464,54 +10891,33 @@ msgstr ""
 
 msgid ""
 "<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-"Athugið að stundum þarf að endurræsa JOSM til að stillingar taki gildi."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr "Sækja íforrit"
-
-msgid "Icon paths:"
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Short Description:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Author:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Description:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Version:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
+"Athugið að stundum þarf að endurræsa JOSM til að stillingar taki gildi."
 
-msgid "Minimum JOSM Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "by {0}"
+msgid "Download plugins"
+msgstr "Sækja íforrit"
+
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11602,19 +12008,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Kortastillingar"
 
@@ -11694,12 +12087,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12169,9 +12556,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12189,12 +12573,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12375,69 +12753,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12681,6 +12996,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12795,9 +13133,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Sæki punkta {0} to {1}..."
 
@@ -12900,86 +13235,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr "lýsing á gps ferli"
-
-msgid "Add author information"
-msgstr "Bæta við höfundaupplýsingum"
-
-msgid "Real name"
-msgstr "Nafn"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12989,18 +13244,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13052,36 +13295,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Núll bendill, hugsanlega vantar eigindi."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13169,27 +13385,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13235,35 +13436,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13395,6 +13570,9 @@ msgstr "Hef samband við þjóninn..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13453,13 +13631,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14398,33 +14570,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14483,20 +14628,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14520,109 +14651,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Senda villutilkynningu"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18335,9 +18370,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "sagnfræði"
-
 msgid "nature"
 msgstr "náttúran"
 
@@ -18917,6 +18949,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21357,6 +21392,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22217,6 +22255,78 @@ msgstr "Skrifstofur"
 msgid "Industrial"
 msgstr "Iðnaður"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22912,6 +23022,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23664,6 +23777,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23774,15 +23890,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31635,13 +31742,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32139,6 +32252,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32147,6 +32263,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/it.po b/i18n/po/it.po
index 436f9c5..093e277 100644
--- a/i18n/po/it.po
+++ b/i18n/po/it.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm 20081003\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-22 14:52+0000\n"
 "Last-Translator: Gábor Babos <Unknown>\n"
 "Language-Team: Italian <talk-it at lists.openstreetmap.org>\n"
@@ -12,7 +12,7 @@ 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-08-13 04:48+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:48+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: it\n"
 "X-Language: it_IT\n"
@@ -55,55 +55,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Apertura del collegamento non supportata sulla piattaforma corrente (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Esecuzione del collegamento iniziale alla piattaforma"
-
-msgid "Building main menu"
-msgstr "Creazione del menu principale"
-
-msgid "Help"
-msgstr "Aiuto"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inizializzazione interna dati dei confini"
-
-msgid "Initializing OSM API"
-msgstr "Inizializzazione delle API di OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Inizializzazione interna dati traffico"
-
-msgid "Initializing validator"
-msgstr "Inizializzazione del validatore"
-
-msgid "Initializing presets"
-msgstr "Inizializzazione delle preimpostazioni"
-
-msgid "Initializing map styles"
-msgstr "Inizializzazione degli stili della mappa"
-
-msgid "Loading imagery preferences"
-msgstr "Caricamento delle preferenze delle immagini aeree"
-
-msgid "Updating user interface"
-msgstr "Aggiornamento dell''interfaccia utente"
-
 msgid "Failed to save default preferences."
 msgstr "Impossibile salvare le preferenze predefinite."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorato un indirizzo URL malformato: \"{0}\""
-
-msgid "Warning"
-msgstr "Attenzione"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorato un indirizzo URL di file malformato: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Il parametro \"downloadgps\" non accetta nomi di file o indirizzi URL di file"
-
 msgid "About"
 msgstr "Informazioni"
 
@@ -187,6 +141,9 @@ msgstr "Annulla"
 msgid "Click to abort launching external browsers"
 msgstr "Clicca per annullare l''esecuzione dei visualizzatori esterni"
 
+msgid "Warning"
+msgstr "Attenzione"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Selezionare almeno un nodo, percorso o relazione già caricato."
 
@@ -479,14 +436,11 @@ msgstr ""
 "* Uno, nessun modo di auto-incrocio con al massimo due dei suoi nodi;\n"
 "* Tree nodi."
 
-msgid "Download from OSM..."
-msgstr "Scarica da OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Scarica i dati della mappa dal server OSM."
+msgid "Download data"
+msgstr "Scarica dati"
 
-msgid "Please select a download area first."
-msgstr "Selezionare prima un''area di scarico."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -495,9 +449,6 @@ msgstr ""
 "<html>Quest''azione richiederà {0} richieste di scarico distinte.<br>Si "
 "vuole procedere?</html>"
 
-msgid "Download data"
-msgstr "Scarica dati"
-
 msgid "Download notes in current view"
 msgstr "Scarica le note nella visualizzazione corrente"
 
@@ -568,6 +519,9 @@ msgstr "Niente da esportare. Prima è necessario ottenere dei dati."
 msgid "Export GPX file"
 msgstr "Esporta file GPX"
 
+msgid "Help"
+msgstr "Aiuto"
+
 msgid "History"
 msgstr "Cronologia"
 
@@ -1138,23 +1092,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Si prega di selezionare dei percorsi con angoli di 90 o 180 gradi circa."
 
-msgid "Download from Overpass API ..."
-msgstr "Scarica dalle API di Overpass ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Scarica i dati della mappa dal server delle API di Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Incolla"
 
@@ -2561,36 +2498,6 @@ msgstr "Seleziona relazione (aggiungi)"
 msgid "Select relation"
 msgstr "Selezionare la relazione"
 
-msgid "<not>"
-msgstr "<non>"
-
-msgid "<or>"
-msgstr "oppure"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<due punti>"
-
-msgid "<equals>"
-msgstr "<uguale>"
-
-msgid "<key>"
-msgstr "<chiave>"
-
-msgid "<question mark>"
-msgstr "<punto interrogativo>"
-
-msgid "<end-of-file>"
-msgstr "<fin-del-file>"
-
 msgid "Search..."
 msgstr "Cerca..."
 
@@ -2893,98 +2800,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Ricerca in {0} oggetto"
 msgstr[1] "Ricerca in {0} oggetti"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"L''espressione regolare \"{0}\" contiene un errore di interpretazione alla "
-"posizione {1}, errore completo:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"L''espressione regolare \"{0}\" ha generato un errore di interpretazione. "
-"Errore completo:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Impossibile analizzare marca temporale ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "E previsto {0} dopo {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "È atteso un intervallo di identificativi delle primitive"
-
-msgid "Range of changeset ids expected"
-msgstr "È atteso un intervallo di identificativi dei gruppi di modifiche"
-
-msgid "Range of versions expected"
-msgstr "È atteso un intervallo di versioni"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"La chiave non può essere vuota quando è utilizzato un operatore sulla "
-"etichetta. Esempio di utilizzo: key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipo di primitiva sconosciuta: {0}. I valori permessi sono: nodo, percorso o "
-"relazione"
-
-msgid "Positive integer expected"
-msgstr "Atteso un intero positivo"
-
-msgid "Range of numbers expected"
-msgstr "Atteso intervallo di numeri"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Token inaspettato. Era atteso {0}, trovato {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Impossibile analizzare selettore MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Token inaspettato: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parametro mancante per OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Parametro mancante per XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Operatore mancante per NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Troncamento automatico per il valore dell''etichetta ''{0}'' sull''oggetto "
@@ -3008,9 +2823,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Violazione delle capacità delle API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dipendenza ciclica tra relazioni:"
-
 msgid "Removed obsolete tags"
 msgstr "Rimosse etichette obsolete"
 
@@ -3393,65 +3205,12 @@ msgstr "Regole nelle relazioni a cui si riferiscono"
 msgid "Automatic tag correction"
 msgstr "Correzione automatica etichette"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Impossibile creare la cartella {0}, il salvataggio automatico sarà "
-"disabilitato"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Impossibile creare il file {0}, sarà utilizzato un altro nome"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Errore di IO durante la creazione del file, il salvataggio automatico sarà "
-"tralasciato: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Impossibile eliminare il vecchio file di backup {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Il proprio lavoro è stato salvato automaticamente."
-
-msgid "Restoring files"
-msgstr "Ripristino dei file in corso"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Impossibile cancellare il file di backup {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Impossibile cancellare il file PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Impossibile cancellare il file di backup archiviato {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valore ''''{0}'''' non valido per la latitudine"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valore ''''{0}'''' non valido per la longitudine"
 
-msgid "Question"
-msgstr "Domanda"
-
-msgid "Message"
-msgstr "Messaggio"
-
-msgid "Enter text"
-msgstr "Inserire il testo"
-
-msgid "Installing plugins"
-msgstr "Installazione estensioni"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Il file delle impostazioni chiede di aggiungere delle preferenze a "
-"<b>{0}</b>,<br/> però al momento non si conosce il suo valore "
-"predefinito.<br/> Si prega di attivare manualmente la funzione "
-"corrispondente e di importare nuovamente."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Fallita la creazione della cartella cache mancante: {0}"
 
@@ -3565,6 +3324,16 @@ msgstr ""
 "L''impostazione delle preferenze {0} è stata rimossa dal momento che non è "
 "più usata."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Il file delle impostazioni chiede di aggiungere delle preferenze a "
+"<b>{0}</b>,<br/> però al momento non si conosce il suo valore "
+"predefinito.<br/> Si prega di attivare manualmente la funzione "
+"corrispondente e di importare nuovamente."
+
 msgid "Metric"
 msgstr "Metrico"
 
@@ -3706,6 +3475,19 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Fallito l''ottenimento del token di accesso OAuth dal gestore delle "
+"credenziali"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Il gestore delle credenziali corrente è di tipo ''''{0}''''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Fallita la memorizzazione del token di accesso OAuth nel gestore delle "
+"credenziali"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Era atteso un ID > 0 . Ottenuto {0}."
 
@@ -3722,6 +3504,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Una primitiva con ID = 0 non può essere invisibile."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dipendenza ciclica tra relazioni:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3766,6 +3551,59 @@ msgstr "Unione dei dati..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Verifica ''{0}'' completata in {1}"
 
+msgid "incomplete"
+msgstr "incompleto"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Numero civico {0} di {1}"
+
+msgid "House number {0}"
+msgstr "Numero civico {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nodo"
+msgstr[1] "nodi"
+
+msgid "highway"
+msgstr "strada"
+
+msgid "railway"
+msgstr "Ferrovia"
+
+msgid "waterway"
+msgstr "Corso d’acqua"
+
+msgid "landuse"
+msgstr "Uso del terreno"
+
+msgid "building"
+msgstr "edificio"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nodo"
+msgstr[1] "{0} nodi"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membro"
+msgstr[1] "{0} membri"
+
+msgid "public transport"
+msgstr "trasporto pubblico"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relazione"
+msgstr[1] "relazioni"
+
+msgid "Changeset {0}"
+msgstr "Gruppo di modifiche {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 "Copy text \t\r\n"
@@ -3805,21 +3643,11 @@ msgstr ""
 "Impossibile unire le primitive con identificativi differenti. Questo id è "
 "{0}, l''altro è {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nodo"
-msgstr[1] "nodi"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "percorso"
 msgstr[1] "percorsi"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relazione"
-msgstr[1] "relazioni"
-
 msgid "closedway"
 msgstr "percorso chiuso"
 
@@ -3857,6 +3685,128 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "il parametro {0} non è nell''intervallo 0..{1}, ottenuto {2}"
 
+msgid "<not>"
+msgstr "<non>"
+
+msgid "<or>"
+msgstr "oppure"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<due punti>"
+
+msgid "<equals>"
+msgstr "<uguale>"
+
+msgid "<key>"
+msgstr "<chiave>"
+
+msgid "<question mark>"
+msgstr "<punto interrogativo>"
+
+msgid "<end-of-file>"
+msgstr "<fin-del-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"L''espressione regolare \"{0}\" contiene un errore di interpretazione alla "
+"posizione {1}, errore completo:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"L''espressione regolare \"{0}\" ha generato un errore di interpretazione. "
+"Errore completo:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Impossibile analizzare marca temporale ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "E previsto {0} dopo {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "È atteso un intervallo di identificativi delle primitive"
+
+msgid "Range of changeset ids expected"
+msgstr "È atteso un intervallo di identificativi dei gruppi di modifiche"
+
+msgid "Range of versions expected"
+msgstr "È atteso un intervallo di versioni"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"La chiave non può essere vuota quando è utilizzato un operatore sulla "
+"etichetta. Esempio di utilizzo: key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipo di primitiva sconosciuta: {0}. I valori permessi sono: nodo, percorso o "
+"relazione"
+
+msgid "Positive integer expected"
+msgstr "Atteso un intero positivo"
+
+msgid "Range of numbers expected"
+msgstr "Atteso intervallo di numeri"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Impossibile analizzare selettore MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Token inaspettato: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parametro mancante per OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Parametro mancante per XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Operatore mancante per NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Token inaspettato. Era atteso {0}, trovato {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Fallito il caricamento della classe di generazione mappa ''{0}''. La classe "
@@ -3944,6 +3894,123 @@ msgstr "Atteso elemento ''{0}'', ma ottenuto ''{1}''"
 msgid "value expected"
 msgstr "valore atteso"
 
+msgid "Short Description:"
+msgstr "Breve descrizione:"
+
+msgid "URL:"
+msgstr "Indirizzo URL:"
+
+msgid "Author:"
+msgstr "Autore:"
+
+msgid "Webpage:"
+msgstr "Pagina internet:"
+
+msgid "Description:"
+msgstr "Descrizione:"
+
+msgid "Version:"
+msgstr "Versione:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versione minima di JOSM"
+
+msgid "by {0}"
+msgstr "da {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "Predefinito JOSM (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Stile interno da utilizzare come base per gli stili di copertura "
+"intercambiabili durante l''esecuzione"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "lo stile principale di Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Preimpostazione interna"
+
+msgid "The default preset for JOSM"
+msgstr "La preimpostazione predefinita per JOSM"
+
+msgid "Addresses"
+msgstr "Indirizzi"
+
+msgid "Checks for errors on addresses"
+msgstr "Ricerca errori sugli indirizzi"
+
+msgid "Tag combinations"
+msgstr "Combinazioni di etichette"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Ricerca le etichette mancanti o le combinazioni sospette"
+
+msgid "Deprecated features"
+msgstr "Caratteristiche deprecate"
+
+msgid "Checks for deprecated features"
+msgstr "Ricerca le caratteristiche deprecate"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Ricerca gli errori geometrici"
+
+msgid "Highways"
+msgstr "Strade"
+
+msgid "Checks for errors on highways"
+msgstr "Ricerca gli errori sulle strade"
+
+msgid "Multiple values"
+msgstr "Valori multipli"
+
+msgid "Checks for wrong multiple values"
+msgstr "Ricerca valori multipli errati"
+
+msgid "Numeric values"
+msgstr "Valori numerici"
+
+msgid "Checks for wrong numeric values"
+msgstr "Ricerca i valori numerici errati"
+
+msgid "Religion"
+msgstr "Religione"
+
+msgid "Checks for errors on religious objects"
+msgstr "Ricerca gli errori sugli oggetti di culto"
+
+msgid "Relations"
+msgstr "Relazioni"
+
+msgid "Checks for errors on relations"
+msgstr "Ricerca gli errori sulle relazioni"
+
+msgid "Territories"
+msgstr "Territori"
+
+msgid "Checks for territories-specific features"
+msgstr "Controlla caratteristiche specifiche di un territorio"
+
+msgid "Unnecessary tags"
+msgstr "Etichette non necessarie"
+
+msgid "Checks for unnecessary tags"
+msgstr "Ricerca le etichette non necessarie"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Ricerca le etichette su wikipedia errate"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "proiezione UTM (''+proj=utm'') richiede ''+zone=...'' parametro."
 
@@ -4140,9 +4207,6 @@ msgstr "L''URL contiene un frammento non valido: {0}"
 msgid "URL validator"
 msgstr "Validatore di URL"
 
-msgid "Addresses"
-msgstr "Indirizzi"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Ricerca errori negli indirizzi e nelle relazioni di strada associata "
@@ -4339,9 +4403,6 @@ msgstr "Nodi dei percorsi duplicati."
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Ricerca percorsi con nodi consecutivi identici."
 
-msgid "Highways"
-msgstr "Strade"
-
 msgid "Performs semantic checks on highways."
 msgstr "Compie dei controlli semantici sulle strade."
 
@@ -4924,9 +4985,6 @@ msgstr "corso d''acqua di tipo {0}"
 msgid "boundary type {0}"
 msgstr "tipo confine {0}"
 
-msgid "building"
-msgstr "edificio"
-
 msgid "area"
 msgstr "area"
 
@@ -5048,45 +5106,15 @@ msgstr "Non mostrare di nuovo (questa sessione)"
 msgid "Do not show again (remembers choice)"
 msgstr "Non visualizzare nuovamente (ricorda la scelta)"
 
-msgid "incomplete"
-msgstr "incompleto"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Numero civico {0} di {1}"
-
-msgid "House number {0}"
-msgstr "Numero civico {0}"
-
-msgid "highway"
-msgstr "strada"
-
-msgid "railway"
-msgstr "Ferrovia"
-
-msgid "waterway"
-msgstr "Corso d’acqua"
-
-msgid "landuse"
-msgstr "Uso del terreno"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nodo"
-msgstr[1] "{0} nodi"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membro"
-msgstr[1] "{0} membri"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorato un indirizzo URL malformato: \"{0}\""
 
-msgid "public transport"
-msgstr "trasporto pubblico"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorato un indirizzo URL di file malformato: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Gruppo di modifiche {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Il parametro \"downloadgps\" non accetta nomi di file o indirizzi URL di file"
 
 msgid "Precondition violation"
 msgstr "Violazione della precondizione"
@@ -5178,6 +5206,70 @@ msgstr ""
 "Era atteso un valore non vuoto per il parametro ''''{0}'''', ottenuto "
 "''''{1}''''"
 
+msgid "Outdated Java version"
+msgstr "Versione Java obsoleta"
+
+msgid "Update Java"
+msgstr "Aggiornare Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Si sta eseguendo la versione {0} di Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Questa versione non è più supportata da {0} dal {1} e non è più consigliato "
+"il suo utilizzo."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM a breve non funzionerà più con questa versione; si consiglia vivamente "
+"di aggiornare a Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Si desidera aggiornare adesso ?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Esecuzione del collegamento iniziale alla piattaforma"
+
+msgid "Building main menu"
+msgstr "Creazione del menu principale"
+
+msgid "Updating user interface"
+msgstr "Aggiornamento dell''interfaccia utente"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inizializzazione interna dati dei confini"
+
+msgid "Initializing OSM API"
+msgstr "Inizializzazione delle API di OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Inizializzazione interna dati traffico"
+
+msgid "Initializing validator"
+msgstr "Inizializzazione del validatore"
+
+msgid "Initializing presets"
+msgstr "Inizializzazione delle preimpostazioni"
+
+msgid "Initializing map styles"
+msgstr "Inizializzazione degli stili della mappa"
+
+msgid "Loading imagery preferences"
+msgstr "Caricamento delle preferenze delle immagini aeree"
+
 msgid "usage"
 msgstr "uso"
 
@@ -5687,6 +5779,81 @@ msgstr ""
 "Il valore corrente non è un indice di tassello valido per il livello di "
 "ingrandimento dato"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Ci si è imbattuti in un bug di JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr "Informazioni di debug"
+
+msgid "Manually report at:"
+msgstr "Inviarle manualmente a:"
+
+msgid "Is JOSM up to date?"
+msgstr "JOSM è aggiornato?"
+
+msgid "Send bug report"
+msgstr "Invia la segnalazione su un bug"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Segnala bug"
+
+msgid "Suppress this error for this session."
+msgstr "Ignora l''errore durante questa sessione."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Non mostrare più le finestre di errore in questa sessione."
+
+msgid "Ignore this error."
+msgstr "Ignora quest''errore."
+
+msgid "Include the system status report."
+msgstr "Includi informazioni sullo stato del computer."
+
+msgid "Include information about the data you were working on."
+msgstr ""
+"Includi informazioni sui dati in elaborazione al momento del verificarsi del "
+"problema."
+
+msgid "Include all stack traces."
+msgstr "Includi tutto il contenuto dello stack del programma."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "La versione di JOSM sul tuo computer è {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM sta cercando gli aggiornamenti..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr "JOSM è aggiornato."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Aggiorna JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Sfondo conflitto: nessun conflitto"
 
@@ -6478,6 +6645,22 @@ msgstr ""
 "oggetti incompleti vengono rimossi. Si desidera copiare i dati privi degli "
 "oggetti incompleti?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Si desidera incollare queste etichette?"
+
+msgid "Clear buffer"
+msgstr "Cancella buffer"
+
+msgid "Ignore warnings"
+msgstr "Ignora avvertimenti"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Spiacenti, non è possibile incollare le etichette dal buffer. Non "
+"contiene alcun oggetto JOSM o testo adatto. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Solamente per gli oggetti selezionati"
 
@@ -7092,9 +7275,6 @@ msgstr "Sorgente"
 msgid "Title:"
 msgstr "Titolo:"
 
-msgid "URL:"
-msgstr "Indirizzo URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Stile interno, percorso interno:"
 
@@ -7210,9 +7390,6 @@ msgstr ""
 "Specificato ID lista non valido\n"
 "Impossibile continuare."
 
-msgid "Relations"
-msgstr "Relazioni"
-
 msgid "Open a list of all relations."
 msgstr "Apri una lista di tutte le relazioni"
 
@@ -8767,28 +8944,6 @@ msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 "Per la longitudine è richiesto un valore nell''intervallo [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Sorgenti dati e tipi:"
-
-msgid "OpenStreetMap data"
-msgstr "Dati OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Selezionare per scaricare i dati OSM presenti nell''area di scarico "
-"selezionata."
-
-msgid "Raw GPS data"
-msgstr "Dati GPS grezzi"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Selezionare per scaricare i tracciati GPS presenti nell''area di scarico "
-"selezionata."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Selezionare per scaricare le note dell''area evidenziata."
-
 msgid "Download as new layer"
 msgstr "Scarica come nuovo livello"
 
@@ -8825,32 +8980,12 @@ msgstr ""
 "frecce oppure il pulsante destro del mouse per scorrere la mappa, la "
 "rotellina oppure +/- per cambiare il livello di ingrandimento."
 
-msgid "No area selected yet"
-msgstr "Nessuna area ancora selezionata"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Area da scaricare troppo grande; probabilmente la richiesta sarà rifiutata "
-"dal server"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Area da scaricare corretta, sarà probabilmente accettata dal server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Clicca per chiudere la finestra e per annullare lo scaricamento"
 
 msgid "Click to download the currently selected area"
 msgstr "Clicca per scaricare l''area attualmente selezionata"
 
-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>Né <strong>{0}</strong> né <strong>{1}</strong> e né "
-"<strong>{2}</strong> è abilitato.<br>Si prega di scegliere di scaricare i "
-"dati OSM, o dati GPX, o Notes, o tutti.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Scarica oggetti collegati (relazioni padre)"
 
@@ -8874,6 +9009,97 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr "Scarica oggetti collegati (relazioni padre e percorsi)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Sorgenti dati e tipi:"
+
+msgid "OpenStreetMap data"
+msgstr "Dati OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Selezionare per scaricare i dati OSM presenti nell''area di scarico "
+"selezionata."
+
+msgid "Raw GPS data"
+msgstr "Dati GPS grezzi"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Selezionare per scaricare i tracciati GPS presenti nell''area di scarico "
+"selezionata."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Selezionare per scaricare le note dell''area evidenziata."
+
+msgid "Please select a download area first."
+msgstr "Selezionare prima un''area di scarico."
+
+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>Né <strong>{0}</strong> né <strong>{1}</strong> e né "
+"<strong>{2}</strong> è abilitato.<br>Si prega di scegliere di scaricare i "
+"dati OSM, o dati GPX, o Notes, o tutti.</html>"
+
+msgid "No area selected yet"
+msgstr "Nessuna area ancora selezionata"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Area da scaricare troppo grande; probabilmente la richiesta sarà rifiutata "
+"dal server"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Area da scaricare corretta, sarà probabilmente accettata dal server"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "storia"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8916,9 +9142,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Errore di analisi"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9536,6 +9759,18 @@ msgstr "Autentica con il nome utente e password forniti"
 msgid "Cancel authentication"
 msgstr "Annulla autenticazione"
 
+msgid "Question"
+msgstr "Domanda"
+
+msgid "Message"
+msgstr "Messaggio"
+
+msgid "Enter text"
+msgstr "Inserire il testo"
+
+msgid "Installing plugins"
+msgstr "Installazione estensioni"
+
 msgid "Downloading file"
 msgstr "Scaricamento file"
 
@@ -10123,10 +10358,6 @@ msgstr "Seleziona gli oggetti da caricare"
 msgid "Cancel uploading"
 msgstr "Annulla il caricamento"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Valore inatteso per la chiave ''{0}'' nelle preferenze, ottenuto ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Riempi un gruppo di modifiche e ritorna alla finestra di caricamento"
 
@@ -10219,6 +10450,191 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} oggetto da eliminare:"
 msgstr[1] "{0} oggetti da eliminare:"
 
+msgid "All Formats"
+msgstr "Tutti i formati"
+
+msgid "Could not export ''{0}''."
+msgstr "Impossibile esportare ''''{0}''''."
+
+msgid "Could not import ''{0}''."
+msgstr "Impossibile importare ''''{0}''''."
+
+msgid "Could not import files."
+msgstr "Impossibile importare i file."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Impossibile leggere il file ''{0}''.<br>L''errore è:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Impossibile leggere i file.<br>L''errore è:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "File GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Livello ''{0}'' non supportato"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: la GPL non è compatibile con la licenza di OSM. Non caricare tracce "
+"con licenza GPL."
+
+msgid "GPS track description"
+msgstr "descrizione della traccia GPS"
+
+msgid "Add author information"
+msgstr "Aggiungi informazioni sull’autore"
+
+msgid "Real name"
+msgstr "Nome reale"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Diritto d’autore (URL)"
+
+msgid "Predefined"
+msgstr "Predefinito"
+
+msgid "Copyright year"
+msgstr "Copyright anno"
+
+msgid "Keywords"
+msgstr "Parole chiave"
+
+msgid "Export options"
+msgstr "Opzioni di esportazione"
+
+msgid "Export and Save"
+msgstr "Esporta e Salva"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Errore nella esportazione di {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Scegliere una licenza predefinita"
+
+msgid "GPX Files"
+msgstr "Files GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Analisi dei dati fallita per il livello ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"È stato generato un errore durante l''analisi dei dati gpx data per il "
+"livello ''{0}''. Sarà disponibile soltanto una parte del file."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"È stato generato un errore durante l''analisi del file gpx ''{0}''. Sarà "
+"disponibile soltanto una parte del file."
+
+msgid "Image Files"
+msgstr "File immagine"
+
+msgid "folder"
+msgstr "cartella"
+
+msgid "Looking for image files"
+msgstr "Ricerca dei file immagine"
+
+msgid "No image files found."
+msgstr "Non è stato trovato alcun file immagine."
+
+msgid "NMEA-0183 Files"
+msgstr "Files NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordinate importate: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Sentenza malformata: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Errori di checksum: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Sentenze non conosciute: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Coordinate a zero: {0}"
+
+msgid "NMEA import success:"
+msgstr "Importazione NMEA riuscita:"
+
+msgid "NMEA import failure!"
+msgstr "Importazione NMEA non riuscita!"
+
+msgid "Note Files"
+msgstr "File delle note"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "File compressi bzip2 del server OSM"
+
+msgid "OsmChange File"
+msgstr "File OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "il file \"{0}\" non esiste"
+
+msgid "No data found in file {0}."
+msgstr "Nessun dato trovato nel file {0}."
+
+msgid "Open OsmChange file"
+msgstr "Apri file OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Server dei File di OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>È stato generato un errore durante il salvataggio.<br>L''errore "
+"è:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>È stato generato un errore durante il ripristino del file della copia "
+"di sicurezza.<br>L''errore è:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "File compressi gzip del server OSM"
+
+msgid "Invalid dataset"
+msgstr "Insieme di dati non valido"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nessun dato trovato per il livello ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nessun dato trovato nel file ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Apri file OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "File WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versione del file WMS non supportata; trovata {0}, attesa {1}"
+
 msgid "Native projections"
 msgstr "Proiezioni native"
 
@@ -10330,6 +10746,37 @@ msgstr "Non mostrare più questo messaggio"
 msgid "Hide this message and never show it again"
 msgstr "Nascondi questo messaggio e non visualizzarlo più"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Impossibile creare la cartella {0}, il salvataggio automatico sarà "
+"disabilitato"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Impossibile creare il file {0}, sarà utilizzato un altro nome"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Errore di IO durante la creazione del file, il salvataggio automatico sarà "
+"tralasciato: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Impossibile eliminare il vecchio file di backup {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Il proprio lavoro è stato salvato automaticamente."
+
+msgid "Restoring files"
+msgstr "Ripristino dei file in corso"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Impossibile cancellare il file di backup {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Impossibile cancellare il file PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Impossibile cancellare il file di backup archiviato {0}"
+
 msgid "Customize Color"
 msgstr "Personalizza colori"
 
@@ -10433,6 +10880,9 @@ msgstr "Note totali:"
 msgid "Changes need uploading?"
 msgstr "Le modifiche devono essere caricate?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "al di fuori dell''area scaricata"
 
@@ -10508,6 +10958,9 @@ msgstr "Errori di verifica"
 msgid "No validation errors"
 msgstr "Nessun errore individuato"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Imposta segnalibro WMS"
 
@@ -11134,9 +11587,6 @@ msgstr "(URL: "
 msgid "Select the map painting styles"
 msgstr "Seleziona gli stili di disegno della mappa"
 
-msgid "loading style ''{0}''..."
-msgstr "caricamento dello stile ''{0}'' in corso..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11152,6 +11602,9 @@ msgstr[1] ""
 "Selezionare ''Informazioni'' dal menu contestuale (tasto destro del mouse) "
 "per i dettagli."
 
+msgid "loading style ''{0}''..."
+msgstr "caricamento dello stile ''{0}'' in corso..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Fallito il caricamento degli stili Mappaint da ''{0}''. L''eccezione è "
@@ -11712,27 +12165,6 @@ msgstr "Scarica estensioni"
 msgid "Icon paths:"
 msgstr "Percorsi delle icone:"
 
-msgid "Short Description:"
-msgstr "Breve descrizione:"
-
-msgid "Author:"
-msgstr "Autore:"
-
-msgid "Webpage:"
-msgstr "Pagina internet:"
-
-msgid "Description:"
-msgstr "Descrizione:"
-
-msgid "Version:"
-msgstr "Versione:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versione minima di JOSM"
-
-msgid "by {0}"
-msgstr "da {0}"
-
 msgid "Name (optional):"
 msgstr "Nome (opzionale):"
 
@@ -12943,21 +13375,6 @@ msgstr ""
 "Attenzione: formato non valido della voce nella lista degli stili "
 "''''{0}''''. Ottenuto ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "Predefinito JOSM (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Stile interno da utilizzare come base per gli stili di copertura "
-"intercambiabili durante l''esecuzione"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "lo stile principale di Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Impostazioni della mappa"
 
@@ -13065,12 +13482,6 @@ msgstr ""
 "Attenzione: formato non valido della voce nella lista della preimpostazione "
 "''{0}''. Ottenuto ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Preimpostazione interna"
-
-msgid "The default preset for JOSM"
-msgstr "La preimpostazione predefinita per JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "L''estensione {0} è ancora richiesta da questa''estensione:"
@@ -13585,9 +13996,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Fallito l''ottenimento delle credenziali OSM dal gestore delle credenziali."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Il gestore delle credenziali corrente è di tipo ''''{0}''''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Fallito il salvataggio delle credenziali OSM sul gestore delle credenziali."
@@ -13608,16 +14016,6 @@ msgstr ""
 "Specifica il numero dei giorni prima che una nota debba esser chiusa e non "
 "più scaricabile"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Fallito l''ottenimento del token di accesso OAuth dal gestore delle "
-"credenziali"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Fallita la memorizzazione del token di accesso OAuth nel gestore delle "
-"credenziali"
-
 msgid "Save to preferences"
 msgstr "Salva sulle preferenze"
 
@@ -13826,69 +14224,6 @@ msgstr ""
 "Attenzione: formato non valido dell''elemento nella lista di regole ''{0}''. "
 "Ottenuto ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Ricerca errori sugli indirizzi"
-
-msgid "Tag combinations"
-msgstr "Combinazioni di etichette"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Ricerca le etichette mancanti o le combinazioni sospette"
-
-msgid "Deprecated features"
-msgstr "Caratteristiche deprecate"
-
-msgid "Checks for deprecated features"
-msgstr "Ricerca le caratteristiche deprecate"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Ricerca gli errori geometrici"
-
-msgid "Checks for errors on highways"
-msgstr "Ricerca gli errori sulle strade"
-
-msgid "Multiple values"
-msgstr "Valori multipli"
-
-msgid "Checks for wrong multiple values"
-msgstr "Ricerca valori multipli errati"
-
-msgid "Numeric values"
-msgstr "Valori numerici"
-
-msgid "Checks for wrong numeric values"
-msgstr "Ricerca i valori numerici errati"
-
-msgid "Religion"
-msgstr "Religione"
-
-msgid "Checks for errors on religious objects"
-msgstr "Ricerca gli errori sugli oggetti di culto"
-
-msgid "Checks for errors on relations"
-msgstr "Ricerca gli errori sulle relazioni"
-
-msgid "Territories"
-msgstr "Territori"
-
-msgid "Checks for territories-specific features"
-msgstr "Controlla caratteristiche specifiche di un territorio"
-
-msgid "Unnecessary tags"
-msgstr "Etichette non necessarie"
-
-msgid "Checks for unnecessary tags"
-msgstr "Ricerca le etichette non necessarie"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Ricerca le etichette su wikipedia errate"
-
 msgid "Tag checker rules"
 msgstr "Regole controllo etichette"
 
@@ -14152,6 +14487,39 @@ msgstr "Tutti i file (*.*)"
 msgid "Received error page:"
 msgstr "Pagina errore ricevuta:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"La preferenza con chiave ''{0}'' non include ''{1}''. Non è possibile "
+"ripristinare le dimensioni e la posizione della finestra dalle preferenze."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"La preferenza con chiave ''{0}'' non fornisce un valore intero per ''{1}''. "
+"Ottenuto {2}. Non è possibile ripristinare le dimensioni e la posizione "
+"della finestra dalle preferenze."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Non è stato possibile analizzare il campo ''{1}'' nella preferenza con "
+"chiave ''{0}''. L''eccezione è stata: {2}. Non è possibile ripristinare le "
+"dimensioni e la posizione della finestra dalle preferenze."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"La preferenza con chiave ''{0}'' non esiste. Non è possibile ripristinare le "
+"dimensioni e la posizione della finestra dalle preferenze."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignoro le dimensioni e la posizione malformata: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitudine min."
 
@@ -14287,9 +14655,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "il membro eliminato {0} è utilizzato dalla relazione {1}"
 
-msgid "All Formats"
-msgstr "Tutti i formati"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Scaricamento dei punti da {0} a {1} in corso..."
 
@@ -14422,95 +14787,6 @@ msgstr "Analisi della risposta proveniente dal server..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Elemento XML inaspettato con nome ''''{0}''''"
 
-msgid "Could not export ''{0}''."
-msgstr "Impossibile esportare ''''{0}''''."
-
-msgid "Could not import ''{0}''."
-msgstr "Impossibile importare ''''{0}''''."
-
-msgid "Could not import files."
-msgstr "Impossibile importare i file."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Impossibile leggere il file ''{0}''.<br>L''errore è:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Impossibile leggere i file.<br>L''errore è:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "File GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Livello ''{0}'' non supportato"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: la GPL non è compatibile con la licenza di OSM. Non caricare tracce "
-"con licenza GPL."
-
-msgid "GPS track description"
-msgstr "descrizione della traccia GPS"
-
-msgid "Add author information"
-msgstr "Aggiungi informazioni sull’autore"
-
-msgid "Real name"
-msgstr "Nome reale"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Diritto d’autore (URL)"
-
-msgid "Predefined"
-msgstr "Predefinito"
-
-msgid "Copyright year"
-msgstr "Copyright anno"
-
-msgid "Keywords"
-msgstr "Parole chiave"
-
-msgid "Export options"
-msgstr "Opzioni di esportazione"
-
-msgid "Export and Save"
-msgstr "Esporta e Salva"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Errore nella esportazione di {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Scegliere una licenza predefinita"
-
-msgid "GPX Files"
-msgstr "Files GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Analisi dei dati fallita per il livello ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"È stato generato un errore durante l''analisi dei dati gpx data per il "
-"livello ''{0}''. Sarà disponibile soltanto una parte del file."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"È stato generato un errore durante l''analisi del file gpx ''{0}''. Sarà "
-"disponibile soltanto una parte del file."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 "Errore di scansione: struttura del documento non valida per un documento gpx"
@@ -14521,18 +14797,6 @@ msgstr "(alla linea {0}, colonna {1})"
 msgid "Unknown mode {0}."
 msgstr "Modalità {0} sconosciuta."
 
-msgid "Image Files"
-msgstr "File immagine"
-
-msgid "folder"
-msgstr "cartella"
-
-msgid "Looking for image files"
-msgstr "Ricerca dei file immagine"
-
-msgid "No image files found."
-msgstr "Non è stato trovato alcun file immagine."
-
 msgid "get number of unread messages"
 msgstr "ottieni numero di messaggi non letti"
 
@@ -14587,36 +14851,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "Il server ha risposto con il codice 404 per l''identificativo {0}. Tralascio."
 
-msgid "NMEA-0183 Files"
-msgstr "Files NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordinate importate: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Sentenza malformata: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Errori di checksum: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Sentenze non conosciute: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Coordinate a zero: {0}"
-
-msgid "NMEA import success:"
-msgstr "Importazione NMEA riuscita:"
-
-msgid "NMEA import failure!"
-msgstr "Importazione NMEA non riuscita!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Eccezione del puntatore nullo, è probabile che manchino alcuni tag."
 
-msgid "Note Files"
-msgstr "File delle note"
-
 msgid "OSM API"
 msgstr "API OSM"
 
@@ -14716,9 +14953,6 @@ msgstr "(Code={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Il server ha restituito un errore con codice {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "File compressi bzip2 del server OSM"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Il prologo del documento OsmChange è stato già scritto. Si prega di "
@@ -14729,18 +14963,6 @@ msgstr ""
 "Il prologo del documento OsmChange non è ancora stato scritto. Si prega "
 "prima di scriverlo."
 
-msgid "OsmChange File"
-msgstr "File OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "il file \"{0}\" non esiste"
-
-msgid "No data found in file {0}."
-msgstr "Nessun dato trovato nel file {0}."
-
-msgid "Open OsmChange file"
-msgstr "Apri file OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versione non supportata: {0}"
 
@@ -14800,39 +15022,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valore inatteso per la preferenza ''{0}''. Ottenuto ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Server dei File di OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>È stato generato un errore durante il salvataggio.<br>L''errore "
-"è:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>È stato generato un errore durante il ripristino del file della copia "
-"di sicurezza.<br>L''errore è:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "File compressi gzip del server OSM"
-
 msgid "Parsing OSM history data ..."
 msgstr "Analisi dei dati della cronologia OSM ..."
 
-msgid "Invalid dataset"
-msgstr "Insieme di dati non valido"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nessun dato trovato per il livello ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nessun dato trovato nel file ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Apri file OSM"
-
 msgid "Reading was canceled"
 msgstr "La lettura è stata annullata"
 
@@ -14980,6 +15172,9 @@ msgstr "Connessione al server in corso..."
 msgid "Downloading OSM notes..."
 msgstr "Scaricamento note OSM..."
 
+msgid "Downloading data..."
+msgstr "Scaricamento dei dati..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -15043,14 +15238,9 @@ msgstr "È stato trovato un identificativo 0 non atteso per una primitiva osm"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Scaricamento dei dati..."
-
-msgid "WMS Files (*.wms)"
-msgstr "File WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versione del file WMS non supportata; trovata {0}, attesa {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Valore inatteso per la chiave ''{0}'' nelle preferenze, ottenuto ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} byte sono stati letti"
@@ -16235,37 +16425,6 @@ msgstr "URL in apertura: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "L''indirizzo URL non contiene {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versione Java obsoleta"
-
-msgid "Update Java"
-msgstr "Aggiornare Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Si sta eseguendo la versione {0} di Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Questa versione non è più supportata da {0} dal {1} e non è più consigliato "
-"il suo utilizzo."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM a breve non funzionerà più con questa versione; si consiglia vivamente "
-"di aggiornare a Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Si desidera aggiornare adesso ?"
-
 msgid "reserved"
 msgstr "riservato"
 
@@ -16338,22 +16497,6 @@ msgstr "Caratteri sospetti nella chiave:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Il valore è troppo lungo (max {0} caratteri):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Si desidera incollare queste etichette?"
-
-msgid "Clear buffer"
-msgstr "Cancella buffer"
-
-msgid "Ignore warnings"
-msgstr "Ignora avvertimenti"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Spiacenti, non è possibile incollare le etichette dal buffer. Non "
-"contiene alcun oggetto JOSM o testo adatto. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Impossibile cancellare il file {0}"
 
@@ -16377,123 +16520,15 @@ msgid_plural "days"
 msgstr[0] "giorno"
 msgstr[1] "giorni"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"La preferenza con chiave ''{0}'' non include ''{1}''. Non è possibile "
-"ripristinare le dimensioni e la posizione della finestra dalle preferenze."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"La preferenza con chiave ''{0}'' non fornisce un valore intero per ''{1}''. "
-"Ottenuto {2}. Non è possibile ripristinare le dimensioni e la posizione "
-"della finestra dalle preferenze."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Non è stato possibile analizzare il campo ''{1}'' nella preferenza con "
-"chiave ''{0}''. L''eccezione è stata: {2}. Non è possibile ripristinare le "
-"dimensioni e la posizione della finestra dalle preferenze."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"La preferenza con chiave ''{0}'' non esiste. Non è possibile ripristinare le "
-"dimensioni e la posizione della finestra dalle preferenze."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignoro le dimensioni e la posizione malformata: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Fallito il caricamento dello schema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Ci si è imbattuti in un bug di JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr "Informazioni di debug"
-
-msgid "Manually report at:"
-msgstr "Inviarle manualmente a:"
-
-msgid "Is JOSM up to date?"
-msgstr "JOSM è aggiornato?"
-
-msgid "Send bug report"
-msgstr "Invia la segnalazione su un bug"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Segnala bug"
-
-msgid "Suppress this error for this session."
-msgstr "Ignora l''errore durante questa sessione."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Non mostrare più le finestre di errore in questa sessione."
-
-msgid "Ignore this error."
-msgstr "Ignora quest''errore."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Non è stato possibile avviare la segnalazione bug automatica. L''operazione "
 "dovrà essere svolta manualmente tramite il sito:"
 
-msgid "Include the system status report."
-msgstr "Includi informazioni sullo stato del computer."
-
-msgid "Include information about the data you were working on."
-msgstr ""
-"Includi informazioni sui dati in elaborazione al momento del verificarsi del "
-"problema."
-
-msgid "Include all stack traces."
-msgstr "Includi tutto il contenuto dello stack del programma."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "La versione di JOSM sul tuo computer è {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM sta cercando gli aggiornamenti..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr "JOSM è aggiornato."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Aggiorna JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20257,9 +20292,6 @@ msgstr "Contenuto del cartello"
 msgid "notice"
 msgstr "avviso"
 
-msgid "history"
-msgstr "storia"
-
 msgid "nature"
 msgstr "natura"
 
@@ -20840,6 +20872,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Struttura di assistenza continua (casa di riposo...)"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -23283,6 +23318,9 @@ msgstr "Regali"
 msgid "Variety Store"
 msgstr "Articoli a basso costo (\"tutto a ...\")"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Allibratore"
 
@@ -24160,6 +24198,78 @@ msgstr "Commerciale (uffici)"
 msgid "Industrial"
 msgstr "Industriale"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Box per auto multipli"
 
@@ -24860,6 +24970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25613,6 +25726,9 @@ msgstr "Catasto"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25724,15 +25840,6 @@ msgstr "Old map of Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Antenne (10 cm)"
 
@@ -34213,16 +34320,22 @@ msgstr "con il valore precedente (mtime invariato)"
 msgid "Photo Geotagging Plugin"
 msgstr "Estensione per la georeferenziazione delle foto"
 
-msgid "Writing position information to image files..."
-msgstr ""
-"Scrittura delle informazioni relative alla posizione sui file immagine..."
-
 msgid "Could not read mtime."
 msgstr "Impossibile leggere mtime."
 
 msgid "Could not write mtime."
 msgstr "Impossibile scrivere mtime."
 
+msgid "Writing position information to image files..."
+msgstr ""
+"Scrittura delle informazioni relative alla posizione sui file immagine..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Il file non può essere eliminato!"
 
@@ -34732,6 +34845,9 @@ msgstr "Correggi errore"
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34740,6 +34856,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ja.po b/i18n/po/ja.po
index f844ae2..2cfdd13 100644
--- a/i18n/po/ja.po
+++ b/i18n/po/ja.po
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-06-04 15:25+0000\n"
-"Last-Translator: fujimoto <fujimoto at internet.ne.jp>\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-24 06:37+0000\n"
+"Last-Translator: caesium <Unknown>\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-08-13 04:49+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:49+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "X-Poedit-Country: JAPAN\n"
 "Language: ja\n"
@@ -61,54 +61,9 @@ msgstr "背景利用規約"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "リンクを開く操作は、このプラットフォームでは対応していません(''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "プラットフォームスタートアップフックを実行中"
-
-msgid "Building main menu"
-msgstr "メインメニュー作成中"
-
-msgid "Help"
-msgstr "ヘルプ"
-
-msgid "Initializing internal boundaries data"
-msgstr "内部の境界線データを初期化中"
-
-msgid "Initializing OSM API"
-msgstr "OSM APIを初期化中"
-
-msgid "Initializing internal traffic data"
-msgstr "内部の交通データを初期化中"
-
-msgid "Initializing validator"
-msgstr "妥当性検査を初期化中"
-
-msgid "Initializing presets"
-msgstr "プリセット初期化中"
-
-msgid "Initializing map styles"
-msgstr "地図スタイルを初期化中"
-
-msgid "Loading imagery preferences"
-msgstr "画像設定を読み込み中"
-
-msgid "Updating user interface"
-msgstr "ユーザーインターフェースを更新中"
-
 msgid "Failed to save default preferences."
 msgstr "既定の設定の保存に失敗しました。"
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "不正な形式のURL \"{0}\" を無視します。"
-
-msgid "Warning"
-msgstr "警告"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "不正な形式のファイルURL \"{0}\" を無視します。"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "パラメーター \"downloadgps\" がファイル名もしくはURLとして有効ではありません"
-
 msgid "About"
 msgstr "バージョン情報"
 
@@ -185,6 +140,9 @@ msgstr "キャンセル"
 msgid "Click to abort launching external browsers"
 msgstr "外部ブラウザーの起動を中断するならばクリックしてください"
 
+msgid "Warning"
+msgstr "警告"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "1つ以上のアップロード済みのノード・ウェイ・リレーションを選択してください。"
 
@@ -463,23 +421,17 @@ msgstr ""
 "* 3つのノード\n"
 "のいずれかを選択してください。"
 
-msgid "Download from OSM..."
-msgstr "OSMからダウンロード..."
-
-msgid "Download map data from the OSM server."
-msgstr "地図データをOSMサーバーからダウンロードします。"
+msgid "Download data"
+msgstr "データのダウンロード"
 
-msgid "Please select a download area first."
-msgstr "最初にダウンロード領域を選択してください。"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr "<html>この操作には、{0}回の独立したダウンロードリクエストを<br>必要とします。続けますか?</html>"
 
-msgid "Download data"
-msgstr "データのダウンロード"
-
 msgid "Download notes in current view"
 msgstr "現在のビューにメモをダウンロード"
 
@@ -546,6 +498,9 @@ msgstr "エクスポートするものがありません。最初にデータを
 msgid "Export GPX file"
 msgstr "GPX ファイルをエクスポート"
 
+msgid "Help"
+msgstr "ヘルプ"
+
 msgid "History"
 msgstr "履歴"
 
@@ -1055,23 +1010,6 @@ msgstr "<html>すべての選択されたウェイが同じ方向にそろえら
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "角度が約90度または180度のウェイを選択してください。"
 
-msgid "Download from Overpass API ..."
-msgstr "Overpass APIからダウンロード..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Overpass API サーバーから地図データをダウンロードします。"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "貼り付け"
 
@@ -1497,8 +1435,7 @@ 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!"
@@ -1920,7 +1857,7 @@ msgid_plural ""
 msgstr[0] "<strong>{0}</strong> をクリックしてサーバー上のこのオブジェクトの状態をチェック。"
 
 msgid "Click <strong>{0}</strong> to ignore.</html>"
-msgstr "<strong>{0}</strong> をクリックして無視。</html>"
+msgstr "無視するには<strong>{0}</strong>をクリックしてください。</html>"
 
 msgid "Deleted or moved objects"
 msgstr "削除または移動されたオブジェクト"
@@ -2251,7 +2188,7 @@ msgstr "選択をリレーションに追加"
 msgid ""
 "{0}Add selection to relation{1}: Verify every single relation to avoid "
 "damage!"
-msgstr ""
+msgstr "{0}選択中のものをリレーションへ追加しました{1}。すべての単一のリレーションが破損していないかを確認してください。"
 
 msgid "Add selection to {0} relation"
 msgid_plural "Add selection to {0} relations"
@@ -2331,36 +2268,6 @@ msgstr "リレーション選択(追加)"
 msgid "Select relation"
 msgstr "リレーションを選択"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "検索..."
 
@@ -2416,7 +2323,7 @@ msgid "Selection settings"
 msgstr ""
 
 msgid "Additional settings"
-msgstr ""
+msgstr "その他の設定"
 
 msgid "Search syntax"
 msgstr ""
@@ -2425,7 +2332,7 @@ msgid "Invalid search expression"
 msgstr "検索条件が無効です"
 
 msgid "Search by preset"
-msgstr ""
+msgstr "プリセットで検索"
 
 msgid "Filter"
 msgstr "フィルター"
@@ -2449,7 +2356,7 @@ msgstr ""
 " {0}"
 
 msgid "Search hints"
-msgstr ""
+msgstr "ヒントを検索"
 
 msgid "basics"
 msgstr "基本"
@@ -2651,92 +2558,6 @@ msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
 msgstr[0] "{0}件のオブジェクトを検索中"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"正規表現 \"{0}\" は、オフセット {1} に区切りエラーがあります。全エラーメッセージは:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"正規表現\"{0}\"に構文エラー、詳細は:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "タイムスタンプ ''{0}'' を解釈できません"
-
-msgid "Expecting {0} after {1}"
-msgstr "{1}の後に{0}が来るべきです"
-
-msgid "Range of primitive ids expected"
-msgstr "プリミティブIDの範囲の指定が必要です"
-
-msgid "Range of changeset ids expected"
-msgstr "変更セットIDの範囲の指定が必要です"
-
-msgid "Range of versions expected"
-msgstr "バージョンの範囲の指定が必要です"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "タグオペレーターを使っている時は、キーは空ではいけません。例えば、こうしてください: key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "プリミティブの種類が不明です: {0}. 許される値は、\"node\", \"way\" そして \"relation\"です。"
-
-msgid "Positive integer expected"
-msgstr "正の整数が必要です"
-
-msgid "Range of numbers expected"
-msgstr "数値の範囲が必要です"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "予期しないトークンです。{0}が必要な場所に{1}がありました。"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "MapCSS セレクタの解析に失敗しました"
-
-msgid "Unexpected token: {0}"
-msgstr "予想外のトークン: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "ORのパラメータが見つかりません"
-
-msgid "Missing parameter for XOR"
-msgstr "XORのパラメーターがありません"
-
-msgid "Missing operator for NOT"
-msgstr "NOTに対する演算子が見つかりません"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "削除されたオブジェクト {1} のタグ ''{0}'' の値は自動的に削除されます"
 
@@ -2754,9 +2575,6 @@ msgstr "ウェイ{1}に{0}件のノードがあり、最大数を超えていま
 msgid "API Capabilities Violation"
 msgstr "API機能違反"
 
-msgid "Cyclic dependency between relations:"
-msgstr "リレーション間の循環依存:"
-
 msgid "Removed obsolete tags"
 msgstr "古い形式のタグが削除されました"
 
@@ -3097,59 +2915,12 @@ msgstr "リレーション内でのロール"
 msgid "Automatic tag correction"
 msgstr "自動タグ修正"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "ディレクトリ {0}を作成することができません。自動保存は無効となります。"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "ファイル {0}を作成することができません。他のファイル名が使用されます。"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "ファイル作成中にIOエラーが発生、自動保存はスキップされます: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "古いバックアップファイル{0}が削除できません。"
-
-msgid "Your work has been saved automatically."
-msgstr "作業内容が自動的に保存されました。"
-
-msgid "Restoring files"
-msgstr "ファイルを復元中"
-
-msgid "Unable to delete backup file {0}"
-msgstr "バックアップファイル {0} を削除できません"
-
-msgid "Unable to delete PID file {0}"
-msgstr "PIDファイル {0} を削除できません"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "アーカイブされたバックアップファイル {0} を削除できません"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "誤った緯度の値 ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "誤った経度の値 ''{0}''"
 
-msgid "Question"
-msgstr "質問"
-
-msgid "Message"
-msgstr "メッセージ"
-
-msgid "Enter text"
-msgstr "テキストを入力"
-
-msgid "Installing plugins"
-msgstr "プラグインをインストール中"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>設定ファイルから<b>{0}</b>の設定項目を追加しようとしていますが、<br/>現時点で既定値が分かりません。<br/>関係する機能を有効"
-"にしてからもう一度インポートをしてください。"
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "キャッシュディレクトリ{0}の作成に失敗しました"
 
@@ -3241,6 +3012,14 @@ msgstr "IPv6 ネットワークを有効にし、 IPv4 よりも IPv6 を優先
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "設定 {0} はもう使われていないので、除かれました。"
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>設定ファイルから<b>{0}</b>の設定項目を追加しようとしていますが、<br/>現時点で既定値が分かりません。<br/>関係する機能を有効"
+"にしてからもう一度インポートをしてください。"
+
 msgid "Metric"
 msgstr "メートル法"
 
@@ -3297,13 +3076,13 @@ 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 "{0}台のミラーサーバ"
@@ -3368,6 +3147,15 @@ msgid ""
 "identifier {2}"
 msgstr "正方形のタイルのみに対応しています。 TileMatrix identifier {2} のサーバが{0}x{1}を返しました。"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "認証マネージャーからOAuthアクセストークンの取得に失敗しました"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "現在の認証マネージャーは ''{0}'' の一種です"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "OAuthアクセストークンの認証マネージャーへの保存に失敗しました"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "IDは0より大きくなければなりませんが、{0}でした。"
 
@@ -3382,6 +3170,9 @@ msgstr "変更セットID > 0 は新しいプリミティブには割り当て
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "id=0 のプリミティブは非表示にできません"
 
+msgid "Cyclic dependency between relations:"
+msgstr "リレーション間の循環依存:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "プリミティブ {0} をデータセットに追加できません、既に含まれています"
@@ -3420,8 +3211,57 @@ msgstr "データの併合..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "{1}で''{0}''のテストが完了しました"
 
+msgid "incomplete"
+msgstr "不完全"
+
+msgid "House {0}"
+msgstr "{0}"
+
+msgid "House number {0} at {1}"
+msgstr "{1}{0}"
+
+msgid "House number {0}"
+msgstr "{0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "ノード"
+
+msgid "highway"
+msgstr "道路"
+
+msgid "railway"
+msgstr "鉄道"
+
+msgid "waterway"
+msgstr "水路"
+
+msgid "landuse"
+msgstr "土地利用"
+
+msgid "building"
+msgstr "建物"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0}個のノード"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0}件のメンバー"
+
+msgid "public transport"
+msgstr "公共交通"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "リレーション"
+
+msgid "Changeset {0}"
+msgstr "変更セット {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
+msgstr "<html>フィルター <code>{0}</code> のエラー:<br>{1}"
 
 msgid "Error in filter"
 msgstr "フィルタ内にエラー"
@@ -3452,18 +3292,10 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr "異なるIDのプリミティブはマージできません。こちらのIDは{0}です、相手は {1}です"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "ノード"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "ウェイ"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "リレーション"
-
 msgid "closedway"
 msgstr "閉じたウェイ"
 
@@ -3497,6 +3329,122 @@ msgstr "ID ''{0}'' のプリミティブとID ''{1}'' のプリミティブを
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "パラメーター {0} が 0..{1} の範囲外である {2} になっています。"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"正規表現 \"{0}\" は、オフセット {1} に区切りエラーがあります。全エラーメッセージは:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"正規表現\"{0}\"に構文エラー、詳細は:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "タイムスタンプ ''{0}'' を解釈できません"
+
+msgid "Expecting {0} after {1}"
+msgstr "{1}の後に{0}が来るべきです"
+
+msgid "Range of primitive ids expected"
+msgstr "プリミティブIDの範囲の指定が必要です"
+
+msgid "Range of changeset ids expected"
+msgstr "変更セットIDの範囲の指定が必要です"
+
+msgid "Range of versions expected"
+msgstr "バージョンの範囲の指定が必要です"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "タグオペレーターを使っている時は、キーは空ではいけません。例えば、こうしてください: key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "プリミティブの種類が不明です: {0}. 許される値は、\"node\", \"way\" そして \"relation\"です。"
+
+msgid "Positive integer expected"
+msgstr "正の整数が必要です"
+
+msgid "Range of numbers expected"
+msgstr "数値の範囲が必要です"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "MapCSS セレクタの解析に失敗しました"
+
+msgid "Unexpected token: {0}"
+msgstr "予想外のトークン: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "ORのパラメータが見つかりません"
+
+msgid "Missing parameter for XOR"
+msgstr "XORのパラメーターがありません"
+
+msgid "Missing operator for NOT"
+msgstr "NOTに対する演算子が見つかりません"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "予期しないトークンです。{0}が必要な場所に{1}がありました。"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "地図描画クラス ''{0}'' の読み込みに失敗しました。クラスが見つかりませんでした。"
 
@@ -3574,6 +3522,121 @@ msgstr "''{0}'' 要素が必要ですが、 ''{1}'' が現れました"
 msgid "value expected"
 msgstr "値が必要です"
 
+msgid "Short Description:"
+msgstr "簡単な説明:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "制作者:"
+
+msgid "Webpage:"
+msgstr "ウェブページ:"
+
+msgid "Description:"
+msgstr "説明:"
+
+msgid "Version:"
+msgstr "バージョン:"
+
+msgid "Minimum JOSM Version:"
+msgstr "JOSMの最低バージョン:"
+
+msgid "by {0}"
+msgstr "({0}作成)"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM標準(MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr "動的に切り替え可能なオーバーレイスタイルの元になる内部スタイル"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "メインのPotlatch 2スタイル"
+
+msgid "Internal Preset"
+msgstr "内部プリセット"
+
+msgid "The default preset for JOSM"
+msgstr "JOSM用の既定値のプリセット"
+
+msgid "Addresses"
+msgstr "住所"
+
+msgid "Checks for errors on addresses"
+msgstr "住所のエラーをチェックします"
+
+msgid "Tag combinations"
+msgstr "タグの組み合わせ"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "抜けているタグや疑わしい組み合わせをチェックします"
+
+msgid "Deprecated features"
+msgstr "推奨されない機能"
+
+msgid "Checks for deprecated features"
+msgstr "推奨されない機能をチェックします"
+
+msgid "Geometry"
+msgstr "ジオメトリ"
+
+msgid "Checks for geometry errors"
+msgstr "ジオメトリのエラーをチェックします"
+
+msgid "Highways"
+msgstr "道路"
+
+msgid "Checks for errors on highways"
+msgstr "道路のエラーをチェックします"
+
+msgid "Multiple values"
+msgstr "複数の値"
+
+msgid "Checks for wrong multiple values"
+msgstr "誤った複数の値をチェックします"
+
+msgid "Numeric values"
+msgstr "数値"
+
+msgid "Checks for wrong numeric values"
+msgstr "誤った数値をチェックします"
+
+msgid "Religion"
+msgstr "宗教"
+
+msgid "Checks for errors on religious objects"
+msgstr "宗教関係のオブジェクトのエラーをチェックします"
+
+msgid "Relations"
+msgstr "リレーション"
+
+msgid "Checks for errors on relations"
+msgstr "リレーションのエラーをチェックします"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "不要なタグ"
+
+msgid "Checks for unnecessary tags"
+msgstr "不要なタグをチェックします"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "誤ったWikipediaタグをチェックします"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM 投影法 (''+proj=utm'') には ''+zone=...'' パラメーターが必要です。"
 
@@ -3581,7 +3644,7 @@ msgid "Expected integer value in range 1-60 for ''+zone=...'' parameter."
 msgstr "''+zone=...'' パラメーターには 1-60 の範囲の整数値が求められます。"
 
 msgid "No unit found for: {0}"
-msgstr ""
+msgstr "見つからないユニット: {0}"
 
 msgid "Unknown parameter: ''{0}''."
 msgstr "パラメーター ''{0}'' が不明です。"
@@ -3760,9 +3823,6 @@ msgstr "URLに無効な部分が含まれています: {0}"
 msgid "URL validator"
 msgstr "URLバリデーター"
 
-msgid "Addresses"
-msgstr "住所"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "住所と通り名住居表示のリレーションのエラーをチェックする。"
 
@@ -3947,9 +4007,6 @@ msgstr "重複したウェイのノード"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "全く同じ連続するノードを持つウェイをチェック"
 
-msgid "Highways"
-msgstr "道路"
-
 msgid "Performs semantic checks on highways."
 msgstr "道路の意味上のチェックを行います。"
 
@@ -4232,12 +4289,12 @@ msgstr "リレーションは空です"
 
 msgid ""
 "Role of relation member does not match expression ''{0}'' in template {1}"
-msgstr ""
+msgstr "リレーションメンバーのロールが{1}テンプレートの式''{0}''に一含まれていません"
 
 msgid ""
 "Type ''{0}'' of relation member with role ''{1}'' does not match accepted "
 "types ''{2}'' in template {3}"
-msgstr ""
+msgstr "ロール''{1}''を持つリレーションメンバーである''{0}''が、{3}テンプレートの受付可能な種別''{2}''に含まれていません"
 
 msgid "<empty>"
 msgstr "<empty>"
@@ -4246,7 +4303,7 @@ msgid "Role ''{0}'' unknown in templates ''{1}''"
 msgstr ""
 
 msgid "Empty role type found when expecting one of ''{0}''"
-msgstr ""
+msgstr "ロールが ''{0}'' の何れかである必要があるのにロールがない"
 
 msgid "Role ''{0}'' missing"
 msgstr "ロール ''{0}'' がありません"
@@ -4294,7 +4351,7 @@ msgstr ""
 "{0}"
 
 msgid "Suspicious tag/value combinations"
-msgstr "疑わしいタグ/値の組み合わせです"
+msgstr "疑わしいタグと値の組み合わせです"
 
 msgid "Key ''{0}'' invalid."
 msgstr "キー''{0}''は無効です。"
@@ -4491,9 +4548,6 @@ msgstr "水路の種別 {0}"
 msgid "boundary type {0}"
 msgstr "境界の種別 {0}"
 
-msgid "building"
-msgstr "建物"
-
 msgid "area"
 msgstr "領域"
 
@@ -4608,43 +4662,14 @@ msgstr "(このセッションで)再度表示しない"
 msgid "Do not show again (remembers choice)"
 msgstr "次回から表示しない"
 
-msgid "incomplete"
-msgstr "不完全"
-
-msgid "House {0}"
-msgstr "{0}"
-
-msgid "House number {0} at {1}"
-msgstr "{1}{0}"
-
-msgid "House number {0}"
-msgstr "{0}"
-
-msgid "highway"
-msgstr "道路"
-
-msgid "railway"
-msgstr "鉄道"
-
-msgid "waterway"
-msgstr "水路"
-
-msgid "landuse"
-msgstr "土地利用"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0}個のノード"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0}件のメンバー"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "不正な形式のURL \"{0}\" を無視します。"
 
-msgid "public transport"
-msgstr "公共交通"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "不正な形式のファイルURL \"{0}\" を無視します。"
 
-msgid "Changeset {0}"
-msgstr "変更セット {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "パラメーター \"downloadgps\" がファイル名もしくはURLとして有効ではありません"
 
 msgid "Precondition violation"
 msgstr "前提条件違反"
@@ -4733,6 +4758,66 @@ msgstr "オフセット"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "パラメーター ''{0}'' は空欄ではいけませんが、現在 ''{1}'' になっています"
 
+msgid "Outdated Java version"
+msgstr "Javaのバージョンが期限切れ"
+
+msgid "Update Java"
+msgstr "Javaを更新"
+
+msgid "You are running version {0} of Java."
+msgstr "あなたはJavaバージョン{0}を使用しています。"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr "このバージョンは{1}以降{0}がサポートしておらず、使用を推奨できません。"
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr "JOSMは間もなくこのバージョンでは動作しなくなります。Java{0}にアップデートすることを強くお勧めします。"
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "今すぐ更新しますか?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "プラットフォームスタートアップフックを実行中"
+
+msgid "Building main menu"
+msgstr "メインメニュー作成中"
+
+msgid "Updating user interface"
+msgstr "ユーザーインターフェースを更新中"
+
+msgid "Initializing internal boundaries data"
+msgstr "内部の境界線データを初期化中"
+
+msgid "Initializing OSM API"
+msgstr "OSM APIを初期化中"
+
+msgid "Initializing internal traffic data"
+msgstr "内部の交通データを初期化中"
+
+msgid "Initializing validator"
+msgstr "妥当性検査を初期化中"
+
+msgid "Initializing presets"
+msgstr "プリセット初期化中"
+
+msgid "Initializing map styles"
+msgstr "地図スタイルを初期化中"
+
+msgid "Loading imagery preferences"
+msgstr "画像設定を読み込み中"
+
 msgid "usage"
 msgstr "使用法"
 
@@ -4851,7 +4936,7 @@ msgid "Make sure you load some data if you use --selection."
 msgstr "--selectionを使った場合、一部のデータだけをロードすることになります。"
 
 msgid "Log level is at {0} ({1}, {2})"
-msgstr ""
+msgstr "ログレベルは {0} ({1}, {2}) です"
 
 msgid "Plugin loading skipped"
 msgstr "プラグインの読み込みをスキップしました"
@@ -5133,7 +5218,7 @@ msgid "Last change date"
 msgstr "最終更新日"
 
 msgid "Select note sorting method"
-msgstr "メモの並び替え方法を選択してください"
+msgstr "メモの並べ替え方法を選択してください"
 
 msgid "Click to cancel the current operation"
 msgstr "クリックして現在の操作をキャンセル"
@@ -5148,10 +5233,10 @@ msgid " ({0})"
 msgstr " ({0})"
 
 msgid "<h2>Filter active: {0}</h2>"
-msgstr ""
+msgstr "<h2>有効なフィルタ: {0}</h2>"
 
 msgid "</p><p>Click again on filter button to see all objects.</p></html>"
-msgstr ""
+msgstr "</p><p>すべてのオブジェクトを表示するには、フィルタボタンを再度クリックしてください。</p></html>"
 
 msgid "Enlarge"
 msgstr "拡大"
@@ -5198,6 +5283,79 @@ msgstr "タイルのインデックスを入力してください"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "現在の値は指定されたズームレベルに適切なタイルインデックスではありません"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "JOSMのバグです"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "バグを報告する"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "このセッションにおいて、これ以降のエラーダイアログを抑制します。"
+
+msgid "Ignore this error."
+msgstr "エラーを無視します。"
+
+msgid "Include the system status report."
+msgstr "システムステータスレポートを含めます。"
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr "スタックトレースを含めます。"
+
+msgid "Your current version of JOSM is {0}"
+msgstr "現在のJOSMのバージョンは {0} です。"
+
+msgid "JOSM is searching for updates..."
+msgstr "アップデートを検索しています..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr "JOSMは最新版です。"
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr "バグレポートを提出する前にJOSMを最新版へ更新してください。"
+
+msgid "Update JOSM"
+msgstr "JOSMの更新"
+
 msgid "Conflict background: no conflict"
 msgstr "競合: 競合なしの背景色"
 
@@ -5894,6 +6052,22 @@ msgid ""
 msgstr ""
 "コピーしたデータには不完全なオブジェクトが含まれています。 不完全なオブジェクトは貼り付け時に削除されます。 不完全なオブジェクトを除いて貼り付けますか?"
 
+msgid "Do you want to paste these tags?"
+msgstr "これらのタグを貼り付けますか?"
+
+msgid "Clear buffer"
+msgstr "バッファをクリア"
+
+msgid "Ignore warnings"
+msgstr "警告を無視"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p>恐れ入りますが、バッファからタグを貼り付けることができません。JOSMオブジェクトが含まれていないか、合う文字列がありません。</p><"
+"/html>"
+
 msgid "For selected objects only"
 msgstr "選択したオブジェクトのみ表示"
 
@@ -6463,9 +6637,6 @@ msgstr "ソース"
 msgid "Title:"
 msgstr "タイトル:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "ビルトインスタイルの内部パス:"
 
@@ -6578,9 +6749,6 @@ msgstr ""
 "無効なIDの一覧が指定されました\n"
 "継続できません。"
 
-msgid "Relations"
-msgstr "リレーション"
-
 msgid "Open a list of all relations."
 msgstr "全てのリレーションのリストを開く"
 
@@ -7503,10 +7671,10 @@ msgid "The key ''{0}'' is already used"
 msgstr "''{0}''キーはすでに使われています"
 
 msgid "Ignore key ''{0}''"
-msgstr ""
+msgstr "''{0}''キーを無視"
 
 msgid "Ignore tag ''{0}''"
-msgstr ""
+msgstr "''{0}''タグを無視"
 
 msgid "Edit ignore list"
 msgstr "無視リストを編集"
@@ -7883,13 +8051,13 @@ msgid "Relation Editor: Sort"
 msgstr "リレーション編集画面: 並べ替え"
 
 msgid "Sort the relation members"
-msgstr "リレーションメンバーをソート"
+msgstr "リレーションメンバーを並べ替え"
 
 msgid "Sort below"
 msgstr "以下を並べ替え"
 
 msgid "Sort the selected relation members and all members below"
-msgstr ""
+msgstr "選択中のリレーションメンバーとその下のすべてのメンバーを並べ替え"
 
 msgid "way is connected"
 msgstr "ウェイは接続されています"
@@ -7910,7 +8078,7 @@ msgid "Wrong number of arguments for bookmark"
 msgstr "ブックマークに対する引数の数が誤っています"
 
 msgid "Home location"
-msgstr ""
+msgstr "ホーム位置"
 
 msgid "Error reading bookmark entry: %s"
 msgstr "ブックマークエントリ %s の読み取りに失敗しました"
@@ -7983,24 +8151,6 @@ msgstr "緯度の値は[-90,90]の範囲でなければなりません。"
 msgid "Value for longitude in range [-180,180] required."
 msgstr "経度の値は[-180,180]の範囲でなければなりません。"
 
-msgid "Data Sources and Types:"
-msgstr "データのソースと種別:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMapデータ"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "選択すると指定されたダウンロード領域内のOSMデータをダウンロードします。"
-
-msgid "Raw GPS data"
-msgstr "生のGPSデータ"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "選択すると指定されたダウンロード領域内のGPSトレースをダウンロードします。"
-
-msgid "Select to download notes in the selected download area."
-msgstr "選択すると指定されたダウンロード領域内のメモをダウンロードします。"
-
 msgid "Download as new layer"
 msgstr "新しいレイヤーとしてダウンロード"
 
@@ -8032,30 +8182,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr "左クリック&ドラッグで領域を選択、矢印キーと右ドラッグで地図のスクロール、ホイールと+/-キーでズーム。"
 
-msgid "No area selected yet"
-msgstr "まだエリアが選択されていません"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "ダウンロード領域が広すぎます。サーバーから拒否されるでしょう"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "ダウンロード領域はOKです。指定のサイズはサーバーに受け入れられるでしょう"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "クリックするとダイアログを閉じてダウンロードを中止"
 
 msgid "Click to download the currently selected area"
 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 "参照元(親リレーション)をダウンロード"
 
@@ -8076,15 +8208,100 @@ msgstr "リレーションのメンバーを一緒にダウンロードする場
 msgid "Download referrers (parent relations and ways)"
 msgstr "参照元(親リレーションやウェイ)をダウンロード"
 
-msgid "Please select an item first"
+msgid "Download from OSM"
 msgstr ""
 
-msgid "Edit item"
+msgid "Data Sources and Types:"
+msgstr "データのソースと種別:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMapデータ"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "選択すると指定されたダウンロード領域内のOSMデータをダウンロードします。"
+
+msgid "Raw GPS data"
+msgstr "生のGPSデータ"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "選択すると指定されたダウンロード領域内のGPSトレースをダウンロードします。"
+
+msgid "Select to download notes in the selected download area."
+msgstr "選択すると指定されたダウンロード領域内のメモをダウンロードします。"
+
+msgid "Please select a download area first."
+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 "Add snippet"
+msgid "No area selected yet"
+msgstr "まだエリアが選択されていません"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "ダウンロード領域が広すぎます。サーバーから拒否されるでしょう"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "ダウンロード領域はOKです。指定のサイズはサーバーに受け入れられるでしょう"
+
+msgid "Download from Overpass API"
 msgstr ""
 
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "Overpass Turbo クエリウィザードツールを使用して Overpass クエリを作成"
+
+msgid "Query Wizard"
+msgstr "クエリウィザード"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr "以下に Overpass クエリを配置するか、 Overpass Turbo クエリウィザードツールを使用して作成してください"
+
+msgid "Your saved queries:"
+msgstr "保存したクエリ:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Overpass スニペット一覧の表示/非表示を切り替え"
+
+msgid "Overpass query:"
+msgstr "Overpass クエリ:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr "空のクエリーが入力されました。このエリア内の全データをダウンロードしますか?"
+
+msgid "Download all data?"
+msgstr "すべてのデータをダウンロードしますか?"
+
+msgid "Add new snippet"
+msgstr "新しいスニペットを追加"
+
+msgid "Delete selected snippet"
+msgstr "選択したスニペットを削除"
+
+msgid "Edit selected snippet"
+msgstr "選択されたスニペットを編集"
+
+msgid "history"
+msgstr "履歴"
+
+msgid "Please select an item first"
+msgstr "最初に項目を選択してください"
+
+msgid "Edit item"
+msgstr "項目の編集"
+
+msgid "Add snippet"
+msgstr "スニペットを追加"
+
 msgid "Query cannot be empty"
 msgstr ""
 
@@ -8092,7 +8309,7 @@ msgid "This name can be used for the item"
 msgstr ""
 
 msgid "Item with this name already exists"
-msgstr ""
+msgstr "この名前の項目はすでに存在します"
 
 msgid "The item cannot be created with provided name"
 msgstr ""
@@ -8101,7 +8318,7 @@ msgid "The item cannot be created with an empty query"
 msgstr ""
 
 msgid "Overpass Turbo Query Wizard"
-msgstr ""
+msgstr "Overpass Turbo クエリウィザード"
 
 msgid "Build query"
 msgstr "クエリーを作成"
@@ -8113,14 +8330,11 @@ msgid "Search :"
 msgstr ""
 
 msgid "The Overpass wizard could not parse the following query:"
-msgstr ""
+msgstr "Overpass ウィザードは以下のクエリを解析できませんでした:"
 
 msgid "Parse error"
 msgstr "解釈エラー"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8128,7 +8342,7 @@ msgstr ""
 
 msgid ""
 "The <i>Query Wizard</i> tool will transform those to a valid overpass query."
-msgstr ""
+msgstr "<i>クエリウィザード</i>が有効な Overpass クエリに変換します。"
 
 msgid "For more detailed description see "
 msgstr ""
@@ -8137,7 +8351,7 @@ msgid "<a href=\"{0}\">OSM Wiki</a>."
 msgstr ""
 
 msgid "Hints"
-msgstr ""
+msgstr "ヒント"
 
 msgid "Download objects of a certain type."
 msgstr ""
@@ -8684,6 +8898,18 @@ msgstr "入力されたユーザー名とパスワードで認証"
 msgid "Cancel authentication"
 msgstr "認証をキャンセル"
 
+msgid "Question"
+msgstr "質問"
+
+msgid "Message"
+msgstr "メッセージ"
+
+msgid "Enter text"
+msgstr "テキストを入力"
+
+msgid "Installing plugins"
+msgstr "プラグインをインストール中"
+
 msgid "Downloading file"
 msgstr "ファイルダウンロード中"
 
@@ -9181,9 +9407,6 @@ msgstr "アップロードするオブジェクトを選択"
 msgid "Cancel uploading"
 msgstr "アップロードをキャンセル"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "キー''{0}''に想定外の値''{1}''が設定されています"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "1つの変更セットにまとめて、アップロード画面に戻る。"
 
@@ -9262,6 +9485,180 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "削除するオブジェクト{0}件:"
 
+msgid "All Formats"
+msgstr "全てのフォーマット"
+
+msgid "Could not export ''{0}''."
+msgstr "''{0}'' をエクスポートできません"
+
+msgid "Could not import ''{0}''."
+msgstr "''{0}'' をインポートできません。"
+
+msgid "Could not import files."
+msgstr "ファイルをインポートできません。"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>ファイル ''{0}'' を読み込めません。<br>エラー:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>ファイルを読み込めません。<br>エラー:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSONファイル"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "レイヤー ''{0}'' はサポートされていません。"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr "備考: GPLは、OSMライセンスと互換性がありません。GPLでライセンスされているトラックをアップロードしないでください。"
+
+msgid "GPS track description"
+msgstr "GPSトラックの説明"
+
+msgid "Add author information"
+msgstr "作者情報の追加"
+
+msgid "Real name"
+msgstr "本名"
+
+msgid "E-Mail"
+msgstr "eメール"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "事前定義"
+
+msgid "Copyright year"
+msgstr "Copyright 年"
+
+msgid "Keywords"
+msgstr "キーワード"
+
+msgid "Export options"
+msgstr "エクスポートのオプション"
+
+msgid "Export and Save"
+msgstr "エクスポートして保存"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"{0} のエクスポート中にエラーが発生しました。\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "事前定義のライセンスを選択"
+
+msgid "GPX Files"
+msgstr "GPXファイル"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "レイヤー''{0}''のデータ評価に失敗しました"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr "レイヤ''{0}''のgpxデータを評価中にエラーが発生しました。ファイルの一部のみ有効です。"
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr "gpxファイル''{0}''を評価中にエラーが発生しました。ファイルの一部のみ有効です。"
+
+msgid "Image Files"
+msgstr "画像ファイル"
+
+msgid "folder"
+msgstr "フォルダ"
+
+msgid "Looking for image files"
+msgstr "画像ファイルを検索中"
+
+msgid "No image files found."
+msgstr "画像ファイルが見つかりません。"
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183ファイル"
+
+msgid "Coordinates imported: {0}"
+msgstr "インポートされた座標: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "不正な形式のセンテンス: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "チェックサムエラー: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "不明なセンテンス: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "値のない座標: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEAのインポートに成功しました:"
+
+msgid "NMEA import failure!"
+msgstr "NMEAのインポートに失敗しました。"
+
+msgid "Note Files"
+msgstr "メモファイル"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "bzip2圧縮したOSMファイル"
+
+msgid "OsmChange File"
+msgstr "OsmChangeファイル"
+
+msgid "File ''{0}'' does not exist."
+msgstr "ファイル ''{0}'' はありません"
+
+msgid "No data found in file {0}."
+msgstr "ファイル{0}中にデータが見つかりません。"
+
+msgid "Open OsmChange file"
+msgstr "OsmChangeファイルを開く"
+
+msgid "OSM Server Files"
+msgstr "OSMサーバーファイル"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>保存中にエラー発生。<br>エラー: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr "<html>バックアップファイルの復元中にエラーが発生しました。<br>エラー: <br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "gzip圧縮したOSMファイル"
+
+msgid "Invalid dataset"
+msgstr "データセットが無効です"
+
+msgid "No data found for layer ''{0}''."
+msgstr "レイヤー''{0}''に対するデータが見つかりません。"
+
+msgid "No data found in file ''{0}''."
+msgstr "ファイル''{0}''中にデータが見つかりません。"
+
+msgid "Open OSM file"
+msgstr "OSMファイルをオープン"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMSファイル(*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "WMSファイルのバージョンが未サポートです。{1}でなければなりませんが、{0}でした。"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9369,6 +9766,33 @@ msgstr "今後このメッセージを表示しない"
 msgid "Hide this message and never show it again"
 msgstr "このメッセージを非表示にし、再度表示されないようにします"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "ディレクトリ {0}を作成することができません。自動保存は無効となります。"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "ファイル {0}を作成することができません。他のファイル名が使用されます。"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "ファイル作成中にIOエラーが発生、自動保存はスキップされます: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "古いバックアップファイル{0}が削除できません。"
+
+msgid "Your work has been saved automatically."
+msgstr "作業内容が自動的に保存されました。"
+
+msgid "Restoring files"
+msgstr "ファイルを復元中"
+
+msgid "Unable to delete backup file {0}"
+msgstr "バックアップファイル {0} を削除できません"
+
+msgid "Unable to delete PID file {0}"
+msgstr "PIDファイル {0} を削除できません"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "アーカイブされたバックアップファイル {0} を削除できません"
+
 msgid "Customize Color"
 msgstr "配色のカスタマイズ"
 
@@ -9467,6 +9891,9 @@ msgstr "メモの件数:"
 msgid "Changes need uploading?"
 msgstr "変更はアップロードが必要ですか?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "ダウンロード範囲外"
 
@@ -9539,6 +9966,9 @@ msgstr "妥当性検査エラー"
 msgid "No validation errors"
 msgstr "妥当性検査エラーなし"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "WMSブックマークをセット"
 
@@ -10127,9 +10557,6 @@ msgstr "(URLは: "
 msgid "Select the map painting styles"
 msgstr "地図の描画スタイルを選択してください"
 
-msgid "loading style ''{0}''..."
-msgstr "スタイル ''{0}'' を読み込み中..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10138,6 +10565,9 @@ msgid_plural ""
 "right click menu for details."
 msgstr[0] "このスタイルを読み込むのに{0}件のエラーがありました。詳細は右クリックメニューから''情報''を選択してください。"
 
+msgid "loading style ''{0}''..."
+msgstr "スタイル ''{0}'' を読み込み中..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "''{0}''から地図描画スタイルの読み込みに失敗しました。例外: {1}"
 
@@ -10620,27 +11050,6 @@ msgstr "プラグインをダウンロード"
 msgid "Icon paths:"
 msgstr "アイコンのパス:"
 
-msgid "Short Description:"
-msgstr "簡単な説明:"
-
-msgid "Author:"
-msgstr "制作者:"
-
-msgid "Webpage:"
-msgstr "ウェブページ:"
-
-msgid "Description:"
-msgstr "説明:"
-
-msgid "Version:"
-msgstr "バージョン:"
-
-msgid "Minimum JOSM Version:"
-msgstr "JOSMの最低バージョン:"
-
-msgid "by {0}"
-msgstr "({0}作成)"
-
 msgid "Name (optional):"
 msgstr "スタイル名(オプション):"
 
@@ -11737,19 +12146,6 @@ msgstr "<html>''{0}''からのスタイルソースのダウンロードに<br>
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "警告: スタイルリスト ''{0}'' 中に不正な形式のエントリ。入力値 ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM標準(MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr "動的に切り替え可能なオーバーレイスタイルの元になる内部スタイル"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "メインのPotlatch 2スタイル"
-
 msgid "Map Settings"
 msgstr "マップ設定"
 
@@ -11840,12 +12236,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr "警告: プリセット一覧 ''{0}'' の項目の書式が不正です。 ''{1}'' になっています。"
 
-msgid "Internal Preset"
-msgstr "内部プリセット"
-
-msgid "The default preset for JOSM"
-msgstr "JOSM用の既定値のプリセット"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "{0}プラグインは次の{1}件のプラグインから必要とされています。"
@@ -12319,9 +12709,6 @@ msgstr "OSM パスワード:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "認証マネージャーからOSM証明書の受け取りに失敗しました。"
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "現在の認証マネージャーは ''{0}'' の一種です"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "OSM証明書の認証マネージャーへの保存に失敗しました。"
 
@@ -12339,12 +12726,6 @@ msgid ""
 "downloaded"
 msgstr "メモが終了してからダウンロードされなくなるまでの日数を指定します。"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "認証マネージャーからOAuthアクセストークンの取得に失敗しました"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "OAuthアクセストークンの認証マネージャーへの保存に失敗しました"
-
 msgid "Save to preferences"
 msgstr "プリファレンスに保存"
 
@@ -12530,69 +12911,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr "警告: ルール一覧''{0}''の項目の書式が不正です。''{1}''になっています"
 
-msgid "Checks for errors on addresses"
-msgstr "住所のエラーをチェックします"
-
-msgid "Tag combinations"
-msgstr "タグの組み合わせ"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "抜けているタグや疑わしい組み合わせをチェックします"
-
-msgid "Deprecated features"
-msgstr "推奨されない機能"
-
-msgid "Checks for deprecated features"
-msgstr "推奨されない機能をチェックします"
-
-msgid "Geometry"
-msgstr "ジオメトリ"
-
-msgid "Checks for geometry errors"
-msgstr "ジオメトリのエラーをチェックします"
-
-msgid "Checks for errors on highways"
-msgstr "道路のエラーをチェックします"
-
-msgid "Multiple values"
-msgstr "複数の値"
-
-msgid "Checks for wrong multiple values"
-msgstr "誤った複数の値をチェックします"
-
-msgid "Numeric values"
-msgstr "数値"
-
-msgid "Checks for wrong numeric values"
-msgstr "誤った数値をチェックします"
-
-msgid "Religion"
-msgstr "宗教"
-
-msgid "Checks for errors on religious objects"
-msgstr "宗教関係のオブジェクトのエラーをチェックします"
-
-msgid "Checks for errors on relations"
-msgstr "リレーションのエラーをチェックします"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "不要なタグ"
-
-msgid "Checks for unnecessary tags"
-msgstr "不要なタグをチェックします"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "誤ったWikipediaタグをチェックします"
-
 msgid "Tag checker rules"
 msgstr "タグチェッカーのルール"
 
@@ -12842,6 +13160,30 @@ msgstr "すべてのファイル(*.*)"
 msgid "Received error page:"
 msgstr "エラーページを受信しました:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr "キー ''{0}'' の設定は ''{1}'' を含んでいません。設定からウィンドウ位置を復元できません。"
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr "キー ''{0}'' の設定は ''{1}'' にint 値を与えていません。入力値: {2}。設定からウィンドウ位置を復元できません。"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"キー ''{0}'' の設定中のフィールド ''{1}'' の解析に失敗しました。例外コード: {2}。設定からウィンドウ位置を復元できません。"
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr "キー ''{0}'' の設定が存在しません。設定からウィンドウ位置を復元できません。"
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "不正な形の図形 {0} を無視しました。"
+
 msgid "Min. latitude"
 msgstr "最小緯度"
 
@@ -12954,9 +13296,6 @@ msgstr "外部ID ''{0}'' のリレーションは外部ID ''{1}'' の存在し
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "削除されたメンバー {0} はリレーション {1} で使われています"
 
-msgid "All Formats"
-msgstr "全てのフォーマット"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "ポイント {0} から {1} をダウンロード中..."
 
@@ -13061,88 +13400,6 @@ msgstr "サーバーからの応答をパース中..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "予期せぬXMLの要素 ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "''{0}'' をエクスポートできません"
-
-msgid "Could not import ''{0}''."
-msgstr "''{0}'' をインポートできません。"
-
-msgid "Could not import files."
-msgstr "ファイルをインポートできません。"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>ファイル ''{0}'' を読み込めません。<br>エラー:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>ファイルを読み込めません。<br>エラー:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSONファイル"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "レイヤー ''{0}'' はサポートされていません。"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr "備考: GPLは、OSMライセンスと互換性がありません。GPLでライセンスされているトラックをアップロードしないでください。"
-
-msgid "GPS track description"
-msgstr "GPSトラックの説明"
-
-msgid "Add author information"
-msgstr "作者情報の追加"
-
-msgid "Real name"
-msgstr "本名"
-
-msgid "E-Mail"
-msgstr "eメール"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "事前定義"
-
-msgid "Copyright year"
-msgstr "Copyright 年"
-
-msgid "Keywords"
-msgstr "キーワード"
-
-msgid "Export options"
-msgstr "エクスポートのオプション"
-
-msgid "Export and Save"
-msgstr "エクスポートして保存"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"{0} のエクスポート中にエラーが発生しました。\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "事前定義のライセンスを選択"
-
-msgid "GPX Files"
-msgstr "GPXファイル"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "レイヤー''{0}''のデータ評価に失敗しました"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr "レイヤ''{0}''のgpxデータを評価中にエラーが発生しました。ファイルの一部のみ有効です。"
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr "gpxファイル''{0}''を評価中にエラーが発生しました。ファイルの一部のみ有効です。"
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "パースエラー: GPXファイルのドキュメント構造が不適切です"
 
@@ -13152,18 +13409,6 @@ msgstr "(場所: 行 {0}, カラム {1})"
 msgid "Unknown mode {0}."
 msgstr "不明なモード {0}。"
 
-msgid "Image Files"
-msgstr "画像ファイル"
-
-msgid "folder"
-msgstr "フォルダ"
-
-msgid "Looking for image files"
-msgstr "画像ファイルを検索中"
-
-msgid "No image files found."
-msgstr "画像ファイルが見つかりません。"
-
 msgid "get number of unread messages"
 msgstr "未読メッセージの件数を取得"
 
@@ -13213,36 +13458,9 @@ msgstr "id {0} のリレーションを ''{1}'' から取得中"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "ID {0} に対してサーバーが404コードを返しました。スキップします。"
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183ファイル"
-
-msgid "Coordinates imported: {0}"
-msgstr "インポートされた座標: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "不正な形式のセンテンス: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "チェックサムエラー: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "不明なセンテンス: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "値のない座標: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEAのインポートに成功しました:"
-
-msgid "NMEA import failure!"
-msgstr "NMEAのインポートに失敗しました。"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "ヌルポインタ例外です。失われたタグがあるのでしょう。"
 
-msgid "Note Files"
-msgstr "メモファイル"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -13330,27 +13548,12 @@ msgstr "(コード={0})"
 msgid "The server replied an error with code {0}."
 msgstr "サーバーがエラーを返しました。コード {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "bzip2圧縮したOSMファイル"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr "OsmChangeのプロローグは既に書かれています。書くのは一度だけです。"
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr "OsmChangeの前書きはまだ書かれていません。書いてみましょう。"
 
-msgid "OsmChange File"
-msgstr "OsmChangeファイル"
-
-msgid "File ''{0}'' does not exist."
-msgstr "ファイル ''{0}'' はありません"
-
-msgid "No data found in file {0}."
-msgstr "ファイル{0}中にデータが見つかりません。"
-
-msgid "Open OsmChange file"
-msgstr "OsmChangeファイルを開く"
-
 msgid "Unsupported version: {0}"
 msgstr "サポートされないバージョン: {0}"
 
@@ -13398,35 +13601,9 @@ msgstr "OAuth認証ヘッダでのHTTP接続のサインに失敗"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "設定項目''{0}''が想定外の値です。''{1}''になっています。"
 
-msgid "OSM Server Files"
-msgstr "OSMサーバーファイル"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>保存中にエラー発生。<br>エラー: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr "<html>バックアップファイルの復元中にエラーが発生しました。<br>エラー: <br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "gzip圧縮したOSMファイル"
-
 msgid "Parsing OSM history data ..."
 msgstr "OSM 履歴データ解析中 ..."
 
-msgid "Invalid dataset"
-msgstr "データセットが無効です"
-
-msgid "No data found for layer ''{0}''."
-msgstr "レイヤー''{0}''に対するデータが見つかりません。"
-
-msgid "No data found in file ''{0}''."
-msgstr "ファイル''{0}''中にデータが見つかりません。"
-
-msgid "Open OSM file"
-msgstr "OSMファイルをオープン"
-
 msgid "Reading was canceled"
 msgstr "読み込みがキャンセルされました"
 
@@ -13434,6 +13611,8 @@ msgid ""
 "Missing mandatory attributes on element ''bounds''. Got "
 "minlon=''{0}'',minlat=''{1}'',maxlon=''{2}'',maxlat=''{3}'', origin=''{4}''."
 msgstr ""
+"「境界」要素に必要な属性がありません。取得値 : "
+"minlon=''{0}'',minlat=''{1}'',maxlon=''{2}'',maxlat=''{3}'', origin=''{4}''"
 
 msgid ""
 "Illegal value for attributes ''lat'', ''lon'' on node with ID {0}. Got "
@@ -13557,6 +13736,9 @@ msgstr "サーバーに接続中..."
 msgid "Downloading OSM notes..."
 msgstr "OSMのメモをダウンロード中..."
 
+msgid "Downloading data..."
+msgstr "データのダウンロード中..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "osmサーバーに接続できません。インターネット接続をチェックしてください。"
@@ -13613,14 +13795,8 @@ msgstr "osmプリミティブに予期しないID 0が見つかりました"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "データのダウンロード中..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMSファイル(*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "WMSファイルのバージョンが未サポートです。{1}でなければなりませんが、{0}でした。"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "キー''{0}''に想定外の値''{1}''が設定されています"
 
 msgid "{0} bytes have been read"
 msgstr "{0}バイトを読み込み"
@@ -14607,33 +14783,6 @@ msgstr "URL {0} を開きます"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URLが{0}/{1}/{2}を含んでいません"
 
-msgid "Outdated Java version"
-msgstr "Javaのバージョンが期限切れ"
-
-msgid "Update Java"
-msgstr "Javaを更新"
-
-msgid "You are running version {0} of Java."
-msgstr "あなたはJavaバージョン{0}を使用しています。"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr "このバージョンは{1}以降{0}がサポートしておらず、使用を推奨できません。"
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr "JOSMは間もなくこのバージョンでは動作しなくなります。Java{0}にアップデートすることを強くお勧めします。"
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "今すぐ更新しますか?"
-
 msgid "reserved"
 msgstr "予約"
 
@@ -14697,22 +14846,6 @@ msgstr "キーに疑わしい文字があります:"
 msgid "Value is too long (max {0} characters):"
 msgstr "値が長すぎます(最大{0}文字):"
 
-msgid "Do you want to paste these tags?"
-msgstr "これらのタグを貼り付けますか?"
-
-msgid "Clear buffer"
-msgstr "バッファをクリア"
-
-msgid "Ignore warnings"
-msgstr "警告を無視"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p>恐れ入りますが、バッファからタグを貼り付けることができません。JOSMオブジェクトが含まれていないか、合う文字列がありません。</p><"
-"/html>"
-
 msgid "Unable to delete file {0}"
 msgstr "ファイル {0} が削除できませんでした"
 
@@ -14735,110 +14868,13 @@ msgid "day"
 msgid_plural "days"
 msgstr[0] "日"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr "キー ''{0}'' の設定は ''{1}'' を含んでいません。設定からウィンドウ位置を復元できません。"
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr "キー ''{0}'' の設定は ''{1}'' にint 値を与えていません。入力値: {2}。設定からウィンドウ位置を復元できません。"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"キー ''{0}'' の設定中のフィールド ''{1}'' の解析に失敗しました。例外コード: {2}。設定からウィンドウ位置を復元できません。"
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr "キー ''{0}'' の設定が存在しません。設定からウィンドウ位置を復元できません。"
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "不正な形の図形 {0} を無視しました。"
-
 msgid "Failed to load XML schema."
 msgstr "XMLスキーマのロードに失敗。"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "JOSMのバグです"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "バグを報告する"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "このセッションにおいて、これ以降のエラーダイアログを抑制します。"
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "JOSMの更新"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -14941,7 +14977,7 @@ msgstr ""
 
 msgctxt "landuse"
 msgid "quarry"
-msgstr ""
+msgstr "採石場"
 
 msgctxt "landuse"
 msgid "allotments"
@@ -14961,11 +14997,11 @@ msgstr "森林"
 
 msgctxt "natural"
 msgid "grassland"
-msgstr ""
+msgstr "草原"
 
 msgctxt "natural"
 msgid "wetland"
-msgstr ""
+msgstr "湿地帯"
 
 msgctxt "natural"
 msgid "heath"
@@ -14973,11 +15009,11 @@ msgstr ""
 
 msgctxt "amenity"
 msgid "fire_station"
-msgstr ""
+msgstr "消防署"
 
 msgctxt "leisure"
 msgid "park"
-msgstr ""
+msgstr "公園"
 
 msgctxt "leisure"
 msgid "track"
@@ -15777,7 +15813,7 @@ msgstr "アイスホッケー"
 
 msgctxt "sport"
 msgid "karting"
-msgstr ""
+msgstr "カート"
 
 msgctxt "sport"
 msgid "model_aerodrome"
@@ -16665,7 +16701,7 @@ msgid "Ford"
 msgstr "浅瀬(洗い越し)"
 
 msgid "stepping_stones"
-msgstr ""
+msgstr "飛び石"
 
 msgid "Ways"
 msgstr "ウェイ"
@@ -16680,7 +16716,7 @@ msgid "grade1"
 msgstr "グレード1"
 
 msgid "Solid: paved or heavily compacted hardcore surface"
-msgstr ""
+msgstr "硬い : 舗装または強く固められた路面"
 
 msgid "grade2"
 msgstr "グレード2"
@@ -16698,13 +16734,13 @@ msgid "grade4"
 msgstr "グレード4"
 
 msgid "Mostly Soft: soil/sand/grass with some hard material mixed in"
-msgstr ""
+msgstr "やややわらかい :  土/砂/草 に砂利等が混ざっている"
 
 msgid "grade5"
 msgstr "グレード5"
 
 msgid "Soft: soil/sand/grass"
-msgstr ""
+msgstr "やわらかい : 土/砂/草"
 
 msgid "MTB Scale"
 msgstr "MTBスケール"
@@ -16806,7 +16842,7 @@ msgstr "自転車用道路"
 
 msgctxt "cycleway"
 msgid "lane"
-msgstr ""
+msgstr "レーン"
 
 msgctxt "cycleway"
 msgid "track"
@@ -18555,9 +18591,6 @@ msgstr "掲示板の内容"
 msgid "notice"
 msgstr "お知らせ"
 
-msgid "history"
-msgstr "履歴"
-
 msgid "nature"
 msgstr "自然"
 
@@ -19137,6 +19170,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "看護ステーション"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21577,6 +21613,9 @@ msgstr "ギフト・おみやげ店"
 msgid "Variety Store"
 msgstr "雑貨店"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "公営競技投票券売り場"
 
@@ -22438,6 +22477,78 @@ msgstr "オフィス用地"
 msgid "Industrial"
 msgstr "工業用地"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "車庫"
 
@@ -23133,6 +23244,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -23885,6 +23999,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -23997,15 +24114,6 @@ msgstr "Old map of Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -25683,7 +25791,7 @@ msgid "{0} together with {1}"
 msgstr ""
 
 msgid "suspicious tag combination"
-msgstr ""
+msgstr "疑わしいタグの組み合わせ"
 
 msgid "two objects, one with {0} and one with {1} + {2} + {3}"
 msgstr ""
@@ -25729,6 +25837,8 @@ msgid ""
 "underground. Remove {1} or add a tunnel tag if applicable. Also check "
 "crossing bridges and their {1} tags."
 msgstr ""
+"トンネルや地下水路としてのタグを持たない長い水路に{0}が指定されています。{1}を削除するか、適切であればtunnelタグを追加してください。また、横断"
+"する橋やその{1}タグをチェックしてください。"
 
 msgid ""
 "Short waterway with {0} but without a tag which defines it as tunnel or "
@@ -25746,7 +25856,7 @@ msgid "possibly missing {0} tag"
 msgstr ""
 
 msgid "street with odd number of {0}, but without {1} and {2} or {3}"
-msgstr ""
+msgstr "道路の{0}の値に奇数が指定されていますが、{1}と{2}、または{3}がありません"
 
 msgid "{0} is deprecated"
 msgstr "{0}は推奨されていません"
@@ -25894,7 +26004,7 @@ msgid "{0} node connected to a highway"
 msgstr ""
 
 msgid "suspicious roundabout direction"
-msgstr ""
+msgstr "疑わしい環状交差点の方向"
 
 msgid "{0} on a large area"
 msgstr ""
@@ -27998,7 +28108,7 @@ msgid "Please select address interpolation way for this street"
 msgstr "このストリートのアドレス補間ウェイを選択してください"
 
 msgid "Expected odd numbers for addresses"
-msgstr "奇数番号のアドレスが期待されている"
+msgstr "住所に奇数の番号が必要です"
 
 msgid "Expected even numbers for addresses"
 msgstr "偶数番号のアドレスが期待されている"
@@ -31492,17 +31602,17 @@ msgid ""
 msgstr "生データのみをインポート(つまり、追加・削除や標準のOSMのタグで置き換えをしていないもの)"
 
 msgid "Overpass API server:"
-msgstr "オーバーパスAPIサーバー:"
+msgstr "Overpass API サーバー:"
 
 msgid "Overpass API server used to download OSM data"
-msgstr "OSMデータのダウンロードに使用するオーバーパスAPIサーバー"
+msgstr "OSM データのダウンロードに使用する Overpass API サーバー"
 
 msgid "XAPI server:"
 msgstr "XAPIサーバー:"
 
 msgid ""
 "XAPI server used to download OSM data when Overpass API is not available"
-msgstr "オーバーパスAPIサーバーが利用できないときにOSMデータをダウンロードXAPIサーバー"
+msgstr "Overpass API サーバーが利用できないときに OSM データをダウンロード XAPI サーバー"
 
 msgid "Download modules"
 msgstr "モジュールをダウンロード"
@@ -32071,15 +32181,21 @@ msgstr "以前の値に(mtimeを変更しない)"
 msgid "Photo Geotagging Plugin"
 msgstr "Photo Geotagging プラグイン"
 
-msgid "Writing position information to image files..."
-msgstr "位置情報を画像ファイルに書き込み中"
-
 msgid "Could not read mtime."
 msgstr "mtimeを読み込めませんでした。"
 
 msgid "Could not write mtime."
 msgstr "mtimeを書き込めませんでした。"
 
+msgid "Writing position information to image files..."
+msgstr "位置情報を画像ファイルに書き込み中"
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "ファイルを削除できませんでした。"
 
@@ -32500,10 +32616,10 @@ msgid "Incomplete Members"
 msgstr ""
 
 msgid "Do you want to make the roundabout round?"
-msgstr ""
+msgstr "環状交差点の環を作成しますか?"
 
 msgid "Roundabout round"
-msgstr ""
+msgstr "環状交差点の環"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
 msgstr ""
@@ -32579,6 +32695,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32587,6 +32706,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
@@ -33155,10 +33277,10 @@ msgid ""
 msgstr "警告: 変更セットコンテンツ中({1},{2})の位置にサポートされない終了エレメント ''{0}'' があります。スキップします。"
 
 msgid "Create Roundabout"
-msgstr ""
+msgstr "環状交差点の作成"
 
 msgid "Roundabout Expander"
-msgstr ""
+msgstr "環状交差点拡張ツール"
 
 msgid "Road Sign Plugin"
 msgstr "Road Sign プラグイン"
diff --git a/i18n/po/ka.po b/i18n/po/ka.po
index 869f0b5..1cea016 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:43+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:43+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ka\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "გასახსნელ ლინკს ამ პლატფორმაზე არ აქვს მხარდაჭერა (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "დახმარება"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "გაფრთხილება"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "პარამეტრი \"გადმოწერეgps\" არ იღებს ფაილის სახელსა და ლინკს"
-
 msgid "About"
 msgstr "შესახებ"
 
@@ -180,6 +135,9 @@ msgstr "უარი"
 msgid "Click to abort launching external browsers"
 msgstr "დააჭირე, რომ გააუქმო გარე ბროუზერის გახსნა"
 
+msgid "Warning"
+msgstr "გაფრთხილება"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "გთხოვთ აირჩიეთ, მინიმუმ, ერთი უკვე ატვირთული წერტილი, გზა ან კავშირი"
 
@@ -461,13 +419,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "გადმოწერე OSM-დან"
-
-msgid "Download map data from the OSM server."
-msgstr "გადმოწერე რუკის მონაცემები OSM სერვერიდან."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -475,9 +430,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -544,6 +496,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "დახმარება"
+
 msgid "History"
 msgstr ""
 
@@ -1043,23 +998,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2314,36 +2252,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2630,86 +2538,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2727,9 +2555,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3076,57 +2901,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3216,6 +2996,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3344,6 +3130,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3358,6 +3153,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3394,15 +3192,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3428,21 +3279,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3476,6 +3317,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3553,6 +3504,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3737,9 +3803,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3924,9 +3987,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4465,9 +4525,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4579,49 +4636,18 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "public transport"
+msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Ignoring malformed URL: \"{0}\""
 msgstr ""
 
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr ""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "პარამეტრი \"გადმოწერეgps\" არ იღებს ფაილის სახელსა და ლინკს"
+
 msgid "Precondition violation"
 msgstr ""
 
@@ -4710,6 +4736,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5171,6 +5257,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5865,6 +6024,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6421,9 +6594,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6534,9 +6704,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7929,49 +8096,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
 msgstr ""
 
+msgid "Start downloading"
+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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7983,36 +8188,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
-msgstr "დაიწყე გადმოქაჩვა."
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8057,9 +8273,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8597,6 +8810,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9074,9 +9299,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9155,6 +9377,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9262,6 +9656,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9365,6 +9786,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9438,6 +9862,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10007,9 +10434,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10019,6 +10443,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10432,55 +10859,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11566,19 +11972,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11658,12 +12051,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12129,9 +12516,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12149,12 +12533,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12335,69 +12713,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12641,6 +12956,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12753,9 +13091,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12858,86 +13193,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12947,18 +13202,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13010,36 +13253,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13127,27 +13343,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13193,35 +13394,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13353,6 +13528,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13410,13 +13588,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14352,33 +14524,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14437,20 +14582,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14474,109 +14605,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18289,9 +18324,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18871,6 +18903,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21311,6 +21346,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22171,6 +22209,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22866,6 +22976,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23618,6 +23731,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23728,15 +23844,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31588,13 +31695,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32092,6 +32205,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32100,6 +32216,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/km.po b/i18n/po/km.po
index c24cb26..f77fa12 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:49+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:49+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr "លក្ខខណ្ឌក្នុងការប្រើប្រា
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "ការ​បើក​តំណ​គឺ​មិន​គាំទ្រ​នៅ​លើ​កម្មវិធី​បច្ចុប្បន្ន (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "ប្រតិបត្តិ​កម្មវិធី​ពេល​ចាប់ផ្ដើម"
-
-msgid "Building main menu"
-msgstr "បង្កើត​ម៉ឺនុយ​មេ"
-
-msgid "Help"
-msgstr "ជំនួយ"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "ចាប់ផ្ដើម OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "ចាប់ផ្ដើម​ម៉ាស៊ីន​ពិនិត្យ"
-
-msgid "Initializing presets"
-msgstr "ចាប់ផ្ដើម​ការ​កំណត់​ស្រេច"
-
-msgid "Initializing map styles"
-msgstr "ចាប់ផ្ដើម​រចនាប័ទ្ម​ផែនទី"
-
-msgid "Loading imagery preferences"
-msgstr "កំពុង​ផ្ទុក​រូបភាព​ចំណូលចិត្ត"
-
-msgid "Updating user interface"
-msgstr "កំពុង​ធ្វើ​បច្ចុប្បន្នភាព​ចំណុចប្រទាក់​អ្នកប្រើ"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "មិន​អើពើ URL មិន​ត្រឹមត្រូវ៖ \"{0}\""
-
-msgid "Warning"
-msgstr "ការ​ព្រមាន"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "មិន​អើពើ URL ឯកសារ​មិន​ត្រឹមត្រូវ៖ \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "ប៉ារ៉ាម៉ែត្រ \"downloadgps\" មិន​ព្រម​ទទួល​ឈ្មោះ​ឯកសារ ឬ​ឯកសារ URLs"
-
 msgid "About"
 msgstr "អំពី"
 
@@ -181,6 +136,9 @@ msgstr "បោះបង់"
 msgid "Click to abort launching external browsers"
 msgstr "ចុច​ដើម្បី​បោះបង់​ការ​ចាប់ផ្ដើម​កម្មវិធី​អ៊ីនធឺណិត​ខាងក្នុង"
 
+msgid "Warning"
+msgstr "ការ​ព្រមាន"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "សូម​ជ្រើស​ទំនាក់ទំនង ផ្លូវ និង​តំណ​ដែល​បាន​ផ្ទុក​ឡើង​រួចហើយ​យ៉ាង​ហោច​មួយ។"
@@ -466,14 +424,11 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "ទាញយក​ពី OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "ទាញយក​ទិន្នន័យ​ផែនទី​ពី​ម៉ាស៊ីន​បម្រើ​ OSM ។"
+msgid "Download data"
+msgstr "ទាញ​យក​ទិន្នន័យ"
 
-msgid "Please select a download area first."
-msgstr "សូម​ជ្រើស​តំបន់​ទាញ​យក​ជាមុន។"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -482,9 +437,6 @@ msgstr ""
 "<html>សកម្មភាព​នេះ​នឹង​ទាមទារ​សំណើ​ទាញ​យក {0} ដាច់​ដោយឡែក<br>។ "
 "តើ​អ្នក​ចង់<br>បន្ត?</html>"
 
-msgid "Download data"
-msgstr "ទាញ​យក​ទិន្នន័យ"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -551,6 +503,9 @@ msgstr "មិន​មាន​អ្វី​ត្រូវ​នាំចេ
 msgid "Export GPX file"
 msgstr "នាំចេញ​ឯកសារ​ GPX"
 
+msgid "Help"
+msgstr "ជំនួយ"
+
 msgid "History"
 msgstr "ប្រវត្តិ"
 
@@ -1101,23 +1056,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "សូម​ជ្រើស​ផ្លូវ​ដែល​មាន​មុំ​ប្រហែល៩០ ឬ១៨០ដឺក្រេ។"
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "បិទ​ភ្ជាប់"
 
@@ -2453,36 +2391,6 @@ msgstr "ជ្រើស​ទំនាក់ទំនង (បន្ថែម)"
 msgid "Select relation"
 msgstr "ជ្រើស​ទំនាក់ទំនង"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "ស្វែងរក..."
 
@@ -2778,97 +2686,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"កន្សោម​ធម្មតា \"{0}\" មាន​កំហុស​ក្នុង​ការ​ញែក​នៅ​អុហ្វសិត {1}, "
-"កំហុស​ទាំងស្រុង៖\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"កន្សោម​ធម្មតា \"{0}\" មាន​កំហុស​ក្នុង​ការ​ញែក, កំហុស​ទាំងស្រុង៖\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "ជួរ​ព្រីមីទីវ ids ដែល​បាន​រំពឹង​ទុក"
-
-msgid "Range of changeset ids expected"
-msgstr "ជួរ changeset ids ដែល​បាន​រំពឹង​ទុក"
-
-msgid "Range of versions expected"
-msgstr "ជួរ​កំណែ​ដែល​បាន​រំពឹង​ទុក"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"ពាក្យ​គន្លឹះ​មិន​អាច​ទទេ​បាន​ឡើយ ពេល​ប្រមាណវិធី​ស្លាក​ត្រូវ​បាន​ប្រើ។ "
-"ការ​ប្រើ​គំរូ៖ ពាក្យ​គន្លឹះ=តម្លៃ"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"មិន​ស្គាល់​ប្រភេទ​ព្រីមីទីវ៖ {0} ។ តម្លៃ​ដែល​អនុញ្ញាត​គឺ​តំណ ផ្លូវ "
-"ឬ​ទំនាក់ទំនង"
-
-msgid "Positive integer expected"
-msgstr "បាន​រំពឹង​ទុក​ចំនួនគត់​វិជ្ជមាន"
-
-msgid "Range of numbers expected"
-msgstr "ជួរ​លេខ​ដែល​បាន​រំពឹង​ទុក"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "ថូខឹន​ដែល​មិន​បាន​រំពឹង​ទុក។ បាន​រំពឹង​ទុក {0}, រក​ឃើញ {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "ថូខឹន​ដែល​មិន​បាន​រំពឹង​ទុក៖ {0}"
-
-msgid "Missing parameter for OR"
-msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ OR"
-
-msgid "Missing parameter for XOR"
-msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ XOR"
-
-msgid "Missing operator for NOT"
-msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "កាត់​តម្លៃ​ស្លាក ''{0}'' ដោយ​ស្វ័យប្រវត្តិ ពេល​បាន​លុប​វត្ថុ {1}"
 
@@ -2890,9 +2707,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "ការ​បំពាន​សមត្ថភាព API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "ភាព​អាស្រ័យ​ទៀងទាត់​រវាង​ទំនាក់ទំនង"
-
 msgid "Removed obsolete tags"
 msgstr "បាន​លុប​ស្លាក​ដាច់ខាត"
 
@@ -3247,61 +3061,12 @@ msgstr "តួនាទី​ក្នុង​ទំនាក់ទំនង​
 msgid "Automatic tag correction"
 msgstr "ការ​កែ​ស្លាក​ស្វ័យប្រវត្តិ"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "មិន​អាច​បង្កើត​ថត {0}, ការ​រក្សាទុក​ស្វ័យប្រវត្តិ​នឹង​ត្រូវ​បាន​បិទ"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "មិន​អាច​បង្កើត​ឯកសារ {0}, ឈ្មោះ​ឯកសារ​ផ្សារ​នឹង​ត្រូវ​បាន​ប្រើ"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"IOError ពេល​បង្កើត​ឯកសារ ការ​រក្សាទុក​ស្វ័យប្រវត្តិ​នឹង​ត្រូវ​បាន​រំលង៖ {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "មិន​អាច​លុប​ឯកសារ​បម្រុងទុក​ចាស់ {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "ការងារ​របស់​អ្នក​ត្រូវ​បាន​រក្សាទុក​ដោយ​ស្វ័យប្រវត្តិ។"
-
-msgid "Restoring files"
-msgstr "ការ​ស្ដារ​ឯកសារ"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "តម្លៃ​រយៈទទឹង​មិន​ត្រឹមត្រូវ ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "តម្លៃ​រយៈបណ្ដោយ​មិន​ត្រឹមត្រូវ ''{0}''"
 
-msgid "Question"
-msgstr "សំណួរ"
-
-msgid "Message"
-msgstr "សារ"
-
-msgid "Enter text"
-msgstr "បញ្ចូល​អត្ថបទ"
-
-msgid "Installing plugins"
-msgstr "ដំឡើង​កម្មវិធី​ជំនួយ"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>ការ​កំណត់​ឯកសារ បាន​សួរ​ឲ្យ​បន្ថែម​ចូលចិត្ត​ទៅ <b>{0}</b>,<br/> "
-"ប៉ុន្តែ​ឥឡូវនេះ​មិន​ស្គាល់​តម្លៃ​លំនាំដើម​របស់​វា។<br/> "
-"សូម​ធ្វើឲ្យ​មុខងារ​ដែល​ត្រូវ​គ្នា​សកម្ម​ដោយ​ដៃ រួច​ព្យាយាម​នាំចូល​ម្ដងទៀត។"
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​ថត​ឃ្លាំង​សម្ងាត់​ដែល​បាត់៖ {0}"
 
@@ -3407,6 +3172,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "ការ​កំណត់​ចំណូលចិត្ត {0} ត្រូវ​បាន​លុបចេញ​ដោយសារ​វា​លែង​ប្រើ។"
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>ការ​កំណត់​ឯកសារ បាន​សួរ​ឲ្យ​បន្ថែម​ចូលចិត្ត​ទៅ <b>{0}</b>,<br/> "
+"ប៉ុន្តែ​ឥឡូវនេះ​មិន​ស្គាល់​តម្លៃ​លំនាំដើម​របស់​វា។<br/> "
+"សូម​ធ្វើឲ្យ​មុខងារ​ដែល​ត្រូវ​គ្នា​សកម្ម​ដោយ​ដៃ រួច​ព្យាយាម​នាំចូល​ម្ដងទៀត។"
+
 msgid "Metric"
 msgstr "ម៉ែត្រ"
 
@@ -3537,6 +3311,19 @@ msgstr ""
 msgid "Note"
 msgstr "ចំណាំ"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"បាន​បរាជ័យ​ក្នុង​ការ​ទៅ​យក​ថូខឹន​ចូល​ដំណើរការ OAuth "
+"ពី​កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់​បច្ចុប្បន្ន​គឺជា​ប្រភេទ ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"បាន​បរាជ័យ​ក្នុង​ការ​រក្សាទុក​ថូខឹន​ចូល​ដំណើរការ OAuth "
+"ទៅ​កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 expected. Got {0}."
 
@@ -3553,6 +3340,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "ព្រីមីទីវ​ដែល​មាន​លេខ​សម្គាល់ = 0 មិន​អាច​មើល​ឃើញ។"
 
+msgid "Cyclic dependency between relations:"
+msgstr "ភាព​អាស្រ័យ​ទៀងទាត់​រវាង​ទំនាក់ទំនង"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3599,6 +3389,55 @@ msgstr "កំពុង​បញ្ចូល​ទិន្នន័យ​ចូ
 msgid "Test ''{0}'' completed in {1}"
 msgstr "ការ​សាកល្បង ''{0}'' បាន​បញ្ចប់​ក្នុង {1}"
 
+msgid "incomplete"
+msgstr "មិន​ពេញលេញ"
+
+msgid "House {0}"
+msgstr "ផ្ទះ {0}"
+
+msgid "House number {0} at {1}"
+msgstr "ផ្ទះ​លេខ {0} នៅ {1}"
+
+msgid "House number {0}"
+msgstr "ផ្ទះ​លេខ {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "តំណ"
+
+msgid "highway"
+msgstr "ផ្លូវ highway"
+
+msgid "railway"
+msgstr "ផ្លូវ​ដែក"
+
+msgid "waterway"
+msgstr "ផ្លូវ​ទឹក"
+
+msgid "landuse"
+msgstr "ដី​ប្រើប្រាស់"
+
+msgid "building"
+msgstr "អគារ"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} តំណ"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} សមាជិក"
+
+msgid "public transport"
+msgstr "ការ​ដឹកជញ្ជូន​សាធារណៈ"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "ទំនាក់ទំនង"
+
+msgid "Changeset {0}"
+msgstr "សំណុំ​ផ្លាស់ប្ដូរ {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3634,18 +3473,10 @@ msgstr ""
 "មិន​អាច​បញ្ចូល​ព្រីមីទីវ​ចូលគ្នា​ជាមួយ​លេខ​សម្គាល់​ខុសគ្នា​បាន​ទេ។ "
 "លេខ​សម្គាល់​គឺ {0}, ផ្សេងទៀត​គឺ {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "តំណ"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "ផ្លូវ"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "ទំនាក់ទំនង"
-
 msgid "closedway"
 msgstr "ផ្លូវ​បិទ​ជិត"
 
@@ -3683,6 +3514,127 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "ប៉ារ៉ាម៉ែត្រ {0} មិន​នៅ​ក្នុង​ជួរ 0..{1} ។ ទទួល​បាន ''{2}'' ។"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"កន្សោម​ធម្មតា \"{0}\" មាន​កំហុស​ក្នុង​ការ​ញែក​នៅ​អុហ្វសិត {1}, "
+"កំហុស​ទាំងស្រុង៖\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"កន្សោម​ធម្មតា \"{0}\" មាន​កំហុស​ក្នុង​ការ​ញែក, កំហុស​ទាំងស្រុង៖\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "ជួរ​ព្រីមីទីវ ids ដែល​បាន​រំពឹង​ទុក"
+
+msgid "Range of changeset ids expected"
+msgstr "ជួរ changeset ids ដែល​បាន​រំពឹង​ទុក"
+
+msgid "Range of versions expected"
+msgstr "ជួរ​កំណែ​ដែល​បាន​រំពឹង​ទុក"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"ពាក្យ​គន្លឹះ​មិន​អាច​ទទេ​បាន​ឡើយ ពេល​ប្រមាណវិធី​ស្លាក​ត្រូវ​បាន​ប្រើ។ "
+"ការ​ប្រើ​គំរូ៖ ពាក្យ​គន្លឹះ=តម្លៃ"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"មិន​ស្គាល់​ប្រភេទ​ព្រីមីទីវ៖ {0} ។ តម្លៃ​ដែល​អនុញ្ញាត​គឺ​តំណ ផ្លូវ "
+"ឬ​ទំនាក់ទំនង"
+
+msgid "Positive integer expected"
+msgstr "បាន​រំពឹង​ទុក​ចំនួនគត់​វិជ្ជមាន"
+
+msgid "Range of numbers expected"
+msgstr "ជួរ​លេខ​ដែល​បាន​រំពឹង​ទុក"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "ថូខឹន​ដែល​មិន​បាន​រំពឹង​ទុក៖ {0}"
+
+msgid "Missing parameter for OR"
+msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ OR"
+
+msgid "Missing parameter for XOR"
+msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ XOR"
+
+msgid "Missing operator for NOT"
+msgstr "បាត់​ប៉ារ៉ាម៉ែត្រ​សម្រាប់ NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "ថូខឹន​ដែល​មិន​បាន​រំពឹង​ទុក។ បាន​រំពឹង​ទុក {0}, រក​ឃើញ {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទុក​ថ្នាក់​កម្មវិធី​បង្ហាញ​ផែនទី ''{0}'' ។ "
@@ -3769,6 +3721,123 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "សេចក្ដី​ពណ៌នា​ខ្លី៖"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "អ្នកនិពន្ធ៖"
+
+msgid "Webpage:"
+msgstr "ទំព័រ​បណ្ដាញ៖"
+
+msgid "Description:"
+msgstr "សេចក្ដី​ពណ៌នា៖"
+
+msgid "Version:"
+msgstr "កំណែ៖"
+
+msgid "Minimum JOSM Version:"
+msgstr "កំណែ JOSM អប្បបរមា៖"
+
+msgid "by {0}"
+msgstr "ដោយ {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM លំនាំដើម (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"រចនាប័ទ្ម​ខាងក្នុង​ដែល​ត្រូវ​ប្រើ​ជា​មូលដ្ឋាន​សម្រាប់​ពេលវេលា​ដំណើរការ​ឧបករណ៍"
+"​ត្រួតគ្នា​ដែល​អាច​ប្ដូរ​បាន"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "រចនាប័ទ្ម Potlatch 2 ចម្បង"
+
+msgid "Internal Preset"
+msgstr "ការ​កំណត់​ស្រេច​ខាងក្នុង"
+
+msgid "The default preset for JOSM"
+msgstr "ការ​កំណត់​ស្រេច​លំនាំដើម​សម្រាប់ JOSM"
+
+msgid "Addresses"
+msgstr "អាសយដ្ឋាន"
+
+msgid "Checks for errors on addresses"
+msgstr "ពិនិត្យមើល​កំហុស​អាសយដ្ឋាន"
+
+msgid "Tag combinations"
+msgstr "ស្លាក​បន្សំ"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "ពិនិត្យមើល​ស្លាក​ដែល​បាត់ ឬ​បន្សំ​ដែល​សង្ស័យ"
+
+msgid "Deprecated features"
+msgstr "លក្ខណៈ​ដែល​បាន​បដិសេធ"
+
+msgid "Checks for deprecated features"
+msgstr "ពិនិត្យ​លក្ខណៈ​ដែល​បាន​បដិសេធ"
+
+msgid "Geometry"
+msgstr "ធរណីមាត្រ"
+
+msgid "Checks for geometry errors"
+msgstr "ពិនិត្យមើល​កំហុស​ធរណីមាត្រ"
+
+msgid "Highways"
+msgstr "ផ្លូវ​ធំ"
+
+msgid "Checks for errors on highways"
+msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​ផ្លូវ​ធំ"
+
+msgid "Multiple values"
+msgstr "តម្លៃ​ច្រើន"
+
+msgid "Checks for wrong multiple values"
+msgstr "ពិនិត្យមើល​តម្លៃ​ច្រើន​ដែល​ខុស"
+
+msgid "Numeric values"
+msgstr "តម្លៃ​ជា​លេខ"
+
+msgid "Checks for wrong numeric values"
+msgstr "ពិនិត្យមើល​តម្លៃ​ជា​លេខ​ដែល​ខុស"
+
+msgid "Religion"
+msgstr "សាសនា"
+
+msgid "Checks for errors on religious objects"
+msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​វត្ថុ​សាសនា"
+
+msgid "Relations"
+msgstr "ទំនាក់​ទំនង"
+
+msgid "Checks for errors on relations"
+msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​ទំនាក់ទំនង"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "ស្លាក​មិន​ចាំបាច់"
+
+msgid "Checks for unnecessary tags"
+msgstr "ពិនិត្យមើល​ស្លាក​មិន​ចាំបាច់"
+
+msgid "Wikipedia"
+msgstr "វីគីភីឌៀ"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "ពិនិត្យមើល​ស្លាក​វីគីភីឌៀ​មិន​ត្រឹមត្រូវ"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3960,9 +4029,6 @@ msgstr "URL មាន​បំណែក​មិន​ត្រឹមត្រ
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "អាសយដ្ឋាន"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "ពិនិត្យមើល​កំហុស​នៅ​ក្នុង​អាសយដ្ឋាន និង​ទំនាក់ទំនង​ផ្លូវ​ពាក់ព័ន្ធ។"
 
@@ -4156,9 +4222,6 @@ msgstr "តំណ​ផ្លូវ​ស្ទួន​គ្នា"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "ពិនិត្យមើល​ផ្លូវ​ដែល​មាន​តំណ​រៀង​ដូចគ្នា។"
 
-msgid "Highways"
-msgstr "ផ្លូវ​ធំ"
-
 msgid "Performs semantic checks on highways."
 msgstr "ដំណើរការ​ការ​ពិនិត្យ​ស៊ីម៉ានទិច​នៅ​លើ​ផ្លូវ​ធំ"
 
@@ -4719,9 +4782,6 @@ msgstr "ប្រភេទ​ផ្លូវ​ទឹក {0}"
 msgid "boundary type {0}"
 msgstr "ប្រភេទ​ព្រំដែន {0}"
 
-msgid "building"
-msgstr "អគារ"
-
 msgid "area"
 msgstr "ផ្ទៃ"
 
@@ -4841,43 +4901,14 @@ msgstr "កុំ​បង្ហាញ​ម្ដងទៀត (សម័យ​
 msgid "Do not show again (remembers choice)"
 msgstr "កុំ​បង្ហាញ​ម្ដងទៀត (ចងចាំ​ជម្រើស)"
 
-msgid "incomplete"
-msgstr "មិន​ពេញលេញ"
-
-msgid "House {0}"
-msgstr "ផ្ទះ {0}"
-
-msgid "House number {0} at {1}"
-msgstr "ផ្ទះ​លេខ {0} នៅ {1}"
-
-msgid "House number {0}"
-msgstr "ផ្ទះ​លេខ {0}"
-
-msgid "highway"
-msgstr "ផ្លូវ highway"
-
-msgid "railway"
-msgstr "ផ្លូវ​ដែក"
-
-msgid "waterway"
-msgstr "ផ្លូវ​ទឹក"
-
-msgid "landuse"
-msgstr "ដី​ប្រើប្រាស់"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} តំណ"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} សមាជិក"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "មិន​អើពើ URL មិន​ត្រឹមត្រូវ៖ \"{0}\""
 
-msgid "public transport"
-msgstr "ការ​ដឹកជញ្ជូន​សាធារណៈ"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "មិន​អើពើ URL ឯកសារ​មិន​ត្រឹមត្រូវ៖ \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "សំណុំ​ផ្លាស់ប្ដូរ {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "ប៉ារ៉ាម៉ែត្រ \"downloadgps\" មិន​ព្រម​ទទួល​ឈ្មោះ​ឯកសារ ឬ​ឯកសារ URLs"
 
 msgid "Precondition violation"
 msgstr "ការ​ល្មើស​លក្ខណ្ឌ​កំណត់​ស្រេច"
@@ -4967,6 +4998,69 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "បាន​រំពឹង​ទុក​តម្លៃ​មិន​ទទេ​សម្រាប់​ប៉ារ៉ាម៉ែត្រ ''{0}'', បាន​ទទួល ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "កំណែ Java ហួស​សម័យ"
+
+msgid "Update Java"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព Java"
+
+msgid "You are running version {0} of Java."
+msgstr "អ្នក​កំពុង​ប្រើ Java កំណែ {0} ។"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"កំណែ​នេះ​លែង​បាន​គាំទ្រ​ដោយ {0} តាំងពី {1} ហើយ​វា​មិន​គួរ​ប្រើ​ទៀត​ទេ។"
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM ឆាប់ៗ​នឹង​លែង​ដំណើរការ​ជាមួយ​កំណែ​នេះ "
+"យើង​សូម​ឲ្យ​អ្នក​ធ្វើ​បច្ចុប្បន្នភាព​ទៅ Java {0} ។"
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "តើ​អ្នក​ចង់​ធ្វើ​បច្ចុប្បន្នភាព​ឥឡូវ?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "ប្រតិបត្តិ​កម្មវិធី​ពេល​ចាប់ផ្ដើម"
+
+msgid "Building main menu"
+msgstr "បង្កើត​ម៉ឺនុយ​មេ"
+
+msgid "Updating user interface"
+msgstr "កំពុង​ធ្វើ​បច្ចុប្បន្នភាព​ចំណុចប្រទាក់​អ្នកប្រើ"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "ចាប់ផ្ដើម OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "ចាប់ផ្ដើម​ម៉ាស៊ីន​ពិនិត្យ"
+
+msgid "Initializing presets"
+msgstr "ចាប់ផ្ដើម​ការ​កំណត់​ស្រេច"
+
+msgid "Initializing map styles"
+msgstr "ចាប់ផ្ដើម​រចនាប័ទ្ម​ផែនទី"
+
+msgid "Loading imagery preferences"
+msgstr "កំពុង​ផ្ទុក​រូបភាព​ចំណូលចិត្ត"
+
 msgid "usage"
 msgstr "ប្រើប្រាស់"
 
@@ -5453,6 +5547,79 @@ msgstr ""
 "តម្លៃ​បច្ចុប្បន្ន​មិនមែន​ជា​សន្ទស្សន៍​ក្រឡា​ត្រឹមត្រូវ​សម្រាប់​កម្រិត​ពង្រីក​"
 "ដែល​បាន​ផ្ដល់​ទេ"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "អ្នក​បាន​ជួប​បញ្ហា​របាយការណ៍​កំហុស​នី​ក្នុង JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "រាយការណ៍​កំហុស"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "ប្រអប់​កំហុស​ទប់ស្កាត់​សម្រាប់​សម័យ​នេះ។"
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "ការ​ប៉ះទង្គិច​ផ្ទៃ​ខាងក្រោយ៖ មិន​ប៉ះទង្គិច"
 
@@ -6217,6 +6384,22 @@ msgstr ""
 "វត្ថុ​ដែល​មិន​បាន​បញ្ចប់​នឹង​ត្រូវ​បាន​លុបចេញ។ "
 "តើ​អ្នក​ចង់​បិទភ្ជាប់​ទិន្នន័យ​ដោយ​គ្មាន​វត្ថុ​ដែល​បាន​បញ្ចប់?"
 
+msgid "Do you want to paste these tags?"
+msgstr "តើ​អ្នក​ចង់​បិទភ្ជាប់​ស្លាក​ទាំងនេះ​ឬ?"
+
+msgid "Clear buffer"
+msgstr "សម្អាត​ទ្រនាប់"
+
+msgid "Ignore warnings"
+msgstr "មិន​អើពើ​ការ​ព្រមាន"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> សូមទោស មិន​អាច​បិទភ្ជាប់​ស្លាក​ពី​ទ្រនាប់។ វា​មិន​មាន​វត្ថុ JOSM "
+"ឬ​អត្ថបទ​សមរម្យ។ </p></html>"
+
 msgid "For selected objects only"
 msgstr "សម្រាប់តែ​វត្ថុ​ដែល​បាន​ជ្រើស​ប៉ុណ្ណោះ"
 
@@ -6803,9 +6986,6 @@ msgstr "ប្រភព"
 msgid "Title:"
 msgstr "ចំណងជើង៖"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "រចនាប័ទ្ម​ជាប់​មក​ស្រាប់ ផ្លូវ​ខាងក្នុង៖"
 
@@ -6918,9 +7098,6 @@ msgstr ""
 "បាន​បញ្ជាក់​បញ្ជី​លេខ​សម្គាល់​មិន​ត្រឹមត្រូវ\n"
 "មិន​អាច​បន្ត​បាន។"
 
-msgid "Relations"
-msgstr "ទំនាក់​ទំនង"
-
 msgid "Open a list of all relations."
 msgstr "បើក​បញ្ជី​ទំនាក់ទំនង​ទាំងអស់។"
 
@@ -8424,25 +8601,6 @@ msgstr "បាន​ទាមទារ​តម្លៃ​សម្រាប់
 msgid "Value for longitude in range [-180,180] required."
 msgstr "បាន​ទាមទារ​តម្លៃ​សម្រាប់​រយៈបណ្ដោយ​ក្នុង​ចន្លោះ  [-180,180] ។"
 
-msgid "Data Sources and Types:"
-msgstr "ប្រភព​ទិន្នន័យ និង​ប្រភេទ៖"
-
-msgid "OpenStreetMap data"
-msgstr "ទិន្នន័យ OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"ជ្រើស​ដើម្បី​ទាញ​យក​ទិន្នន័យ OSM នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
-
-msgid "Raw GPS data"
-msgstr "ទិន្នន័យ​ជីភីអេស​ដើម"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "ជ្រើស​ដើម្បី​ទាញ​យក​ដាន​ជីភីអេស​នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
-
-msgid "Select to download notes in the selected download area."
-msgstr "ជ្រើស​ដើម្បី​ទាញ​យក​ចំណាំ​នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
-
 msgid "Download as new layer"
 msgstr "ទាញ​យក​ជា​ស្រទាប់​ថ្មី"
 
@@ -8477,27 +8635,12 @@ msgstr ""
 "ប្រើ​កណ្ដុរ​ឆ្វេង​ដើម្បី​ជ្រើស​ផ្ទៃ ប្រើ​សញ្ញា​ព្រួញ "
 "ឬ​កណ្ដុរ​ស្ដាំ​ដើម្បី​រមូរ​ផែនទី ប្រើ​កង់​កណ្ដុរ ឬ​សញ្ញា +/- ដើម្បី​ពង្រីក។"
 
-msgid "No area selected yet"
-msgstr "មិន​បាន​ជ្រើស​ផ្ទៃ​នៅឡើយ"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "តំបន់​ទាញ​យក​ធំ​ពេក វា​នឹង​បដិសេធ​ដោយ​ម៉ាស៊ីន​មេ"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "តំបន់​ទាញ​យក​គឺ​ត្រឹមត្រូវ ទំហំ​គឺ​អាច​ទទួល​យក​បាន​ទៅ​ម៉ាស៊ីន​មេ"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "ចុច​ដើម្បី​បិទ​ប្រអប់ រួច​បោះបង់​ការ​ទាញ​យក"
 
 msgid "Click to download the currently selected area"
 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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "ទាញ​យក​អ្នក​អះអាង (ទំនាក់ទំនង​មេ)"
 
@@ -8520,6 +8663,89 @@ msgstr "ជ្រើស​ថា​តើ​សមាជិក​នៃ​ទំ
 msgid "Download referrers (parent relations and ways)"
 msgstr "ទាញ​យក​អ្នក​អះអាង (ផ្លូវ និង​ទំនាក់ទំនង​មេ)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "ប្រភព​ទិន្នន័យ និង​ប្រភេទ៖"
+
+msgid "OpenStreetMap data"
+msgstr "ទិន្នន័យ OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"ជ្រើស​ដើម្បី​ទាញ​យក​ទិន្នន័យ OSM នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
+
+msgid "Raw GPS data"
+msgstr "ទិន្នន័យ​ជីភីអេស​ដើម"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "ជ្រើស​ដើម្បី​ទាញ​យក​ដាន​ជីភីអេស​នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
+
+msgid "Select to download notes in the selected download area."
+msgstr "ជ្រើស​ដើម្បី​ទាញ​យក​ចំណាំ​នៅ​ក្នុង​តំបន់​ទាញ​យក​ដែល​បាន​ជ្រើស។"
+
+msgid "Please select a download area first."
+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 ""
+
+msgid "No area selected yet"
+msgstr "មិន​បាន​ជ្រើស​ផ្ទៃ​នៅឡើយ"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "តំបន់​ទាញ​យក​ធំ​ពេក វា​នឹង​បដិសេធ​ដោយ​ម៉ាស៊ីន​មេ"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "តំបន់​ទាញ​យក​គឺ​ត្រឹមត្រូវ ទំហំ​គឺ​អាច​ទទួល​យក​បាន​ទៅ​ម៉ាស៊ីន​មេ"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr ""
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8562,9 +8788,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9178,6 +9401,18 @@ msgstr "ផ្ទៀងផ្ទាត់​ជាមួយ​ឈ្មោះ​
 msgid "Cancel authentication"
 msgstr "បោះបង់​ការ​ផ្ទៀងផ្ទាត់"
 
+msgid "Question"
+msgstr "សំណួរ"
+
+msgid "Message"
+msgstr "សារ"
+
+msgid "Enter text"
+msgstr "បញ្ចូល​អត្ថបទ"
+
+msgid "Installing plugins"
+msgstr "ដំឡើង​កម្មវិធី​ជំនួយ"
+
 msgid "Downloading file"
 msgstr "ទាញ​យក​ឯកសារ"
 
@@ -9732,11 +9967,6 @@ msgstr "ជ្រើស​វត្ថុ​ដើម្បី​ផ្ទុក
 msgid "Cancel uploading"
 msgstr "បោះបង់​ការ​ផ្ទុក​ឡើង"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"តម្លៃ​មិន​រំពឹង​ទុក​សម្រាប់​ពាក្យ​គន្លឹះ ''{0}'' នៅ​ក្នុង​ចំណូលចិត្ត "
-"បាន​ទទួល ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "បំពេញ​សំណុំ​ផ្លាស់ប្ដូរ​មួយ រួច​ត្រឡប់​ទៅ​ប្រអប់​ផ្ទុក​ឡើង"
 
@@ -9820,6 +10050,187 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "វត្ថុ {0} ដែល​ត្រូវ​លុប៖"
 
+msgid "All Formats"
+msgstr "ទ្រង់ទ្រាយ​ទាំងអស់"
+
+msgid "Could not export ''{0}''."
+msgstr "មិន​អាច​នាំចេញ ''{0}'' ។"
+
+msgid "Could not import ''{0}''."
+msgstr "មិន​អាច​នាំចូល ''{0}'' ។"
+
+msgid "Could not import files."
+msgstr "មិន​អាច​នាំចូល​ឯកសារ។"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>មិន​អាច​អាន​ឯកសារ ''{0}'' ។<br>កំហុស​គឺ៖<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>មិន​អាច​អាន​ឯកសារ។<br>កំហុស​គឺ៖<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "ឯកសារ GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "មិន​គាំទ្រ​ស្រទាប់ ''{0}''"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"ចំណាំ៖ GPL មិន​ឆបគ្នា​ជាមួយ​អាជ្ញាប័ណ្ណ OSM ។ កុំ​ផ្ទុក​ដាន​អាជ្ញាប័ណ្ណ GPL "
+"ឡើង។"
+
+msgid "GPS track description"
+msgstr "សេចក្ដី​ពណ៌នា​ដាន GPS"
+
+msgid "Add author information"
+msgstr "បន្ថែម​ព័ត៌មាន​អ្នកនិពន្ធ"
+
+msgid "Real name"
+msgstr "ឈ្មោះ​ពិត"
+
+msgid "E-Mail"
+msgstr "អ៊ីមែល"
+
+msgid "Copyright (URL)"
+msgstr "រក្សាសិទ្ធិ (URL)"
+
+msgid "Predefined"
+msgstr "កំណត់​ជា​មុន"
+
+msgid "Copyright year"
+msgstr "ឆ្នាំរក្សាសិទ្ធិ"
+
+msgid "Keywords"
+msgstr "ពាក្យ​គន្លឹះ"
+
+msgid "Export options"
+msgstr "ជម្រើស​នាំចេញ"
+
+msgid "Export and Save"
+msgstr "នាំចេញ រូច​ហើយ​រក្សាទុក"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"កំហុស​ពេល​នាំចេញ {0} ៖\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "ជ្រើស​អាជ្ញាប័ណ្ណ​កំណត់​មុន"
+
+msgid "GPX Files"
+msgstr "ឯកសារ GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "ការ​ញែក​ទិន្នន័យ​សម្រាប់​ស្រទាប់ ''{0}'' បាន​បរាជ័យ"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"មាន​កំហុស​ពេល​ញែក​ទិន្នន័យ gpx សម្រាប់​ស្រទាប់ ''{0}'' ។ "
+"នឹង​អាច​រក​បានតែ​ផ្នែក​នៃ​ឯកសារ​ប៉ុណ្ណោះ។"
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"មាន​កំហុស​ពេល​ញែក​ឯកសារ gpx ''{0}'' ។ "
+"នឹង​អាច​រក​បានតែ​ផ្នែក​នៃ​ឯកសារ​ប៉ុណ្ណោះ។"
+
+msgid "Image Files"
+msgstr "ឯកសារ​រូបភាព"
+
+msgid "folder"
+msgstr "ថត"
+
+msgid "Looking for image files"
+msgstr "រក​មើល​ឯកសារ​រូបភាព"
+
+msgid "No image files found."
+msgstr "រក​មិន​ឃើញ​ឯកសារ​រូបភាព"
+
+msgid "NMEA-0183 Files"
+msgstr "ឯកសារ NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "បាន​នាំចូល​កូអរដោណេ៖ {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "ប្រយោគ​មិន​ត្រឹមត្រូវ៖ {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "កំហុស​ឆេកសាំ៖ {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "មិន​ស្គាល់​ប្រយោគ៖ {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "កូអរដោណេ​សូន្យ៖ {0}"
+
+msgid "NMEA import success:"
+msgstr "នាំចូល NMEA ដោយ​ជោគជ័យ៖"
+
+msgid "NMEA import failure!"
+msgstr "ការ​នាំចូល NMEA បាន​បរាជ័យ!"
+
+msgid "Note Files"
+msgstr "ឯកសារ​ចំណាំ"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM bzip2 បាន​បង្ហាប់"
+
+msgid "OsmChange File"
+msgstr "ឯកសារ OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "មិន​មាន​ឯកសារ ''{0}'' ។"
+
+msgid "No data found in file {0}."
+msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​នៅ​ក្នុង​ឯកសារ {0} ។"
+
+msgid "Open OsmChange file"
+msgstr "បើក​ឯកសារ OsmChange"
+
+msgid "OSM Server Files"
+msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>កំហុស​បាន​កើតឡើង​ពេល​រក្សាទុក។<br>កំហុស​គឺ៖<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>កំហុស​បាន​កើតឡើង​ពេល​ស្ដារ​ឯកសារ​បម្រុងទុក។<br>កំហុស​គឺ៖<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM gzip បាន​បង្ហាប់"
+
+msgid "Invalid dataset"
+msgstr "សំណុំ​ទិន្នន័យ​មិន​ត្រឹមត្រូវ"
+
+msgid "No data found for layer ''{0}''."
+msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​សម្រាប់​ស្រទាប់ ''{0}'' ។"
+
+msgid "No data found in file ''{0}''."
+msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​នៅ​ក្នុង​ឯកសារ ''{0}'' ។"
+
+msgid "Open OSM file"
+msgstr "បើក​ឯកសារ OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "ឯកសារ WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "មិន​គាំទ្រ​កំណែ​ឯកសារ WMS; បាន​រកឃើញ {0}, រំពឹង​ទុក {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9927,6 +10338,34 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "លាក់​សារ​នេះ ហើយ​កុំ​បង្ហាញ​វា​ម្ដងទៀត"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "មិន​អាច​បង្កើត​ថត {0}, ការ​រក្សាទុក​ស្វ័យប្រវត្តិ​នឹង​ត្រូវ​បាន​បិទ"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "មិន​អាច​បង្កើត​ឯកសារ {0}, ឈ្មោះ​ឯកសារ​ផ្សារ​នឹង​ត្រូវ​បាន​ប្រើ"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"IOError ពេល​បង្កើត​ឯកសារ ការ​រក្សាទុក​ស្វ័យប្រវត្តិ​នឹង​ត្រូវ​បាន​រំលង៖ {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "មិន​អាច​លុប​ឯកសារ​បម្រុងទុក​ចាស់ {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "ការងារ​របស់​អ្នក​ត្រូវ​បាន​រក្សាទុក​ដោយ​ស្វ័យប្រវត្តិ។"
+
+msgid "Restoring files"
+msgstr "ការ​ស្ដារ​ឯកសារ"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "ប្ដូរ​ពណ៌​តាម​តម្រូវការ"
 
@@ -10026,6 +10465,9 @@ msgstr "ចំណាំ​សរុប៖"
 msgid "Changes need uploading?"
 msgstr "ការ​ផ្លាស់ប្ដូរ​ដែល​ត្រូវ​ផ្ទុក​ឡើង?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "នៅ​ក្រៅ​តំបន់​ទាញ​យក"
 
@@ -10101,6 +10543,9 @@ msgstr "កំហុស​សុពលកម្ម"
 msgid "No validation errors"
 msgstr "មិន​មាន​កំហុស​សុពលកម្ម"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "កំណត់​ចំណាំ WMS"
 
@@ -10716,9 +11161,6 @@ msgstr "(URL គឺ៖ "
 msgid "Select the map painting styles"
 msgstr "ជ្រើស​រចនាប័ទ្ម​គំនូរ​ផែនទី"
 
-msgid "loading style ''{0}''..."
-msgstr "កំពុង​ផ្ទុក​រចនាប័ទ្ម ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10729,6 +11171,9 @@ msgstr[0] ""
 "មាន​កំហុស {0} ពេល​ផ្ទុក​រចនាប័ទ្ម​នេះ។ ជ្រើស ''ព័ត៌មាន'' "
 "ពី​ការ​ចុច​កណ្ដុរស្ដាំ​លើ​ម៉ឺនុយ​សម្រាប់​ព័ត៌មាន​លម្អិត។"
 
+msgid "loading style ''{0}''..."
+msgstr "កំពុង​ផ្ទុក​រចនាប័ទ្ម ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទុក​រចនាប័ទ្ម​គំនូរ​ផែនទី​ពី ''{0}'' ។ "
@@ -11282,27 +11727,6 @@ msgstr "ទាញ​យក​កម្មវិធី​ជំនួយ"
 msgid "Icon paths:"
 msgstr "ផ្លូវ​រូបតំណាង៖"
 
-msgid "Short Description:"
-msgstr "សេចក្ដី​ពណ៌នា​ខ្លី៖"
-
-msgid "Author:"
-msgstr "អ្នកនិពន្ធ៖"
-
-msgid "Webpage:"
-msgstr "ទំព័រ​បណ្ដាញ៖"
-
-msgid "Description:"
-msgstr "សេចក្ដី​ពណ៌នា៖"
-
-msgid "Version:"
-msgstr "កំណែ៖"
-
-msgid "Minimum JOSM Version:"
-msgstr "កំណែ JOSM អប្បបរមា៖"
-
-msgid "by {0}"
-msgstr "ដោយ {0}"
-
 msgid "Name (optional):"
 msgstr "ឈ្មោះ (ជា​ជម្រើស)៖"
 
@@ -12468,21 +12892,6 @@ msgstr ""
 "ព្រមាន៖ ទ្រង់ទ្រាយ​មិន​ត្រឹមត្រូវ​នៃ​ធាតុ​នៅ​ក្នុង​បញ្ជី​រចនាប័ទ្ម ''{0}'' ។ "
 "បាន​ទទួល ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM លំនាំដើម (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"រចនាប័ទ្ម​ខាងក្នុង​ដែល​ត្រូវ​ប្រើ​ជា​មូលដ្ឋាន​សម្រាប់​ពេលវេលា​ដំណើរការ​ឧបករណ៍"
-"​ត្រួតគ្នា​ដែល​អាច​ប្ដូរ​បាន"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "រចនាប័ទ្ម Potlatch 2 ចម្បង"
-
 msgid "Map Settings"
 msgstr "ការ​កំណត់​ផែនទី"
 
@@ -12580,12 +12989,6 @@ msgstr ""
 "ព្រមាន៖ ទ្រង់ទ្រាយ​មិន​ត្រឹមត្រូវ​នៃ​ធាតុ​នៅ​ក្នុង​បញ្ជី​កំណត់​ស្រេច ''{0}'' "
 "។ បាន​ទទួល ''{1}''"
 
-msgid "Internal Preset"
-msgstr "ការ​កំណត់​ស្រេច​ខាងក្នុង"
-
-msgid "The default preset for JOSM"
-msgstr "ការ​កំណត់​ស្រេច​លំនាំដើម​សម្រាប់ JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "កម្មវិធី​ជំនួយ {0} នៅ​បាន​ទាមទារ​ដោយ​កម្មវិធី​ជំនួយ {1} ទាំងនេះ៖"
@@ -13087,9 +13490,6 @@ msgstr ""
 "បាន​បរាជ័យ​ក្នុង​ការ​ទៅ​យក​ព័ត៌មាន​សម្ងាត់ OSM "
 "ពី​កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់។"
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់​បច្ចុប្បន្ន​គឺជា​ប្រភេទ ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "បាន​បរាជ័យ​ក្នុង​ការ​រក្សាទុក​ព័ត៌មាន​សម្ងាត់ OSM "
@@ -13109,16 +13509,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"បាន​បរាជ័យ​ក្នុង​ការ​ទៅ​យក​ថូខឹន​ចូល​ដំណើរការ OAuth "
-"ពី​កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"បាន​បរាជ័យ​ក្នុង​ការ​រក្សាទុក​ថូខឹន​ចូល​ដំណើរការ OAuth "
-"ទៅ​កម្មវិធី​គ្រប់គ្រង​ព័ត៌មាន​សម្ងាត់"
-
 msgid "Save to preferences"
 msgstr "រក្សាទុក​ទៅ​ចំណូលចិត្ត"
 
@@ -13322,69 +13712,6 @@ msgstr ""
 "ព្រមាន៖ ទ្រង់ទ្រាយ​មិន​ត្រឹមត្រូវ​នៃ​ធាតុ​នៅ​ក្នុង​បញ្ជី​បន្ទាត់ ''{0}'' ។ "
 "បាន​ទទួល ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "ពិនិត្យមើល​កំហុស​អាសយដ្ឋាន"
-
-msgid "Tag combinations"
-msgstr "ស្លាក​បន្សំ"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "ពិនិត្យមើល​ស្លាក​ដែល​បាត់ ឬ​បន្សំ​ដែល​សង្ស័យ"
-
-msgid "Deprecated features"
-msgstr "លក្ខណៈ​ដែល​បាន​បដិសេធ"
-
-msgid "Checks for deprecated features"
-msgstr "ពិនិត្យ​លក្ខណៈ​ដែល​បាន​បដិសេធ"
-
-msgid "Geometry"
-msgstr "ធរណីមាត្រ"
-
-msgid "Checks for geometry errors"
-msgstr "ពិនិត្យមើល​កំហុស​ធរណីមាត្រ"
-
-msgid "Checks for errors on highways"
-msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​ផ្លូវ​ធំ"
-
-msgid "Multiple values"
-msgstr "តម្លៃ​ច្រើន"
-
-msgid "Checks for wrong multiple values"
-msgstr "ពិនិត្យមើល​តម្លៃ​ច្រើន​ដែល​ខុស"
-
-msgid "Numeric values"
-msgstr "តម្លៃ​ជា​លេខ"
-
-msgid "Checks for wrong numeric values"
-msgstr "ពិនិត្យមើល​តម្លៃ​ជា​លេខ​ដែល​ខុស"
-
-msgid "Religion"
-msgstr "សាសនា"
-
-msgid "Checks for errors on religious objects"
-msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​វត្ថុ​សាសនា"
-
-msgid "Checks for errors on relations"
-msgstr "ពិនិត្យមើល​កំហុស​នៅ​លើ​ទំនាក់ទំនង"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "ស្លាក​មិន​ចាំបាច់"
-
-msgid "Checks for unnecessary tags"
-msgstr "ពិនិត្យមើល​ស្លាក​មិន​ចាំបាច់"
-
-msgid "Wikipedia"
-msgstr "វីគីភីឌៀ"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "ពិនិត្យមើល​ស្លាក​វីគីភីឌៀ​មិន​ត្រឹមត្រូវ"
-
 msgid "Tag checker rules"
 msgstr "បន្ទាត់​កម្មវិធី​ពិនិត្យ​ស្លាក"
 
@@ -13640,6 +13967,39 @@ msgstr "ឯកសារ​​ទាំងអស់ (*.*)"
 msgid "Received error page:"
 msgstr "បាន​ទទួល​ទំព័រ​កំហុស៖"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"ចំណូលចិត្ត​ដែល​មាន ''{0}'' មិន​រួមបញ្ចូល ''{1}'' ។ "
+"មិន​អាច​ស្ដារ​ភូមិសាស្ត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"ចំណូលចិត្ត​ដែល​ប្រើ​ពាក្យ​គន្លឹះ ''{0}'' "
+"មិន​បាន​ផ្ដល់​តម្លៃ​ចំនួន​គត់​សម្រាប់ ''{1}'' ។ បាន​ទទួល {2} ។ "
+"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"បាន​បរាជ័យ​ក្នុង​ការ​ញែក​វាល ''{1}'' "
+"នៅ​ក្នុង​ចំណូលចិត្ត​ដោយ​ប្រើ​ពាក្យគន្លឹះ ''{0}'' ។ ករណី​លើកលែង​គឺ៖ {2} ។ "
+"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"ចំណូលចិត្ត​ដែល​ប្រើ​ពាក្យ​គន្លឹះ ''{0}'' មិន​មាន។ "
+"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "មិន​អើពើ​ធរណីមាត្រ​មិន​ត្រឹមត្រូវ៖ {0}"
+
 msgid "Min. latitude"
 msgstr "រយៈទទឹង​អប្ប."
 
@@ -13774,9 +14134,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "លុប​សមាជិក {0} ដែល​បាន​ប្រើ​ដោយ {1}"
 
-msgid "All Formats"
-msgstr "ទ្រង់ទ្រាយ​ទាំងអស់"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "កំពុង​ទាញ​យក​ចំណុច {0} ទៅ {1}..."
 
@@ -13910,94 +14267,6 @@ msgstr "កំពុង​ញែក​ចម្លើយតប​ពី​ម៉
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "ធាតុ XML មិន​រំពឹង​ទុក​ដែល​មាន​ឈ្មោះ ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "មិន​អាច​នាំចេញ ''{0}'' ។"
-
-msgid "Could not import ''{0}''."
-msgstr "មិន​អាច​នាំចូល ''{0}'' ។"
-
-msgid "Could not import files."
-msgstr "មិន​អាច​នាំចូល​ឯកសារ។"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>មិន​អាច​អាន​ឯកសារ ''{0}'' ។<br>កំហុស​គឺ៖<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>មិន​អាច​អាន​ឯកសារ។<br>កំហុស​គឺ៖<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "ឯកសារ GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "មិន​គាំទ្រ​ស្រទាប់ ''{0}''"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"ចំណាំ៖ GPL មិន​ឆបគ្នា​ជាមួយ​អាជ្ញាប័ណ្ណ OSM ។ កុំ​ផ្ទុក​ដាន​អាជ្ញាប័ណ្ណ GPL "
-"ឡើង។"
-
-msgid "GPS track description"
-msgstr "សេចក្ដី​ពណ៌នា​ដាន GPS"
-
-msgid "Add author information"
-msgstr "បន្ថែម​ព័ត៌មាន​អ្នកនិពន្ធ"
-
-msgid "Real name"
-msgstr "ឈ្មោះ​ពិត"
-
-msgid "E-Mail"
-msgstr "អ៊ីមែល"
-
-msgid "Copyright (URL)"
-msgstr "រក្សាសិទ្ធិ (URL)"
-
-msgid "Predefined"
-msgstr "កំណត់​ជា​មុន"
-
-msgid "Copyright year"
-msgstr "ឆ្នាំរក្សាសិទ្ធិ"
-
-msgid "Keywords"
-msgstr "ពាក្យ​គន្លឹះ"
-
-msgid "Export options"
-msgstr "ជម្រើស​នាំចេញ"
-
-msgid "Export and Save"
-msgstr "នាំចេញ រូច​ហើយ​រក្សាទុក"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"កំហុស​ពេល​នាំចេញ {0} ៖\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "ជ្រើស​អាជ្ញាប័ណ្ណ​កំណត់​មុន"
-
-msgid "GPX Files"
-msgstr "ឯកសារ GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "ការ​ញែក​ទិន្នន័យ​សម្រាប់​ស្រទាប់ ''{0}'' បាន​បរាជ័យ"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"មាន​កំហុស​ពេល​ញែក​ទិន្នន័យ gpx សម្រាប់​ស្រទាប់ ''{0}'' ។ "
-"នឹង​អាច​រក​បានតែ​ផ្នែក​នៃ​ឯកសារ​ប៉ុណ្ណោះ។"
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"មាន​កំហុស​ពេល​ញែក​ឯកសារ gpx ''{0}'' ។ "
-"នឹង​អាច​រក​បានតែ​ផ្នែក​នៃ​ឯកសារ​ប៉ុណ្ណោះ។"
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "កំហុស​ញែក៖ រចនាសម្ព័ន្ធ​ឯកសារ​មិន​ត្រឹមត្រូវ​សម្រាប់​ឯកសារ GPX ។"
 
@@ -14007,18 +14276,6 @@ msgstr "(នៅ​បន្ទាត់​ទី {0}, ជួរឈរ {1})"
 msgid "Unknown mode {0}."
 msgstr "មិន​ស្គាល់​របៀប {0} ។"
 
-msgid "Image Files"
-msgstr "ឯកសារ​រូបភាព"
-
-msgid "folder"
-msgstr "ថត"
-
-msgid "Looking for image files"
-msgstr "រក​មើល​ឯកសារ​រូបភាព"
-
-msgid "No image files found."
-msgstr "រក​មិន​ឃើញ​ឯកសារ​រូបភាព"
-
 msgid "get number of unread messages"
 msgstr "យក​សារ​មួយ​ចំនួន​ដែល​មិន​បាន​អាន"
 
@@ -14071,36 +14328,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "ម៉ាស៊ីន​មេ​បាន​ឆ្លើយតប​ដោយ​ចម្លើយ​កូដ 404 សម្រាប់​លេខ​សម្គាល់ {0} ។ រំលង។"
 
-msgid "NMEA-0183 Files"
-msgstr "ឯកសារ NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "បាន​នាំចូល​កូអរដោណេ៖ {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "ប្រយោគ​មិន​ត្រឹមត្រូវ៖ {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "កំហុស​ឆេកសាំ៖ {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "មិន​ស្គាល់​ប្រយោគ៖ {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "កូអរដោណេ​សូន្យ៖ {0}"
-
-msgid "NMEA import success:"
-msgstr "នាំចូល NMEA ដោយ​ជោគជ័យ៖"
-
-msgid "NMEA import failure!"
-msgstr "ការ​នាំចូល NMEA បាន​បរាជ័យ!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "ការ​លើកលែង​ចំណុច​ចង្អុល​សូន្យ អាច​បាត់​ស្លាក​ខ្លះ។"
 
-msgid "Note Files"
-msgstr "ឯកសារ​ចំណាំ"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14199,9 +14429,6 @@ msgstr "(កូដ={0})"
 msgid "The server replied an error with code {0}."
 msgstr "ម៉ាស៊ីន​មេ​បាន​ឆ្លើយតប​កំហុស​ដែល​មាន​កូដ {0} ។"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM bzip2 បាន​បង្ហាប់"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "ឯកសារ Prolog របស់ OsmChange បាន​សរសេរ​រួចរាល់។ សូម​សរសេរ​តែ​ម្ដង​បាន​ហើយ។"
@@ -14210,18 +14437,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "ឯកសារ Prolog របស់ OsmChange មិនទាន់​បាន​សរសេរ​ទេ។ សូម​សរសេរ​ជាមុន​សិន។"
 
-msgid "OsmChange File"
-msgstr "ឯកសារ OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "មិន​មាន​ឯកសារ ''{0}'' ។"
-
-msgid "No data found in file {0}."
-msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​នៅ​ក្នុង​ឯកសារ {0} ។"
-
-msgid "Open OsmChange file"
-msgstr "បើក​ឯកសារ OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "មិន​គាំទ្រ​កំណែ៖ {0}"
 
@@ -14277,36 +14492,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "តម្លៃ​មិន​រំពឹង​ទុក​សម្រាប់​ចំណូលចិត្ត ''{0}'' ។ បាន​ទទួល ''{1}'' ។"
 
-msgid "OSM Server Files"
-msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>កំហុស​បាន​កើតឡើង​ពេល​រក្សាទុក។<br>កំហុស​គឺ៖<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>កំហុស​បាន​កើតឡើង​ពេល​ស្ដារ​ឯកសារ​បម្រុងទុក។<br>កំហុស​គឺ៖<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "ឯកសារ​ម៉ាស៊ីន​មេ OSM gzip បាន​បង្ហាប់"
-
 msgid "Parsing OSM history data ..."
 msgstr "កំពុង​ញែក​ទិន្នន័យ​ប្រវត្តិ OSM ..."
 
-msgid "Invalid dataset"
-msgstr "សំណុំ​ទិន្នន័យ​មិន​ត្រឹមត្រូវ"
-
-msgid "No data found for layer ''{0}''."
-msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​សម្រាប់​ស្រទាប់ ''{0}'' ។"
-
-msgid "No data found in file ''{0}''."
-msgstr "រក​មិន​ឃើញ​ទិន្នន័យ​នៅ​ក្នុង​ឯកសារ ''{0}'' ។"
-
-msgid "Open OSM file"
-msgstr "បើក​ឯកសារ OSM"
-
 msgid "Reading was canceled"
 msgstr "បាន​បោះបង់​ការ​អាន"
 
@@ -14452,6 +14640,9 @@ msgstr "កំពុង​ទាក់ទង​ទៅ​ម៉ាស៊ីន​
 msgid "Downloading OSM notes..."
 msgstr "កំពុង​ទាញ​យក​តំណ OSM..."
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14513,14 +14704,10 @@ msgstr "បាន​រក​ឃើញ​លេខ​សម្គាល់ 0 ម
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr "ឯកសារ WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "មិន​គាំទ្រ​កំណែ​ឯកសារ WMS; បាន​រកឃើញ {0}, រំពឹង​ទុក {1}"
+"តម្លៃ​មិន​រំពឹង​ទុក​សម្រាប់​ពាក្យ​គន្លឹះ ''{0}'' នៅ​ក្នុង​ចំណូលចិត្ត "
+"បាន​ទទួល ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "បាន​អាន {0} បៃ"
@@ -15627,36 +15814,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr "កំណែ Java ហួស​សម័យ"
-
-msgid "Update Java"
-msgstr "ធ្វើ​បច្ចុប្បន្នភាព Java"
-
-msgid "You are running version {0} of Java."
-msgstr "អ្នក​កំពុង​ប្រើ Java កំណែ {0} ។"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"កំណែ​នេះ​លែង​បាន​គាំទ្រ​ដោយ {0} តាំងពី {1} ហើយ​វា​មិន​គួរ​ប្រើ​ទៀត​ទេ។"
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM ឆាប់ៗ​នឹង​លែង​ដំណើរការ​ជាមួយ​កំណែ​នេះ "
-"យើង​សូម​ឲ្យ​អ្នក​ធ្វើ​បច្ចុប្បន្នភាព​ទៅ Java {0} ។"
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "តើ​អ្នក​ចង់​ធ្វើ​បច្ចុប្បន្នភាព​ឥឡូវ?"
-
 msgid "reserved"
 msgstr ""
 
@@ -15731,22 +15888,6 @@ msgstr "តួអក្សរ​សង្ស័យ​នៅ​ក្នុង​
 msgid "Value is too long (max {0} characters):"
 msgstr "តម្លៃ​វែង​ពេក (តួងក្សរ​អតិប្បបរមា {0})៖"
 
-msgid "Do you want to paste these tags?"
-msgstr "តើ​អ្នក​ចង់​បិទភ្ជាប់​ស្លាក​ទាំងនេះ​ឬ?"
-
-msgid "Clear buffer"
-msgstr "សម្អាត​ទ្រនាប់"
-
-msgid "Ignore warnings"
-msgstr "មិន​អើពើ​ការ​ព្រមាន"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> សូមទោស មិន​អាច​បិទភ្ជាប់​ស្លាក​ពី​ទ្រនាប់។ វា​មិន​មាន​វត្ថុ JOSM "
-"ឬ​អត្ថបទ​សមរម្យ។ </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15769,119 +15910,13 @@ msgid "day"
 msgid_plural "days"
 msgstr[0] "ថ្ងៃ"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"ចំណូលចិត្ត​ដែល​មាន ''{0}'' មិន​រួមបញ្ចូល ''{1}'' ។ "
-"មិន​អាច​ស្ដារ​ភូមិសាស្ត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"ចំណូលចិត្ត​ដែល​ប្រើ​ពាក្យ​គន្លឹះ ''{0}'' "
-"មិន​បាន​ផ្ដល់​តម្លៃ​ចំនួន​គត់​សម្រាប់ ''{1}'' ។ បាន​ទទួល {2} ។ "
-"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"បាន​បរាជ័យ​ក្នុង​ការ​ញែក​វាល ''{1}'' "
-"នៅ​ក្នុង​ចំណូលចិត្ត​ដោយ​ប្រើ​ពាក្យគន្លឹះ ''{0}'' ។ ករណី​លើកលែង​គឺ៖ {2} ។ "
-"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"ចំណូលចិត្ត​ដែល​ប្រើ​ពាក្យ​គន្លឹះ ''{0}'' មិន​មាន។ "
-"មិន​អាច​ស្ដារ​ធរណីមាត្រ​បង្អួច​ពី​ចំណូលចិត្ត។"
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "មិន​អើពើ​ធរណីមាត្រ​មិន​ត្រឹមត្រូវ៖ {0}"
-
 msgid "Failed to load XML schema."
 msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទុក​ដ្យាក្រាម XML ។"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "អ្នក​បាន​ជួប​បញ្ហា​របាយការណ៍​កំហុស​នី​ក្នុង JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "រាយការណ៍​កំហុស"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "ប្រអប់​កំហុស​ទប់ស្កាត់​សម្រាប់​សម័យ​នេះ។"
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "ធ្វើ​បច្ចុប្បន្នភាព JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19610,9 +19645,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -20192,6 +20224,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22632,6 +22667,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -23492,6 +23530,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -24187,6 +24297,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24939,6 +25052,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -25049,15 +25165,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32996,13 +33103,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -33500,6 +33613,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33508,6 +33624,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ko.po b/i18n/po/ko.po
index 01c5a71..13d1b32 100644
--- a/i18n/po/ko.po
+++ b/i18n/po/ko.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-05-17 08:29+0000\n"
 "Last-Translator: Glados <Unknown>\n"
 "Language-Team: Korean <ko at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:50+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:50+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ko\n"
 
@@ -55,54 +55,9 @@ msgstr "배경 사진 이용 약관"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "현재 플랫폼(\"{0}\")에서는 링크 열기를 지원하지 않습니다"
 
-msgid "Executing platform startup hook"
-msgstr "훅을 시작하면 플랫폼 실행"
-
-msgid "Building main menu"
-msgstr "주요 메뉴 구축 중"
-
-msgid "Help"
-msgstr "도움말"
-
-msgid "Initializing internal boundaries data"
-msgstr "내부 경계 데이터를 초기화하는 중"
-
-msgid "Initializing OSM API"
-msgstr "OSM API 초기화 중"
-
-msgid "Initializing internal traffic data"
-msgstr "내부 교통 정보를 초기화하는 중"
-
-msgid "Initializing validator"
-msgstr "유효성 검사 초기화 중"
-
-msgid "Initializing presets"
-msgstr "프리셋 초기화 중"
-
-msgid "Initializing map styles"
-msgstr "지도 스타일 초기화 중"
-
-msgid "Loading imagery preferences"
-msgstr "사진 환경 설정을 불러오는 중"
-
-msgid "Updating user interface"
-msgstr "사용자 인터페이스 업데이트 중"
-
 msgid "Failed to save default preferences."
 msgstr "기본 환경 설정을 저장하는데 실패하였습니다."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "잘못된 URL 무시: \"{0}\""
-
-msgid "Warning"
-msgstr "경고"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "잘못된 파일 URL 무시: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "변수 \"downloadgps\"를 파일 이름이나 파일 URL에서 받아올 수 없습니다"
-
 msgid "About"
 msgstr "정보"
 
@@ -179,6 +134,9 @@ msgstr "취소"
 msgid "Click to abort launching external browsers"
 msgstr "바깥 브라우저 실행을 중단하려면 클릭하세요"
 
+msgid "Warning"
+msgstr "경고"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "이미 업로드된 점, 선이나 관계를 하나 이상 선택하세요."
 
@@ -457,23 +415,17 @@ msgstr ""
 "* 최대 점 2개가 있는 자신의 교차하는 길이 없거나;\n"
 "* 점 세개입니다."
 
-msgid "Download from OSM..."
-msgstr "OSM에서 다운로드..."
-
-msgid "Download map data from the OSM server."
-msgstr "OSM 서버로 부터 지도 데이터를 다운로드합니다."
+msgid "Download data"
+msgstr "데이터 다운로드"
 
-msgid "Please select a download area first."
-msgstr "먼저 다운로드 영역을 선택해 주세요."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr "<html>이 동작은 독립적인 다운로드 요청<br>{0}회가 필요합니다.<br>계속하시겠습니까?</html>"
 
-msgid "Download data"
-msgstr "데이터 다운로드"
-
 msgid "Download notes in current view"
 msgstr "현재 화면에서 참고 다운로드"
 
@@ -540,6 +492,9 @@ msgstr "내보낼 것이 없습니다."
 msgid "Export GPX file"
 msgstr "GPX 파일로 내보내기"
 
+msgid "Help"
+msgstr "도움말"
+
 msgid "History"
 msgstr "역사"
 
@@ -1034,23 +989,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr "Overpass API로부터 다운로드..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Overpass API로부터 지도 데이터를 다운로드 합니다."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "붙여넣기"
 
@@ -2303,36 +2241,6 @@ msgstr "관계 선택 (추가)"
 msgid "Select relation"
 msgstr "관계 선택"
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr "<등호>"
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr "<물음표>"
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "찾기..."
 
@@ -2621,88 +2529,6 @@ msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
 msgstr[0] "{0}개의 개체 찾음"
 
-msgctxt "search"
-msgid "CS"
-msgstr "대소자구분"
-
-msgctxt "search"
-msgid "CI"
-msgstr "대소자비구분"
-
-msgctxt "search"
-msgid "RX"
-msgstr "표현식"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "모두"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"정규식 \"{0}\"의 오프셋 {1}에서 구문 분석 오류 발생. 에러:\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "타임스탬프 ''{0}''를 구문 분석하지 못함"
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "ID값이 범위를 벗어남"
-
-msgid "Range of changeset ids expected"
-msgstr "바뀜집합 ID값이 범위를 벗어남"
-
-msgid "Range of versions expected"
-msgstr "버전값이 범위를 벗어남"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "tag 연산자가 사용될 때는 key를 비워둘 수 없음. 예: key=값"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "알려지지 않은 요소 유형: {0}. node, way, relation만 사용할 수 있음"
-
-msgid "Positive integer expected"
-msgstr "양의 정수가 지정되지 않음"
-
-msgid "Range of numbers expected"
-msgstr "숫자값이 범위를 벗어남"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr "MapCSS 선택자 구문 분석을 실패함"
-
-msgid "Unexpected token: {0}"
-msgstr "예기치 않은 토큰: {0}"
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2720,9 +2546,6 @@ msgstr "way {1}의 nodes수 {0}이 허용된 {2}를 초과."
 msgid "API Capabilities Violation"
 msgstr "API 재량(Capability) 위반"
 
-msgid "Cyclic dependency between relations:"
-msgstr "relation 사이에 순환(상호참조) 의존 관계가 있음:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3059,57 +2882,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr "자동 태그 교정"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr "작업물이 자동으로 저장되었습니다."
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3199,6 +2977,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "미터법"
 
@@ -3327,6 +3111,15 @@ msgstr ""
 msgid "Note"
 msgstr "참고"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3341,6 +3134,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr "relation 사이에 순환(상호참조) 의존 관계가 있음:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3377,7 +3173,58 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "다운로드되지 않음"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "점"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "관계"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
 msgid "Error in filter"
@@ -3409,18 +3256,10 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "점"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "선"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "관계"
-
 msgid "closedway"
 msgstr ""
 
@@ -3454,6 +3293,118 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr "<등호>"
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr "<물음표>"
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"정규식 \"{0}\"의 오프셋 {1}에서 구문 분석 오류 발생. 에러:\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "타임스탬프 ''{0}''를 구문 분석하지 못함"
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "ID값이 범위를 벗어남"
+
+msgid "Range of changeset ids expected"
+msgstr "바뀜집합 ID값이 범위를 벗어남"
+
+msgid "Range of versions expected"
+msgstr "버전값이 범위를 벗어남"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "tag 연산자가 사용될 때는 key를 비워둘 수 없음. 예: key=값"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "알려지지 않은 요소 유형: {0}. node, way, relation만 사용할 수 있음"
+
+msgid "Positive integer expected"
+msgstr "양의 정수가 지정되지 않음"
+
+msgid "Range of numbers expected"
+msgstr "숫자값이 범위를 벗어남"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "MapCSS 선택자 구문 분석을 실패함"
+
+msgid "Unexpected token: {0}"
+msgstr "예기치 않은 토큰: {0}"
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr "대소자구분"
+
+msgctxt "search"
+msgid "CI"
+msgstr "대소자비구분"
+
+msgctxt "search"
+msgid "RX"
+msgstr "표현식"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "모두"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3531,6 +3482,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "주소"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "관계"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3715,9 +3781,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "주소"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3902,9 +3965,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4443,9 +4503,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4560,132 +4617,161 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "다운로드되지 않음"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "잘못된 URL 무시: \"{0}\""
 
-msgid "House {0}"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "잘못된 파일 URL 무시: \"{0}\""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "변수 \"downloadgps\"를 파일 이름이나 파일 URL에서 받아올 수 없습니다"
+
+msgid "Precondition violation"
 msgstr ""
 
-msgid "House number {0} at {1}"
+msgid "Security exception"
 msgstr ""
 
-msgid "House number {0}"
+msgid "Network exception"
 msgstr ""
 
-msgid "highway"
+msgid "IO Exception"
 msgstr ""
 
-msgid "railway"
+msgid "Illegal Data"
 msgstr ""
 
-msgid "waterway"
+msgid "Offline mode"
 msgstr ""
 
-msgid "landuse"
+msgid "Internal Server Error"
 msgstr ""
 
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Bad Request"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Not Found"
+msgstr ""
 
-msgid "public transport"
+msgid "Conflict"
+msgstr "충돌"
+
+msgid "Authentication Failed"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Access to redacted version ''{0}'' of {1} {2} is forbidden."
 msgstr ""
 
-msgid "Precondition violation"
+msgid "Authorisation Failed"
 msgstr ""
 
-msgid "Security exception"
+msgid "Client Time Out"
 msgstr ""
 
-msgid "Network exception"
+msgid "Bandwidth Limit Exceeded"
 msgstr ""
 
-msgid "IO Exception"
+msgid "Communication with OSM server failed"
 msgstr ""
 
-msgid "Illegal Data"
+msgid "Authentication failed"
 msgstr ""
 
-msgid "Offline mode"
+msgid "Unknown host"
+msgstr "알수 없는 호스트"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "개체가 삭제됨"
+
+msgid "Show help information"
+msgstr "도움말 보기"
+
+msgid "Downloading \"Message of the day\""
 msgstr ""
 
-msgid "Internal Server Error"
+msgid "Failed to read MOTD. Exception was: {0}"
 msgstr ""
 
-msgid "Bad Request"
+msgid "Message of the day not available"
 msgstr ""
 
-msgid "Not Found"
+msgid "Click to close the dialog"
 msgstr ""
 
-msgid "Conflict"
-msgstr "충돌"
+msgid "Imagery offset"
+msgstr "사진 오프셋"
 
-msgid "Authentication Failed"
-msgstr ""
+msgctxt "menu"
+msgid "Imagery"
+msgstr "사진"
 
-msgid "Access to redacted version ''{0}'' of {1} {2} is forbidden."
-msgstr ""
+msgctxt "layer"
+msgid "Offset"
+msgstr "오프셋"
 
-msgid "Authorisation Failed"
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
-msgid "Client Time Out"
+msgid "Outdated Java version"
+msgstr "오래된 Java 버전"
+
+msgid "Update Java"
+msgstr "Java 업데이트"
+
+msgid "You are running version {0} of Java."
+msgstr "Java의 버전 {0}를 실행하고 있습니다."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
 msgstr ""
 
-msgid "Bandwidth Limit Exceeded"
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr "JOSM은 이 버전으로 작동을 곧 멈출 것입니다; Java {0}으로 업데이트할 것을 적극 권장합니다."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
 msgstr ""
 
-msgid "Communication with OSM server failed"
+msgid "Would you like to update now ?"
 msgstr ""
 
-msgid "Authentication failed"
+msgid "Starting file watcher"
 msgstr ""
 
-msgid "Unknown host"
-msgstr "알수 없는 호스트"
-
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "개체가 삭제됨"
+msgid "Executing platform startup hook"
+msgstr "훅을 시작하면 플랫폼 실행"
 
-msgid "Show help information"
-msgstr "도움말 보기"
+msgid "Building main menu"
+msgstr "주요 메뉴 구축 중"
 
-msgid "Downloading \"Message of the day\""
-msgstr ""
+msgid "Updating user interface"
+msgstr "사용자 인터페이스 업데이트 중"
 
-msgid "Failed to read MOTD. Exception was: {0}"
-msgstr ""
+msgid "Initializing internal boundaries data"
+msgstr "내부 경계 데이터를 초기화하는 중"
 
-msgid "Message of the day not available"
-msgstr ""
+msgid "Initializing OSM API"
+msgstr "OSM API 초기화 중"
 
-msgid "Click to close the dialog"
-msgstr ""
+msgid "Initializing internal traffic data"
+msgstr "내부 교통 정보를 초기화하는 중"
 
-msgid "Imagery offset"
-msgstr "사진 오프셋"
+msgid "Initializing validator"
+msgstr "유효성 검사 초기화 중"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr "사진"
+msgid "Initializing presets"
+msgstr "프리셋 초기화 중"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr "오프셋"
+msgid "Initializing map styles"
+msgstr "지도 스타일 초기화 중"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr ""
+msgid "Loading imagery preferences"
+msgstr "사진 환경 설정을 불러오는 중"
 
 msgid "usage"
 msgstr ""
@@ -5150,6 +5236,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5842,6 +6001,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6412,9 +6585,6 @@ msgstr "소스"
 msgid "Title:"
 msgstr "제목:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6527,9 +6697,6 @@ msgstr ""
 "잘못된 ID 목록을 지정하였습니다.\n"
 "계속할 수 없습니다."
 
-msgid "Relations"
-msgstr "관계"
-
 msgid "Open a list of all relations."
 msgstr "모든 관계의 목록을 엽니다."
 
@@ -7918,24 +8085,6 @@ msgstr "[-90,90] 범위의 위도값이 필요합니다."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "[-180,180] 범위의 경도값이 필요합니다."
 
-msgid "Data Sources and Types:"
-msgstr "데이터 소스 및 유형:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap 데이터"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "선택하면 선택한 다운로드 영역에서 OSM 데이터를 다운로드합니다."
-
-msgid "Raw GPS data"
-msgstr "원본 GPS 데이터"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "선택하면 선택한 다운로드 영역에서 GPS 추적을 다운로드합니다."
-
-msgid "Select to download notes in the selected download area."
-msgstr "선택하면 선택한 다운로드 영역에서 참고를 다운로드합니다."
-
 msgid "Download as new layer"
 msgstr "새 레이어로 다운로드"
 
@@ -7967,29 +8116,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
-msgid "No area selected yet"
-msgstr ""
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "다운로드 영역이 너무 큽니다; 다운로드가 거부될 수 있습니다."
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "다운로드 영역이 적당한 크기입니다."
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "대화 상자를 닫고 다운로드를 중단하려면 클릭하세요"
 
 msgid "Click to download the currently selected area"
 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 "참조자 다운로드 (상위 관계)"
 
@@ -8004,10 +8136,94 @@ msgid ""
 "i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "관계의 구성 요소도 다운로드하려면 선택합니다."
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "관계의 구성 요소도 다운로드하려면 선택합니다."
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "데이터 소스 및 유형:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap 데이터"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "선택하면 선택한 다운로드 영역에서 OSM 데이터를 다운로드합니다."
+
+msgid "Raw GPS data"
+msgstr "원본 GPS 데이터"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "선택하면 선택한 다운로드 영역에서 GPS 추적을 다운로드합니다."
+
+msgid "Select to download notes in the selected download area."
+msgstr "선택하면 선택한 다운로드 영역에서 참고를 다운로드합니다."
+
+msgid "Please select a download area first."
+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 "No area selected yet"
+msgstr ""
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "다운로드 영역이 너무 큽니다; 다운로드가 거부될 수 있습니다."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "다운로드 영역이 적당한 크기입니다."
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "구문 분석 오류"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8602,6 +8815,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9078,9 +9303,6 @@ msgstr "업로드할 개체 선택"
 msgid "Cancel uploading"
 msgstr "업로드 취소"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9155,6 +9377,178 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "삭제한 {0}개의 개체:"
 
+msgid "All Formats"
+msgstr "모든 포맷"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr "저자 정보 추가"
+
+msgid "Real name"
+msgstr "실명"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "저작권(URL)"
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr "저작권 년도"
+
+msgid "Keywords"
+msgstr "키워드"
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr "이미 정해진 라이센스 선택하기"
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9262,6 +9656,33 @@ msgstr "이 메시지를 다시 표시하지 않음"
 msgid "Hide this message and never show it again"
 msgstr "이 메시지를 숨기고 다시 표시하지 않음"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr "작업물이 자동으로 저장되었습니다."
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "색상 사용자 지정"
 
@@ -9360,6 +9781,9 @@ msgstr "총 참고 개수:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr "유효성 검사 오류"
 msgid "No validation errors"
 msgstr "유효성 검사 오류 없음"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10004,9 +10431,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10016,6 +10440,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10455,43 +10882,22 @@ msgstr "사용자 정보 가져오는 중..."
 msgid "Expert mode"
 msgstr "전문가 모드"
 
-msgid "Close the preferences dialog and discard preference updates"
-msgstr "환경 설정 업데이트를 취소하고 대화 상자 닫기"
-
-msgid "Save the preferences and close the dialog"
-msgstr "환경 설정을 저장하고 대화 상자 닫기"
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "일부 설정을 적용하려면 JOSM을 다시 시작해야 합니다."
-
-msgid "Would you like to restart now?"
-msgstr "지금 다시 시작하시겠습니까?"
-
-msgid "Download plugins"
-msgstr "플러그인 다운로드"
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
-msgstr ""
-
-msgid "Author:"
-msgstr ""
+msgid "Close the preferences dialog and discard preference updates"
+msgstr "환경 설정 업데이트를 취소하고 대화 상자 닫기"
 
-msgid "Webpage:"
-msgstr ""
+msgid "Save the preferences and close the dialog"
+msgstr "환경 설정을 저장하고 대화 상자 닫기"
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "일부 설정을 적용하려면 JOSM을 다시 시작해야 합니다."
 
-msgid "Version:"
-msgstr ""
+msgid "Would you like to restart now?"
+msgstr "지금 다시 시작하시겠습니까?"
 
-msgid "Minimum JOSM Version:"
-msgstr ""
+msgid "Download plugins"
+msgstr "플러그인 다운로드"
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11577,19 +11983,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "지도 설정"
 
@@ -11669,12 +12062,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12140,9 +12527,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12160,12 +12544,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12348,69 +12726,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12656,6 +12971,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12768,9 +13106,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "모든 포맷"
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12875,86 +13210,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr "저자 정보 추가"
-
-msgid "Real name"
-msgstr "실명"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "저작권(URL)"
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr "저작권 년도"
-
-msgid "Keywords"
-msgstr "키워드"
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr "이미 정해진 라이센스 선택하기"
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12964,18 +13219,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13027,36 +13270,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13144,27 +13360,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13210,35 +13411,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13370,6 +13545,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13427,13 +13605,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14371,33 +14543,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr "오래된 Java 버전"
-
-msgid "Update Java"
-msgstr "Java 업데이트"
-
-msgid "You are running version {0} of Java."
-msgstr "Java의 버전 {0}를 실행하고 있습니다."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr "JOSM은 이 버전으로 작동을 곧 멈출 것입니다; Java {0}으로 업데이트할 것을 적극 권장합니다."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14456,20 +14601,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14493,109 +14624,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18308,9 +18343,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18890,6 +18922,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21330,6 +21365,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22190,6 +22228,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22885,6 +22995,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23637,6 +23750,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23747,15 +23863,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31611,13 +31718,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32115,6 +32228,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32123,6 +32239,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ku.po b/i18n/po/ku.po
index 5ad3ffa..7f3414a 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:51+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:50+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Alîkarî"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -179,6 +134,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Alîkarî"
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ky.po b/i18n/po/ky.po
index e994c1f..7ec6373 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:50+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:49+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Жардам"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Көңүл буруңуз"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Программа жөнүндө"
 
@@ -179,6 +134,9 @@ msgstr "Жокко чыгаруу"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Көңүл буруңуз"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Жардам"
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/lb.po b/i18n/po/lb.po
index 9f68c29..aa74bfe 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:52+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:52+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -179,6 +134,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/lo.po b/i18n/po/lo.po
index 6dd18f2..b393a20 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:51+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:51+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "ຊ່ວຍເຫຼືອ"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "ຂ້າມຮູບແບບທີ່ບໍ່ຖືກຕ້ອງ URL:\"{0}\""
-
-msgid "Warning"
-msgstr "ລະວັງ"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "ຂ້າມຮູບແບບເອກະສານທີ່ບໍ່ຖືກຕ້ອງ ຕາມ URL:\"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "ກ່ຽວກັບ"
 
@@ -180,6 +135,9 @@ msgstr "ຍົກເລີກ"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "ລະວັງ"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "ກະລຸນາເລືອກຢ່າງໜ້ອຍ1ຢ່າງ ຕາມຂໍ້,ທີ່ຕັ້ງ,ຫຼື ຈຸດສຳພັນ"
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "ຊ່ວຍເຫຼືອ"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "API Capabilities Violation"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4571,50 +4628,19 @@ msgstr ""
 msgid "Do not show again (this operation)"
 msgstr ""
 
-msgid "Do not show again (this session)"
-msgstr ""
-
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (this session)"
+msgstr ""
 
-msgid "public transport"
+msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "ຂ້າມຮູບແບບທີ່ບໍ່ຖືກຕ້ອງ URL:\"{0}\""
+
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "ຂ້າມຮູບແບບເອກະສານທີ່ບໍ່ຖືກຕ້ອງ ຕາມ URL:\"{0}\""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/lt.po b/i18n/po/lt.po
index 90fb129..e052094 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-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-11 18:01+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-26 08:13+0000\n"
 "Last-Translator: Aurimas Fišeras <Unknown>\n"
 "Language-Team: Lithuanian <lt at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,7 +16,7 @@ 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-08-13 04:52+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:52+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: lt\n"
 
@@ -56,54 +56,9 @@ msgstr "Fono naudojimo sąlygos"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Nuorodos atvėrimas dabartinėje platformoje nepalaikomas („{0}“)"
 
-msgid "Executing platform startup hook"
-msgstr "Vykdomas platformos paleidimas"
-
-msgid "Building main menu"
-msgstr "Kuriamas pagrindinis meniu"
-
-msgid "Help"
-msgstr "Žinynas"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicijuojami vidiniai ribų duomenys"
-
-msgid "Initializing OSM API"
-msgstr "Inicijuojamas OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicijuojami vidiniai eismo duomenys"
-
-msgid "Initializing validator"
-msgstr "Inicijuojamas validatorius"
-
-msgid "Initializing presets"
-msgstr "Inicijuojami ruošiniai"
-
-msgid "Initializing map styles"
-msgstr "Inicijuojamas žemėlapio stilius"
-
-msgid "Loading imagery preferences"
-msgstr "Įkeliamos vaizdų nuostatos"
-
-msgid "Updating user interface"
-msgstr "Atnaujinama naudotojo sąsaja"
-
 msgid "Failed to save default preferences."
 msgstr "Nepavyko išsaugoti numatytųjų nustatymų."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoruojamas blogai suformuotas URL: „{0}“"
-
-msgid "Warning"
-msgstr "Įspėjimas"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignoruojamas blogai suformuotas failo URL: „{0}“"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametras \"downloadgps\" nepriima failo vardo arba failo URLs"
-
 msgid "About"
 msgstr "Apie"
 
@@ -189,6 +144,9 @@ msgstr "Atsisakyti"
 msgid "Click to abort launching external browsers"
 msgstr "Paspauskite, sustabdyti paleidžiamą interneto naršykles"
 
+msgid "Warning"
+msgstr "Įspėjimas"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Parinkite bent vieną jau išsiųstą tašką, kelią ar ryšį."
 
@@ -479,14 +437,11 @@ msgstr ""
 "* Vieną savęs nekertantį kelią su ne daugiau nei dviem jo taškais;\n"
 "* Tris taškus."
 
-msgid "Download from OSM..."
-msgstr "Atsisiųsti iš OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Atsisiųsti žemėlapio duomenis iš OSM serverio."
+msgid "Download data"
+msgstr "Atsiųsti duomenis"
 
-msgid "Please select a download area first."
-msgstr "Prašome iš pradžių pažymėti atsiunčiamą plotą."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -495,9 +450,6 @@ msgstr ""
 "<html>Šiam veiksmui reikės {0} individualių<br>atsiuntimo užklausų. Ar "
 "norite<br>tęsti?</html>"
 
-msgid "Download data"
-msgstr "Atsiųsti duomenis"
-
 msgid "Download notes in current view"
 msgstr "Atsiųsti pastabas dabartiniame rodinyje"
 
@@ -508,7 +460,7 @@ msgid "Download map data from the OSM server in current view"
 msgstr "Atsiųsti dabartinio rodinio žemėlapio duomenis iš OSM serverio"
 
 msgid "Download object..."
-msgstr "Parsiųsti objektą..."
+msgstr "Atsiųsti objektą..."
 
 msgid "Download OSM object by ID."
 msgstr "Parsiųsti OSM objektą pagal ID."
@@ -564,6 +516,9 @@ msgstr "Nėra ką eksportuoti. Pirma gaukite duomenų."
 msgid "Export GPX file"
 msgstr "Eksportuoti GPX failą"
 
+msgid "Help"
+msgstr "Žinynas"
+
 msgid "History"
 msgstr "Istorija"
 
@@ -1119,23 +1074,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Prašome pažymėti kelius, kurių kampai daugmaž 90 ar 180 laipsnių."
 
-msgid "Download from Overpass API ..."
-msgstr "Atsiųsti iš Overpass API..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Atsiųsti žemėlapio duomenis iš Overpass API serverio."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Įdėti"
 
@@ -2517,36 +2455,6 @@ msgstr "Pažymėti ryšį (pridėti)"
 msgid "Select relation"
 msgstr "Pažymėti ryšį"
 
-msgid "<not>"
-msgstr "<ne>"
-
-msgid "<or>"
-msgstr "<arba>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<kairys tėvas>"
-
-msgid "<right parent>"
-msgstr "<dešinys tėvas>"
-
-msgid "<colon>"
-msgstr "<kabliataškis>"
-
-msgid "<equals>"
-msgstr "<lygu>"
-
-msgid "<key>"
-msgstr "<raktas>"
-
-msgid "<question mark>"
-msgstr "<klaustukas>"
-
-msgid "<end-of-file>"
-msgstr "<failo-pabaiga>"
-
 msgid "Search..."
 msgstr "Ieškoti..."
 
@@ -2720,6 +2628,7 @@ msgstr "visi objektai naudojantys adreso ruošinį"
 
 msgid "all objects that use any preset under the Geography/Nature group"
 msgstr ""
+"visi objektai naudojantys bet kurį ruošinį iš Geografija/Gamta grupės"
 
 msgid "metadata"
 msgstr "meta duomenys"
@@ -2843,97 +2752,6 @@ msgstr[0] "Ieškoma {0} objecte"
 msgstr[1] "Ieškoma {0} objektuose"
 msgstr[2] "Ieškoma {0} objekte (-uose)"
 
-msgctxt "search"
-msgid "CS"
-msgstr "SR"
-
-msgctxt "search"
-msgid "CI"
-msgstr "NR"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"įvyko reguliariojo reiškinio „{0}“ nagrinėjimo klaida ties pozicija {1}, "
-"visa klaida:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"įvyko regex „{0}“ nagrinėjimo klaida, pilna klaida:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Negalima išnagrinėti laiko žymos ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Tikimasi {0} po {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Tikimasi primityvių id intervalo"
-
-msgid "Range of changeset ids expected"
-msgstr "Tikimasi pakeitimų id intervalo"
-
-msgid "Range of versions expected"
-msgstr "Tikimasi versijų intervalo"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Raktas negali būti tuščias, kai naudojamas žymos operatorius. Pavyzdys: "
-"raktas=reikšmė"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Nežinomas primityvo tipas: {0}. Leistinos reikšmės yra node, way arba "
-"relation"
-
-msgid "Positive integer expected"
-msgstr "Tikimasi teigiamo sveiko skaičiaus"
-
-msgid "Range of numbers expected"
-msgstr "Tikimasi skaičių intervalo"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Netikėta leksema. Tikėtasi {0}, rasta {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Nepavyko išnagrinėti MapCSS parinkiklio"
-
-msgid "Unexpected token: {0}"
-msgstr "Netikėta leksema: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Trūksta OR parametro"
-
-msgid "Missing parameter for XOR"
-msgstr "Trūksta XOR parametro"
-
-msgid "Missing operator for NOT"
-msgstr "Trūksta NOT operatoriaus"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Automatiškai apkarpoma žymos „{0}“ reikšmė ištrintame objekte {1}"
 
@@ -2953,9 +2771,6 @@ msgstr "{0} taškai kelyje {1} viršija maksimalų leidžiamų taškų skaičių
 msgid "API Capabilities Violation"
 msgstr "API galimybių pažeidimas"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Ciklinė priklausomybė tarp ryšių:"
-
 msgid "Removed obsolete tags"
 msgstr "Pašalintos nebenaudojamos žymos"
 
@@ -3359,61 +3174,12 @@ msgstr "Rolės ryšiuose, susijusiuose su"
 msgid "Automatic tag correction"
 msgstr "Automatinis žymų taisymas"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Nepavyksta sukurti aplanko {0}, automatinis įrašymas išjungtas"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Nepavyko sukurti failo {0}, bus naudojamas kitas failo pavadinimas"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Įvesties klaida kuriant failą, automatinis įrašymas bus praleistas: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Nepavyko pašalinti seno atsarginio failo {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Jūsų darbas buvo automatiškai įrašytas."
-
-msgid "Restoring files"
-msgstr "Atkuriami failai"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Nepavyko ištrinti atsarginio failo {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Nepavyko ištrinti PID failo {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Nepavyko ištrinti archyvuoto atsarginio failo {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Netinkama platumos reikšmė „{0}“"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Netinkama ilgumos reikšmė „{0}“"
 
-msgid "Question"
-msgstr "Klausimas"
-
-msgid "Message"
-msgstr "Pranešimas"
-
-msgid "Enter text"
-msgstr "Įveskite tekstą"
-
-msgid "Installing plugins"
-msgstr "Diegiami papildiniai"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Nustatymų failas prašo pridėti nustatymus prie <b>{0}</b>,<br/>bet jo "
-"numatytoji reikšmė šiuo metu nežinoma.<br/>Prašome aktyvuoti atitinkamą "
-"funkciją rankiniu būdu ir pakartoti importą."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Nepavyko sukurti trūkstamą podėlio aplanką: {0}"
 
@@ -3520,6 +3286,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Nustatymas {0} buvo pašalintas, nes jis daugiau nenaudojamas."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Nustatymų failas prašo pridėti nustatymus prie <b>{0}</b>,<br/>bet jo "
+"numatytoji reikšmė šiuo metu nežinoma.<br/>Prašome aktyvuoti atitinkamą "
+"funkciją rankiniu būdu ir pakartoti importą."
+
 msgid "Metric"
 msgstr "Metrinė"
 
@@ -3654,6 +3429,17 @@ msgstr ""
 msgid "Note"
 msgstr "Pastaba"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Nepavyko gauti OAuth prieigos rakto iš prisijungimo duomenų tvarkytuvės"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Dabartinė prisijungimo duomenų tvarkytuvė yra „{0}“ tipo"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Nepavyko išsaugoti OAuth prieigos rakto į prisijungimo duomenų tvarkytuvę"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Tikėtasi ID > 0. Gauta {0}."
 
@@ -3670,6 +3456,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Primityvas su ID = 0 negali būti nematomas."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Ciklinė priklausomybė tarp ryšių:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3712,6 +3501,63 @@ msgstr "Suliejami duomenys..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Testas „{0}“ baigtas per {1}"
 
+msgid "incomplete"
+msgstr "nebaigtas"
+
+msgid "House {0}"
+msgstr "Namas {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Namo numeris {0} esantis {1}"
+
+msgid "House number {0}"
+msgstr "Namo numeris {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "taškas"
+msgstr[1] "taškai"
+msgstr[2] "taškų"
+
+msgid "highway"
+msgstr "greitkelis"
+
+msgid "railway"
+msgstr "geležinkelis"
+
+msgid "waterway"
+msgstr "vandens kelias"
+
+msgid "landuse"
+msgstr "žemėnauda"
+
+msgid "building"
+msgstr "pastatas"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} taškas"
+msgstr[1] "{0} taškai"
+msgstr[2] "{0} taškų"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} narys"
+msgstr[1] "{0} nariai"
+msgstr[2] "{0} narių"
+
+msgid "public transport"
+msgstr "viešasis transportas"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "ryšys"
+msgstr[1] "ryšiai"
+msgstr[2] "ryšių"
+
+msgid "Changeset {0}"
+msgstr "Pakeitimas {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Klaida filtre <code>{0}</code>:<br>{1}"
 
@@ -3751,24 +3597,12 @@ msgid ""
 msgstr ""
 "Negalima sulieti primityvų su skirtingais id. Šis id yra {0}, o kitas - {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "taškas"
-msgstr[1] "taškai"
-msgstr[2] "taškų"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "kelias"
 msgstr[1] "keliai"
 msgstr[2] "kelių"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "ryšys"
-msgstr[1] "ryšiai"
-msgstr[2] "ryšių"
-
 msgid "closedway"
 msgstr "uždaras kelias"
 
@@ -3804,6 +3638,127 @@ msgstr "Negalima sulyginti primityvo su ID „{0}“ su primityvu su ID „{1}
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parametras {0} ne intervale 0..{1}. Gauta „{2}“."
 
+msgid "<not>"
+msgstr "<ne>"
+
+msgid "<or>"
+msgstr "<arba>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<kairys tėvas>"
+
+msgid "<right parent>"
+msgstr "<dešinys tėvas>"
+
+msgid "<colon>"
+msgstr "<kabliataškis>"
+
+msgid "<equals>"
+msgstr "<lygu>"
+
+msgid "<key>"
+msgstr "<raktas>"
+
+msgid "<question mark>"
+msgstr "<klaustukas>"
+
+msgid "<end-of-file>"
+msgstr "<failo-pabaiga>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"įvyko reguliariojo reiškinio „{0}“ nagrinėjimo klaida ties pozicija {1}, "
+"visa klaida:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"įvyko regex „{0}“ nagrinėjimo klaida, pilna klaida:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Negalima išnagrinėti laiko žymos ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Tikimasi {0} po {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Tikimasi primityvių id intervalo"
+
+msgid "Range of changeset ids expected"
+msgstr "Tikimasi pakeitimų id intervalo"
+
+msgid "Range of versions expected"
+msgstr "Tikimasi versijų intervalo"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Raktas negali būti tuščias, kai naudojamas žymos operatorius. Pavyzdys: "
+"raktas=reikšmė"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Nežinomas primityvo tipas: {0}. Leistinos reikšmės yra node, way arba "
+"relation"
+
+msgid "Positive integer expected"
+msgstr "Tikimasi teigiamo sveiko skaičiaus"
+
+msgid "Range of numbers expected"
+msgstr "Tikimasi skaičių intervalo"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Nepavyko išnagrinėti MapCSS parinkiklio"
+
+msgid "Unexpected token: {0}"
+msgstr "Netikėta leksema: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Trūksta OR parametro"
+
+msgid "Missing parameter for XOR"
+msgstr "Trūksta XOR parametro"
+
+msgid "Missing operator for NOT"
+msgstr "Trūksta NOT operatoriaus"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Netikėta leksema. Tikėtasi {0}, rasta {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "SR"
+
+msgctxt "search"
+msgid "CI"
+msgstr "NR"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Nepavyko įkelti žemėlapio braižymo klasės „{0}“. Klasė nerasta."
 
@@ -3886,6 +3841,123 @@ msgstr "Tikėtąsi elemento ''{0}'', bet gauta ''{1}''"
 msgid "value expected"
 msgstr "tikimasi vertės"
 
+msgid "Short Description:"
+msgstr "Trumpas aprašymas:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autorius:"
+
+msgid "Webpage:"
+msgstr "Tinklalapis:"
+
+msgid "Description:"
+msgstr "Aprašymas:"
+
+msgid "Version:"
+msgstr "Versija:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimali JOSM versija:"
+
+msgid "by {0}"
+msgstr "pagal {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM numatytasis (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Vidinis stilius, naudojamas kaip pagrindas veikiantiems perjungiamiems  "
+"perdangų stiliams"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "pagrindinis Potlatch 2 stilius"
+
+msgid "Internal Preset"
+msgstr "Vidiniai ruošiniai"
+
+msgid "The default preset for JOSM"
+msgstr "Numatytieji JOSM ruošiniai"
+
+msgid "Addresses"
+msgstr "Adresai"
+
+msgid "Checks for errors on addresses"
+msgstr "Ieško klaidų adresuose"
+
+msgid "Tag combinations"
+msgstr "Žymų kombinacijos"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Ieško trūkstamų žymų ar įtartinų kombinacijų"
+
+msgid "Deprecated features"
+msgstr "Pasenusios ypatybės"
+
+msgid "Checks for deprecated features"
+msgstr "Ieško pasenusių ypatybių"
+
+msgid "Geometry"
+msgstr "Geometrija"
+
+msgid "Checks for geometry errors"
+msgstr "Ieško geometrijos klaidų"
+
+msgid "Highways"
+msgstr "Keliai"
+
+msgid "Checks for errors on highways"
+msgstr "Ieško klaidų keliuose"
+
+msgid "Multiple values"
+msgstr "Sudėtinės reikšmės"
+
+msgid "Checks for wrong multiple values"
+msgstr "Ieško neteisingų sudėtinių reikšmių"
+
+msgid "Numeric values"
+msgstr "Skaitinės reikšmės"
+
+msgid "Checks for wrong numeric values"
+msgstr "Ieško neteisingų skaitinių reikšmių"
+
+msgid "Religion"
+msgstr "Religija"
+
+msgid "Checks for errors on religious objects"
+msgstr "Ieško klaidų religiniuose objektuose"
+
+msgid "Relations"
+msgstr "Ryšiai"
+
+msgid "Checks for errors on relations"
+msgstr "Ieško klaidų ryšiuose"
+
+msgid "Territories"
+msgstr "Teritorijos"
+
+msgid "Checks for territories-specific features"
+msgstr "Tikrina teritorijoms būdingas savybes"
+
+msgid "Unnecessary tags"
+msgstr "Nereikalingos žymos"
+
+msgid "Checks for unnecessary tags"
+msgstr "Ieško nereikalingų žymų"
+
+msgid "Wikipedia"
+msgstr "Vikipedija"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Ieško neteisingų Vikipedijos žymų"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM projekcija (''+proj=utm'') reikalauja ''+zona=...'' parametro."
 
@@ -4075,9 +4147,6 @@ msgstr "URL aptiktas netinkamas fragmentas: {0}"
 msgid "URL validator"
 msgstr "URL validatorius"
 
-msgid "Addresses"
-msgstr "Adresai"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Ieško klaidų adresuose ir associatedStreet ryšiuose."
 
@@ -4269,9 +4338,6 @@ msgstr "Kelių taškų dubliai"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Ieško kelių su identiška taškų seka."
 
-msgid "Highways"
-msgstr "Keliai"
-
 msgid "Performs semantic checks on highways."
 msgstr "Vykdo semantinį kelių tikrinimą."
 
@@ -4830,9 +4896,6 @@ msgstr "vandens kelio tipas {0}"
 msgid "boundary type {0}"
 msgstr "ribos tipas {0}"
 
-msgid "building"
-msgstr "pastatas"
-
 msgid "area"
 msgstr "plotas"
 
@@ -4949,47 +5012,14 @@ msgstr "Daugiau nerodyti (šiame seanse)"
 msgid "Do not show again (remembers choice)"
 msgstr "Daugiau nerodyti (atsiminti pasirinkimą)"
 
-msgid "incomplete"
-msgstr "nebaigtas"
-
-msgid "House {0}"
-msgstr "Namas {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Namo numeris {0} esantis {1}"
-
-msgid "House number {0}"
-msgstr "Namo numeris {0}"
-
-msgid "highway"
-msgstr "greitkelis"
-
-msgid "railway"
-msgstr "geležinkelis"
-
-msgid "waterway"
-msgstr "vandens kelias"
-
-msgid "landuse"
-msgstr "žemėnauda"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} taškas"
-msgstr[1] "{0} taškai"
-msgstr[2] "{0} taškų"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} narys"
-msgstr[1] "{0} nariai"
-msgstr[2] "{0} narių"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoruojamas blogai suformuotas URL: „{0}“"
 
-msgid "public transport"
-msgstr "viešasis transportas"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignoruojamas blogai suformuotas failo URL: „{0}“"
 
-msgid "Changeset {0}"
-msgstr "Pakeitimas {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametras \"downloadgps\" nepriima failo vardo arba failo URLs"
 
 msgid "Precondition violation"
 msgstr "Nepatenkinta sąlyga"
@@ -5080,6 +5110,69 @@ msgstr "Poslinkis"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Tikėtasi netuščios parametro „{0}“ reikšmės, gauta „{1}“"
 
+msgid "Outdated Java version"
+msgstr "Pasenusi Java versija"
+
+msgid "Update Java"
+msgstr "Atnaujinkite Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Naudojate Java {0} versiją."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Ši versija jau nebepalaikoma {0} nuo {1} ir nėra rekomenduojama naudoti."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM greitai nustos veikti su šia Java versija; mes labai rekomenduojame "
+"atnaujinti į Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Ar norite atnaujinti dabar?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Vykdomas platformos paleidimas"
+
+msgid "Building main menu"
+msgstr "Kuriamas pagrindinis meniu"
+
+msgid "Updating user interface"
+msgstr "Atnaujinama naudotojo sąsaja"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicijuojami vidiniai ribų duomenys"
+
+msgid "Initializing OSM API"
+msgstr "Inicijuojamas OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicijuojami vidiniai eismo duomenys"
+
+msgid "Initializing validator"
+msgstr "Inicijuojamas validatorius"
+
+msgid "Initializing presets"
+msgstr "Inicijuojami ruošiniai"
+
+msgid "Initializing map styles"
+msgstr "Inicijuojamas žemėlapio stilius"
+
+msgid "Loading imagery preferences"
+msgstr "Įkeliamos vaizdų nuostatos"
+
 msgid "usage"
 msgstr "naudojimas"
 
@@ -5580,6 +5673,88 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Dabartinė reikšmė nėra tinkamas kaladėlių indeksas nurodytame mastelyje"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Susidūrėte su JOSM klaida"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Įvyko išimtinė situacija.\n"
+"Tai visuomet programavimo klaida. Jei naudojate naujausią JOSM versiją, "
+"apsvarstykite galimybę pranešti apie klaidą."
+
+msgid "Debug information"
+msgstr "Derinimo informacija"
+
+msgid "Manually report at:"
+msgstr "Pranešti rankiniu būdu:"
+
+msgid "Is JOSM up to date?"
+msgstr "Ar JOSM naujausios versijos?"
+
+msgid "Send bug report"
+msgstr "Pranešti apie klaidą"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Jei naudojate naujausias JOSM ir papildinių versijas, praneškite apie klaidą "
+"į mūsų klaidų sekimo sistemą.\n"
+"Ten informacija apie klaidą jau turėtų būti užpildyta. Įtraukite informaciją "
+"kaip atkartoti problemą ir stenkitės pateikti kiek įmanoma daugiau detalių."
+
+msgid "Report Bug"
+msgstr "Pranešti apie klaidą"
+
+msgid "Suppress this error for this session."
+msgstr "Nerodyti šios klaidos šiame seanse."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Nerodyti kitų klaidos dialogų langų šiame seanse."
+
+msgid "Ignore this error."
+msgstr "Ignoruoti šią klaidą"
+
+msgid "Include the system status report."
+msgstr "Įtraukti sistemos būsenos ataskaitą."
+
+msgid "Include information about the data you were working on."
+msgstr "Įtraukti informaciją apie duomenis prie kurių dirbote."
+
+msgid "Include all stack traces."
+msgstr "Įtraukti dėklo pėdsakus."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Dabartinė JOSM versija yra {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Įvyko klaida tikrinant ar JOSM yra naujausios versijos."
+
+msgid "JOSM is up to date."
+msgstr "JOSM yra naujausios versijos."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Prieš pranešdami apie klaidą įsitikinkite, kad atnaujinote JOSM į naujausią "
+"versiją čia:"
+
+msgid "Update JOSM"
+msgstr "Atnaujinti JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikto fonas: nėra konflikto"
 
@@ -6353,6 +6528,22 @@ msgstr ""
 "Nukopijuotose duomenyse yra nepilnų objektų. Įdedant nepilni objektai "
 "pašalinami. Ar norite įdėti duomenis be nepilnų objektų?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Ar norite įdėti šias žymas?"
+
+msgid "Clear buffer"
+msgstr "Išvalyti buferį"
+
+msgid "Ignore warnings"
+msgstr "Ignoruoti įspėjimus"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Atsiprašome, neįmanoma įkelti žymų iš buferio. Jame nėra jokių "
+"JOSM objektų ar tinkamo teksto. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Tik pažymėtiems objektams"
 
@@ -6956,9 +7147,6 @@ msgstr "Šaltinis"
 msgid "Title:"
 msgstr "Antraštė:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Įtaisytasis stilius, vidinis kelias:"
 
@@ -7073,9 +7261,6 @@ msgstr ""
 "Nurodytas netinkamas ID sąrašas\n"
 "Negalima tęsti."
 
-msgid "Relations"
-msgstr "Ryšiai"
-
 msgid "Open a list of all relations."
 msgstr "Atverti ryšių sąrašą"
 
@@ -8570,26 +8755,6 @@ msgstr "Reikia platumos reikšmės intervale [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Reikia ilgumos reikšmės intervale [-180,180]"
 
-msgid "Data Sources and Types:"
-msgstr "Duomenų šaltiniai ir tipai:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap duomenys"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Pažymėkite, kad atsiųstumėte OSM duomenis parinktame atsiuntimo plote."
-
-msgid "Raw GPS data"
-msgstr "Neapdoroti GPS duomenys"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Pažymėkite, kad atsiųstumėte GPS pėdsakus parinktame atsiuntimo plote."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Pažymėkite, kad atsiųstumėte pastabas parinktame atsiuntimo plote."
-
 msgid "Download as new layer"
 msgstr "Atsiųsti kaip naują sluoksnį"
 
@@ -8626,38 +8791,20 @@ msgstr ""
 "dešinį pelės mygtuką, kad pastumtumėte žemėlapį, ratuką ar +/- mastelio "
 "keitimui."
 
-msgid "No area selected yet"
-msgstr "Dar nepažymėtas joks plotas"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Atsiuntimo plotas per didelis, serveris jo tikriausiai nepriims"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Atsiuntimo plotas tinkamas, dydis tikriausiai tinkamas serveriui"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Spauskite, kad užvertumėte dialogą ir nutrauktumėte atsiuntimą"
 
 msgid "Click to download the currently selected area"
 msgstr "Spauskite, kad atsiųstumėte dabar pažymėtą plotą"
 
-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>Nei <strong>{0}</strong>, nei <strong>{1}</strong>, nei "
-"<strong>{2}</strong> neįjungta.<br>Prašome pasirinkti nors vieną, kad "
-"atsiųstumėte OSM duomenis, GPS duomenis, pastabas arba viską.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Atsiųsti turinčius nuorodas (tėvinius ryšius)"
 
 msgid "Download object"
-msgstr "Parsiųsti objektą"
+msgstr "Atsiųsti objektą"
 
 msgid "Start downloading"
-msgstr "Pradėti parsiuntimą"
+msgstr "Pradėti atsiuntimą"
 
 msgid ""
 "Select if the referrers of the object should be downloaded as well, "
@@ -8672,107 +8819,211 @@ msgstr "Pažymėkite, jei taipogi reikia atsiųsti ir ryšių narius"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Atsiųsti priklausomus (tėvinius ryšius ir kelius)"
 
-msgid "Please select an item first"
+msgid "Download from OSM"
+msgstr "Atsiųsti iš OSM"
+
+msgid "Data Sources and Types:"
+msgstr "Duomenų šaltiniai ir tipai:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap duomenys"
+
+msgid "Select to download OSM data in the selected download area."
 msgstr ""
+"Pažymėkite, kad atsiųstumėte OSM duomenis parinktame atsiuntimo plote."
 
-msgid "Edit item"
+msgid "Raw GPS data"
+msgstr "Neapdoroti GPS duomenys"
+
+msgid "Select to download GPS traces in the selected download area."
 msgstr ""
+"Pažymėkite, kad atsiųstumėte GPS pėdsakus parinktame atsiuntimo plote."
 
-msgid "Add snippet"
+msgid "Select to download notes in the selected download area."
+msgstr "Pažymėkite, kad atsiųstumėte pastabas parinktame atsiuntimo plote."
+
+msgid "Please select a download area first."
+msgstr "Prašome iš pradžių pažymėti atsiunčiamą plotą."
+
+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>Nei <strong>{0}</strong>, nei <strong>{1}</strong>, nei "
+"<strong>{2}</strong> neįjungta.<br>Prašome pasirinkti nors vieną, kad "
+"atsiųstumėte OSM duomenis, GPS duomenis, pastabas arba viską.</html>"
 
-msgid "Query cannot be empty"
+msgid "No area selected yet"
+msgstr "Dar nepažymėtas joks plotas"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Atsiuntimo plotas per didelis, serveris jo tikriausiai nepriims"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Atsiuntimo plotas tinkamas, dydis tikriausiai tinkamas serveriui"
+
+msgid "Download from Overpass API"
+msgstr "Atsiųsti iš Overpass API"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
 msgstr ""
+"Sukurti Overpass užklausą naudojant Overpass Turbo užklausų vediklio įrankį"
 
-msgid "This name can be used for the item"
+msgid "Query Wizard"
+msgstr "Užklausų vediklis"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
+"Įdėkite savo Overpass užklausą žemiau arba sugeneruokite ją naudodami "
+"Overpass Turbo užklausų vediklį"
 
-msgid "Item with this name already exists"
+msgid "Your saved queries:"
+msgstr "Jūsų išsaugotos užklausos:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Rodyti/paslėpti Overpass fragmentų sąrašą"
+
+msgid "Overpass query:"
+msgstr "Overpass užklausa:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
+"Įvedėte tuščią užklausą. Gal vietoje to norite atsiųsti visus duomenis šiame "
+"plote?"
+
+msgid "Download all data?"
+msgstr "Atsiųsti visus duomenis?"
+
+msgid "Add new snippet"
+msgstr "Pridėti naują fragmentą"
+
+msgid "Delete selected snippet"
+msgstr "Pašalinti pasirinktą fragmentą"
+
+msgid "Edit selected snippet"
+msgstr "Redaguoti pasirinktą fragmentą"
+
+msgid "history"
+msgstr "istorija"
+
+msgid "Please select an item first"
+msgstr "Iš pradžių pasirinkite elementą"
+
+msgid "Edit item"
+msgstr "Redaguoti elementą"
+
+msgid "Add snippet"
+msgstr "Pridėti fragmentą"
+
+msgid "Query cannot be empty"
+msgstr "Užklausa negali būti tuščia"
+
+msgid "This name can be used for the item"
+msgstr "Šis vardas gali būti naudojamas elementui"
+
+msgid "Item with this name already exists"
+msgstr "Elementas su šiuo vardu jau egzistuoja"
 
 msgid "The item cannot be created with provided name"
-msgstr ""
+msgstr "Elementas su pateiktu vardu negali būti sukurtas"
 
 msgid "The item cannot be created with an empty query"
-msgstr ""
+msgstr "Elementas negali būti sukurtas su tuščia užklausa"
 
 msgid "Overpass Turbo Query Wizard"
-msgstr ""
+msgstr "Overpass Turbo užklausų vediklis"
 
 msgid "Build query"
 msgstr "Sukurti užklausą"
 
 msgid "Build query and execute"
-msgstr ""
+msgstr "Sukurti užklausą ir įvykdyti"
 
 msgid "Search :"
-msgstr ""
+msgstr "Ieškoti:"
 
 msgid "The Overpass wizard could not parse the following query:"
-msgstr ""
+msgstr "Overpass vediklis negalėjo išnagrinėti šios užklausos:"
 
 msgid "Parse error"
 msgstr "Apdorojimo klaida"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
 msgstr ""
+"Leidžia bendrauti su <i>Overpass API</i> rašant deklaratyvias, žmonėms "
+"suprantamas išraiškas."
 
 msgid ""
 "The <i>Query Wizard</i> tool will transform those to a valid overpass query."
 msgstr ""
+"<i>Užklausų vediklis</i> transformuos jas į teisingą Overpass užklausą."
 
 msgid "For more detailed description see "
-msgstr ""
+msgstr "Detalesniam aprašymui žiūrėkite "
 
 msgid "<a href=\"{0}\">OSM Wiki</a>."
-msgstr ""
+msgstr "<a href=\"{0}\">OSM Vikyje</a>."
 
 msgid "Hints"
-msgstr ""
+msgstr "Patarimai"
 
 msgid "Download objects of a certain type."
-msgstr ""
+msgstr "Atsiųsti tam tikro tipo objektus."
 
 msgid "Download object by specifying a specific location. For example,"
-msgstr ""
+msgstr "Atsiųsti objektus nurodant tam tikrą vietą. Pavyzdžiui,"
 
 msgid "{0} all objects having {1} as attribute are downloaded."
-msgstr ""
+msgstr "{0} visi objektai turintys {1} kaip atributą yra atsiunčiami."
 
 msgid ""
 "{0} all object with the corresponding key/value pair located around Berlin. "
 "Note, the default value for radius is set to 1000m, but it can be changed in "
 "the generated query."
 msgstr ""
+"{0} visi objektai su atitinkama rakto/reikšmės pora esantys aplink Berlyną. "
+"Pastaba, numatytoji spindulio reikšmė yra 1000 m, bet gali būti pakeista "
+"sugeneruotoje užklausoje."
 
 msgid ""
 "{0} all objects within the current selection that have {1} as attribute."
 msgstr ""
+"{0} visi objektai dabartiniame pažymėjime turintys {1} kaip atributą."
 
 msgid ""
 "Instead of <i>location</i> any valid place name can be used like address, "
 "city, etc."
 msgstr ""
+"Vietoje <i>vietos</i> gali būti naudojamas bet kuris teisingas vietos "
+"pavadinimas, pvz., adresas, miestas."
 
 msgid ""
 "<span>Download objects that have some concrete key/value pair, only the key "
 "with any contents for the value, the value matching some regular expression. "
 "\"Not equal\" operators are supported as well.</span>"
 msgstr ""
+"<span>Atsiųsti objektus, kurie turi konkrečią rakto/reikšmės porą, tik raktą "
+"su bet kokiomis reikšmėmis, reikšmę atitinkančią kokį nors reguliarųjį "
+"reiškinį. „Nelygu“ operatoriai taip pat palaikomi.</span>"
 
 msgid "<i>expression1 {0} expression2</i>"
-msgstr ""
+msgstr "<i>išraiška1 {0} išraiška2</i>"
 
 msgid ""
 "Basic logical operators can be used to create more sophisticated queries. "
 "Instead of \"or\" - \"|\", \"||\" can be used, and instead of \"and\" - "
 "\"&\", \"&&\"."
 msgstr ""
+"Paprasti loginiai operatoriai gali būti naudojami sudėtingesnių užklausų "
+"sukūrimui. Vietoje „or“ gali būti naudojami „|“, „||“, o vietoje „and“ – "
+"„&“, „&&“."
 
 msgid "Class Type"
 msgstr "Klasės tipas"
@@ -9316,6 +9567,18 @@ msgstr "Autentikuotis su nurodytu vardu ir slaptažodžiu"
 msgid "Cancel authentication"
 msgstr "Nutraukti tapatumo nustatymą"
 
+msgid "Question"
+msgstr "Klausimas"
+
+msgid "Message"
+msgstr "Pranešimas"
+
+msgid "Enter text"
+msgstr "Įveskite tekstą"
+
+msgid "Installing plugins"
+msgstr "Diegiami papildiniai"
+
 msgid "Downloading file"
 msgstr "Atsiunčiamas failas"
 
@@ -9903,9 +10166,6 @@ msgstr "Pasirinkite objektus išsiuntimui"
 msgid "Cancel uploading"
 msgstr "Atsisakyti išsiuntimo"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Netikėta rakto „{0}“ reikšmė nustatymuose, gauta „{1}“"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Užpildyti vieną pakeitimą ir grįžti į išsiuntimo dialogo langą"
 
@@ -9993,6 +10253,184 @@ msgstr[0] "{0} objektas šalinimui:"
 msgstr[1] "{0} objektai šalinimui:"
 msgstr[2] "{0} objektų šalinimui:"
 
+msgid "All Formats"
+msgstr "Visi formatai"
+
+msgid "Could not export ''{0}''."
+msgstr "Negalima eksportuoti ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Negalima importuoti ''{0}''."
+
+msgid "Could not import files."
+msgstr "Negalima importuoti failų."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Neišeina perskaityti failo ''{0}''.<br>Klaida yra:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Neišeina perskaityti failų.<br>Klaida yra:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON failai"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Sluoksnis ''{0}'' nėra palaikomas"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Pastaba: GPL nesuderinama su OSM licenzija. Neišsiųskite GPL licencijuotų "
+"kelių."
+
+msgid "GPS track description"
+msgstr "GPS pėdsako aprašas"
+
+msgid "Add author information"
+msgstr "Pridėti informacija apie autorių"
+
+msgid "Real name"
+msgstr "Tikrasis vardas"
+
+msgid "E-Mail"
+msgstr "El.paštas"
+
+msgid "Copyright (URL)"
+msgstr "Autorinės teisės (URL)"
+
+msgid "Predefined"
+msgstr "Iš anksto numatytas"
+
+msgid "Copyright year"
+msgstr "Autorinių teisių metai"
+
+msgid "Keywords"
+msgstr "Raktažodis"
+
+msgid "Export options"
+msgstr "Eksportavimo nustatymai"
+
+msgid "Export and Save"
+msgstr "Eksportuoti ir Išsaugoti"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr "Klaida eksportuojant {0}:{1}"
+
+msgid "Choose a predefined license"
+msgstr "Pasirinkite iš anksto numatytą licenziją"
+
+msgid "GPX Files"
+msgstr "GPX failai"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr "Vaizdo failai"
+
+msgid "folder"
+msgstr "aplankas"
+
+msgid "Looking for image files"
+msgstr "Žiūrima vaizdo failų"
+
+msgid "No image files found."
+msgstr "Vaizdo failai nerasti."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 failai"
+
+msgid "Coordinates imported: {0}"
+msgstr "Importuota koordinačių: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Blogai suformuoti sakiniai: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Kontrolinių sumų klaidos: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Nežinomi sakiniai: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nulinės koordinatės: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA importo sėkmė:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA importo nesėkmė!"
+
+msgid "Note Files"
+msgstr "Pastabų failai"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM serverio failai suspausti bzip2"
+
+msgid "OsmChange File"
+msgstr "OsmChange failas"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Failas „{0}“ neegzistuoja."
+
+msgid "No data found in file {0}."
+msgstr "Nerasta duomenų faile {0}."
+
+msgid "Open OsmChange file"
+msgstr "Atverti OsmChange failą"
+
+msgid "OSM Server Files"
+msgstr "OSM serverio failai"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Pasirodė klaida, kai buvo saugoma.<br>Klaida yra:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Įvyko klaida atkuriant atsarginės kopijos "
+"failą.<br>Klaida:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM serverio failai suspausti bzip2"
+
+msgid "Invalid dataset"
+msgstr "Klaidinga duomenų aibė"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nerasta duomenų sluoksniui ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nerasta duomenų faile ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Atverti OSM failą"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS failai (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nepalaikoma WMS failo versija; rasta {0}, tikėtasi {1}"
+
 msgid "Native projections"
 msgstr "Savosios projekcijos"
 
@@ -10102,6 +10540,34 @@ msgstr "Daugiau nerodyti šio pranešimo"
 msgid "Hide this message and never show it again"
 msgstr "Slėpti šį pranešimą ir niekada jo daugiau nerodyti"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Nepavyksta sukurti aplanko {0}, automatinis įrašymas išjungtas"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Nepavyko sukurti failo {0}, bus naudojamas kitas failo pavadinimas"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Įvesties klaida kuriant failą, automatinis įrašymas bus praleistas: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Nepavyko pašalinti seno atsarginio failo {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Jūsų darbas buvo automatiškai įrašytas."
+
+msgid "Restoring files"
+msgstr "Atkuriami failai"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Nepavyko ištrinti atsarginio failo {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Nepavyko ištrinti PID failo {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Nepavyko ištrinti archyvuoto atsarginio failo {0}"
+
 msgid "Customize Color"
 msgstr "Keisti spalvą"
 
@@ -10210,6 +10676,9 @@ msgstr "Iš viso pastabų:"
 msgid "Changes need uploading?"
 msgstr "Pakeitimus reikia įkelti?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "už atsiųsto ploto ribų"
 
@@ -10286,6 +10755,9 @@ msgstr "Tikrinimo klaidos"
 msgid "No validation errors"
 msgstr "Nėra tikrinimo klaidų"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Nustatyti WMS žymelę"
 
@@ -10914,9 +11386,6 @@ msgstr "(URL buvo: "
 msgid "Select the map painting styles"
 msgstr "Parinkite žemėlapio paišymo stilius"
 
-msgid "loading style ''{0}''..."
-msgstr "įkeliamas stilius „{0}“..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10933,6 +11402,9 @@ msgstr[2] ""
 "Įkeliant šį stilių įvyko {0} klaidų. Parinkite „Info“ iš dešinio paspaudimo "
 "meniu, kad gautumėte daugiau informacijos."
 
+msgid "loading style ''{0}''..."
+msgstr "įkeliamas stilius „{0}“..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Nepavyko įkelti žemėlapio paišymo stilių iš „{0}“. Klaida buvo: {1}"
 
@@ -11462,27 +11934,6 @@ msgstr "Atsiųsti papildinius"
 msgid "Icon paths:"
 msgstr "Piktogramų keliai:"
 
-msgid "Short Description:"
-msgstr "Trumpas aprašymas:"
-
-msgid "Author:"
-msgstr "Autorius:"
-
-msgid "Webpage:"
-msgstr "Tinklalapis:"
-
-msgid "Description:"
-msgstr "Aprašymas:"
-
-msgid "Version:"
-msgstr "Versija:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimali JOSM versija:"
-
-msgid "by {0}"
-msgstr "pagal {0}"
-
 msgid "Name (optional):"
 msgstr "Vardas (neprivalomas):"
 
@@ -12644,21 +13095,6 @@ msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 "Dėmesio: nelegalus įvesties stilių sąraše, formatas ''{0}''. Gauta ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM numatytasis (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Vidinis stilius, naudojamas kaip pagrindas veikiantiems perjungiamiems  "
-"perdangų stiliams"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "pagrindinis Potlatch 2 stilius"
-
 msgid "Map Settings"
 msgstr "Žemėlapio nustatymai"
 
@@ -12752,12 +13188,6 @@ msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 "Įspėjimas: neleistinas įrašo formatas ruošinių sąraše „{0}“. Gauta „{1}“"
 
-msgid "Internal Preset"
-msgstr "Vidiniai ruošiniai"
-
-msgid "The default preset for JOSM"
-msgstr "Numatytieji JOSM ruošiniai"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Papildinys {0} dar reikalingas šiam papildiniui:"
@@ -13261,9 +13691,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Nepavyko gauti OSM prisijungimo duomenų iš prisijungimo duomenų tvarkytuvės."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Dabartinė prisijungimo duomenų tvarkytuvė yra „{0}“ tipo"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Nepavyko išsaugoti OSM prisijungimo duomenų į prisijungimo duomenų "
@@ -13285,14 +13712,6 @@ msgstr ""
 "Nurodo dienų skaičių, kurį pastaba turi būti užverta, kad daugiau nebūtų "
 "atsiunčiama"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Nepavyko gauti OAuth prieigos rakto iš prisijungimo duomenų tvarkytuvės"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Nepavyko išsaugoti OAuth prieigos rakto į prisijungimo duomenų tvarkytuvę"
-
 msgid "Save to preferences"
 msgstr "Išsaugoti į nustatymus"
 
@@ -13492,69 +13911,6 @@ msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 "Dėmesio: negalimas įvesties formatas taisyklių sąraše ''{0}''. Gauta ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Ieško klaidų adresuose"
-
-msgid "Tag combinations"
-msgstr "Žymų kombinacijos"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Ieško trūkstamų žymų ar įtartinų kombinacijų"
-
-msgid "Deprecated features"
-msgstr "Pasenusios ypatybės"
-
-msgid "Checks for deprecated features"
-msgstr "Ieško pasenusių ypatybių"
-
-msgid "Geometry"
-msgstr "Geometrija"
-
-msgid "Checks for geometry errors"
-msgstr "Ieško geometrijos klaidų"
-
-msgid "Checks for errors on highways"
-msgstr "Ieško klaidų keliuose"
-
-msgid "Multiple values"
-msgstr "Sudėtinės reikšmės"
-
-msgid "Checks for wrong multiple values"
-msgstr "Ieško neteisingų sudėtinių reikšmių"
-
-msgid "Numeric values"
-msgstr "Skaitinės reikšmės"
-
-msgid "Checks for wrong numeric values"
-msgstr "Ieško neteisingų skaitinių reikšmių"
-
-msgid "Religion"
-msgstr "Religija"
-
-msgid "Checks for errors on religious objects"
-msgstr "Ieško klaidų religiniuose objektuose"
-
-msgid "Checks for errors on relations"
-msgstr "Ieško klaidų ryšiuose"
-
-msgid "Territories"
-msgstr "Teritorijos"
-
-msgid "Checks for territories-specific features"
-msgstr "Tikrina teritorijoms būdingas savybes"
-
-msgid "Unnecessary tags"
-msgstr "Nereikalingos žymos"
-
-msgid "Checks for unnecessary tags"
-msgstr "Ieško nereikalingų žymų"
-
-msgid "Wikipedia"
-msgstr "Vikipedija"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Ieško neteisingų Vikipedijos žymų"
-
 msgid "Tag checker rules"
 msgstr "Žymų tikrintuvės taisyklės"
 
@@ -13815,6 +14171,37 @@ msgstr "Visi failai (*.*)"
 msgid "Received error page:"
 msgstr "Gautas klaidos puslapis:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Nuostata su raktu „{0}“ neapima „{1}“. Neįmanoma atkurti langų geometrijos "
+"iš nuostatų."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Nuostata su raktu „{0}“ nepateikia „{1}“ sveikojo skaičiaus reikšmės. Gauta "
+"{2}. Neįmanoma atkurti langų geometrijos iš nuostatų."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Nepavyko išnagrinėti lauko „{1}“ nuostatoje su raktu „{0}“. Išimtinė "
+"situacija: {2}. Neįmanoma atkurti langų geometrijos iš nuostatų."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Nuostata su raktu „{0}“ neegzistuoja. Neįmanoma atkurti langų geometrijos iš "
+"nuostatų."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignoruojama blogai suformuota geometrija: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. platuma"
 
@@ -13941,9 +14328,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Ištrintas narys {0} yra naudojamas ryšio {1}"
 
-msgid "All Formats"
-msgstr "Visi formatai"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Atsiunčiami taškai {0} į {1}..."
 
@@ -14056,89 +14440,6 @@ msgstr "Nagrinėjamas serverio atsakymas..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Netikėtas XML elementas, su vardu ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Negalima eksportuoti ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Negalima importuoti ''{0}''."
-
-msgid "Could not import files."
-msgstr "Negalima importuoti failų."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Neišeina perskaityti failo ''{0}''.<br>Klaida yra:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Neišeina perskaityti failų.<br>Klaida yra:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON failai"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Sluoksnis ''{0}'' nėra palaikomas"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Pastaba: GPL nesuderinama su OSM licenzija. Neišsiųskite GPL licencijuotų "
-"kelių."
-
-msgid "GPS track description"
-msgstr "GPS pėdsako aprašas"
-
-msgid "Add author information"
-msgstr "Pridėti informacija apie autorių"
-
-msgid "Real name"
-msgstr "Tikrasis vardas"
-
-msgid "E-Mail"
-msgstr "El.paštas"
-
-msgid "Copyright (URL)"
-msgstr "Autorinės teisės (URL)"
-
-msgid "Predefined"
-msgstr "Iš anksto numatytas"
-
-msgid "Copyright year"
-msgstr "Autorinių teisių metai"
-
-msgid "Keywords"
-msgstr "Raktažodis"
-
-msgid "Export options"
-msgstr "Eksportavimo nustatymai"
-
-msgid "Export and Save"
-msgstr "Eksportuoti ir Išsaugoti"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr "Klaida eksportuojant {0}:{1}"
-
-msgid "Choose a predefined license"
-msgstr "Pasirinkite iš anksto numatytą licenziją"
-
-msgid "GPX Files"
-msgstr "GPX failai"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -14148,18 +14449,6 @@ msgstr "(eilutėje {0}, skiltis {1})"
 msgid "Unknown mode {0}."
 msgstr "Nežinoma veiksena {0}."
 
-msgid "Image Files"
-msgstr "Vaizdo failai"
-
-msgid "folder"
-msgstr "aplankas"
-
-msgid "Looking for image files"
-msgstr "Žiūrima vaizdo failų"
-
-msgid "No image files found."
-msgstr "Vaizdo failai nerasti."
-
 msgid "get number of unread messages"
 msgstr "gauti neskaitytų pranešimų skaičių"
 
@@ -14213,36 +14502,9 @@ msgstr "Gaunamas ryšys su id {0} iš „{1}“"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Serveris atsakė su atsakymo kodu 404, id {0}. Praleidžiama."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 failai"
-
-msgid "Coordinates imported: {0}"
-msgstr "Importuota koordinačių: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Blogai suformuoti sakiniai: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Kontrolinių sumų klaidos: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Nežinomi sakiniai: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nulinės koordinatės: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA importo sėkmė:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA importo nesėkmė!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Tuščios nuorodos reikšmė, tikriausiai trūkstamos žymos."
 
-msgid "Note Files"
-msgstr "Pastabų failai"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14333,9 +14595,6 @@ msgstr "(Kodas={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Severis išvedė klaidą, su kodu {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM serverio failai suspausti bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
@@ -14343,18 +14602,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "OsmChange dokumento prologas dar neparašytas. Prašome parašyti tai pirmi."
 
-msgid "OsmChange File"
-msgstr "OsmChange failas"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Failas „{0}“ neegzistuoja."
-
-msgid "No data found in file {0}."
-msgstr "Nerasta duomenų faile {0}."
-
-msgid "Open OsmChange file"
-msgstr "Atverti OsmChange failą"
-
 msgid "Unsupported version: {0}"
 msgstr "Nepalaikoma versija: {0}"
 
@@ -14404,38 +14651,9 @@ msgstr "Nepavyko pasirašyti HTTP ryšio su OAuth tapatumo nustatymo antrašte"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM serverio failai"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Pasirodė klaida, kai buvo saugoma.<br>Klaida yra:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Įvyko klaida atkuriant atsarginės kopijos "
-"failą.<br>Klaida:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM serverio failai suspausti bzip2"
-
 msgid "Parsing OSM history data ..."
 msgstr "Nagrinėjami OSM istorijos duomenys ..."
 
-msgid "Invalid dataset"
-msgstr "Klaidinga duomenų aibė"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nerasta duomenų sluoksniui ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nerasta duomenų faile ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Atverti OSM failą"
-
 msgid "Reading was canceled"
 msgstr "Skaitymo atsisakyta"
 
@@ -14574,6 +14792,9 @@ msgstr "Jungiamasi prie serverio..."
 msgid "Downloading OSM notes..."
 msgstr "Atsiunčiamos OSM pastabos..."
 
+msgid "Downloading data..."
+msgstr "Atsiunčiami duomenys…"
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14634,14 +14855,8 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Atsiunčiami duomenys…"
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS failai (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nepalaikoma WMS failo versija; rasta {0}, tikėtasi {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Netikėta rakto „{0}“ reikšmė nustatymuose, gauta „{1}“"
 
 msgid "{0} bytes have been read"
 msgstr "{0} baitai (-ų/as) buvo perskaityti (-as)"
@@ -15780,36 +15995,6 @@ msgstr "Atidaromas URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neturi {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Pasenusi Java versija"
-
-msgid "Update Java"
-msgstr "Atnaujinkite Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Naudojate Java {0} versiją."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Ši versija jau nebepalaikoma {0} nuo {1} ir nėra rekomenduojama naudoti."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM greitai nustos veikti su šia Java versija; mes labai rekomenduojame "
-"atnaujinti į Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Ar norite atnaujinti dabar?"
-
 msgid "reserved"
 msgstr "rezervuota"
 
@@ -15881,22 +16066,6 @@ msgstr "Įtartini simboliai rakte:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Vertė per ilga (maks. {0} simboliai):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Ar norite įdėti šias žymas?"
-
-msgid "Clear buffer"
-msgstr "Išvalyti buferį"
-
-msgid "Ignore warnings"
-msgstr "Ignoruoti įspėjimus"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Atsiprašome, neįmanoma įkelti žymų iš buferio. Jame nėra jokių "
-"JOSM objektų ar tinkamo teksto. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15921,126 +16090,13 @@ msgstr[0] "diena"
 msgstr[1] "dienos"
 msgstr[2] "dienų"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Nuostata su raktu „{0}“ neapima „{1}“. Neįmanoma atkurti langų geometrijos "
-"iš nuostatų."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Nuostata su raktu „{0}“ nepateikia „{1}“ sveikojo skaičiaus reikšmės. Gauta "
-"{2}. Neįmanoma atkurti langų geometrijos iš nuostatų."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Nepavyko išnagrinėti lauko „{1}“ nuostatoje su raktu „{0}“. Išimtinė "
-"situacija: {2}. Neįmanoma atkurti langų geometrijos iš nuostatų."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Nuostata su raktu „{0}“ neegzistuoja. Neįmanoma atkurti langų geometrijos iš "
-"nuostatų."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignoruojama blogai suformuota geometrija: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Nepavyko įkelti XML schemos."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Susidūrėte su JOSM klaida"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Įvyko išimtinė situacija.\n"
-"Tai visuomet programavimo klaida. Jei naudojate naujausią JOSM versiją, "
-"apsvarstykite galimybę pranešti apie klaidą."
-
-msgid "Debug information"
-msgstr "Derinimo informacija"
-
-msgid "Manually report at:"
-msgstr "Pranešti rankiniu būdu:"
-
-msgid "Is JOSM up to date?"
-msgstr "Ar JOSM naujausios versijos?"
-
-msgid "Send bug report"
-msgstr "Pranešti apie klaidą"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Jei naudojate naujausias JOSM ir papildinių versijas, praneškite apie klaidą "
-"į mūsų klaidų sekimo sistemą.\n"
-"Ten informacija apie klaidą jau turėtų būti užpildyta. Įtraukite informaciją "
-"kaip atkartoti problemą ir stenkitės pateikti kiek įmanoma daugiau detalių."
-
-msgid "Report Bug"
-msgstr "Pranešti apie klaidą"
-
-msgid "Suppress this error for this session."
-msgstr "Nerodyti šios klaidos šiame seanse."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Nerodyti kitų klaidos dialogų langų šiame seanse."
-
-msgid "Ignore this error."
-msgstr "Ignoruoti šią klaidą"
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr "Įtraukti sistemos būsenos ataskaitą."
-
-msgid "Include information about the data you were working on."
-msgstr "Įtraukti informaciją apie duomenis prie kurių dirbote."
-
-msgid "Include all stack traces."
-msgstr "Įtraukti dėklo pėdsakus."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Dabartinė JOSM versija yra {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Įvyko klaida tikrinant ar JOSM yra naujausios versijos."
-
-msgid "JOSM is up to date."
-msgstr "JOSM yra naujausios versijos."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Prieš pranešdami apie klaidą įsitikinkite, kad atnaujinote JOSM į naujausią "
-"versiją čia:"
-
-msgid "Update JOSM"
-msgstr "Atnaujinti JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -16093,6 +16149,8 @@ msgid ""
 "The maximum bbox size is 0.25, and your request was too large. Either "
 "request a smaller area, or use planet.osm"
 msgstr ""
+"Didžiausias apimties stačiakampio dydis yra 0.25, jūsų užklausa buvo per "
+"didelė. Užklauskite mažesnio ploto arba naudokite planet.osm"
 
 msgid "JOSM-Trac login at josm.openstreetmap.de"
 msgstr ""
@@ -19756,9 +19814,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "istorija"
-
 msgid "nature"
 msgstr ""
 
@@ -20338,6 +20393,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Slaugos namai"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22778,6 +22836,9 @@ msgstr "Dovanos/Suvenyrai"
 msgid "Variety Store"
 msgstr "Įvairių prekių parduotuvė"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Lažybininkas"
 
@@ -23650,6 +23711,78 @@ msgstr "Komercinė"
 msgid "Industrial"
 msgstr "Industrinė"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garažai"
 
@@ -24345,6 +24478,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap (pritaikyta dviračiams)"
 
@@ -25097,6 +25233,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25211,15 +25350,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Rūro metropolis: Luftbilder (10 cm)"
 
@@ -27506,7 +27636,7 @@ msgstr ""
 "informuotas, jeigu kažkas prie jūsų artėja."
 
 msgid "Allows you to view a GeoJSON file as a layer."
-msgstr ""
+msgstr "Leidžia peržiūrėti GeoJSON failą kaip sluoksnį."
 
 msgid ""
 "Provides parts of the GeoTools library for other JOSM plugins. Not meant to "
@@ -32004,7 +32134,7 @@ msgid "Direction index ''{0}'' not found"
 msgstr ""
 
 msgid "The starting location was not within the bbox"
-msgstr ""
+msgstr "Pradinė vieta nebuvo apimties stačiakampyje"
 
 msgid "Looking for shoreline..."
 msgstr ""
@@ -33108,7 +33238,7 @@ msgid "Joining adjacent segments"
 msgstr ""
 
 msgid "Removing small objects"
-msgstr ""
+msgstr "Šalinami smulkūs objektai"
 
 msgid "Removing large objects"
 msgstr ""
@@ -33192,13 +33322,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -33697,6 +33833,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33705,6 +33844,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/lv.po b/i18n/po/lv.po
index 51e0c76..c82d11d 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:52+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:51+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: lv\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr "Izveido pamatizvēlni"
-
-msgid "Help"
-msgstr "Palīgs"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Sartē OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Startē validatoru"
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr "Startē karšu stilus"
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr "Atjaunina lietotāja saskarni"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorēju sliktformētu URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Uzmanību"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorēju sliktformētu faila URL: \"{0}"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametrs \"downloadgps\" nepieņem failu vārdus vai failu URL"
-
 msgid "About"
 msgstr "Par programmu"
 
@@ -180,6 +135,9 @@ msgstr "Atcelt"
 msgid "Click to abort launching external browsers"
 msgstr "Nospiediet, lai pārtrauktu ārējo pārlūku palaišanu"
 
+msgid "Warning"
+msgstr "Uzmanību"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Lūdzu izvēlaties kaut vienu lejuplādētu mezglu, posmu vai saistību."
 
@@ -461,13 +419,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Lejupielādēt no OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Lejupielādēt kartes datus no OSM servera."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -475,9 +430,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -544,6 +496,9 @@ msgstr "Nav ko eksportēt. Iegūstiet vispirms kādus datus."
 msgid "Export GPX file"
 msgstr "Eksportēt GPX datni"
 
+msgid "Help"
+msgstr "Palīgs"
+
 msgid "History"
 msgstr "Vēsture"
 
@@ -1049,23 +1004,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Ielīmēt"
 
@@ -2320,36 +2258,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2636,86 +2544,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2733,9 +2561,6 @@ msgstr "{0} mezgli posmā {1} pārsniedz maksimālo atļauto mezglu skaitu {2}"
 msgid "API Capabilities Violation"
 msgstr "API iespēju pārkāpums"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3082,57 +2907,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3222,6 +3002,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3350,6 +3136,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3364,6 +3159,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3400,15 +3198,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3434,21 +3285,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3482,6 +3323,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3559,6 +3510,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3743,9 +3809,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3930,9 +3993,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4471,9 +4531,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4588,45 +4645,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorēju sliktformētu URL: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorēju sliktformētu faila URL: \"{0}"
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametrs \"downloadgps\" nepieņem failu vārdus vai failu URL"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4715,6 +4741,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr "Izveido pamatizvēlni"
+
+msgid "Updating user interface"
+msgstr "Atjaunina lietotāja saskarni"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Sartē OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Startē validatoru"
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr "Startē karšu stilus"
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5176,6 +5262,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5870,6 +6029,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6426,9 +6599,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6539,9 +6709,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7934,49 +8101,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
 msgstr ""
 
+msgid "Download object"
+msgstr "Lejupielādēt objektu"
+
+msgid "Start downloading"
+msgstr "Sākt lejupielādi"
+
 msgid ""
-"<html>Autostart ''Download from OSM'' dialog every time JOSM is "
-"started.<br>You can open it manually from File menu or toolbar.</html>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7988,36 +8193,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Lejupielādēt objektu"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Sākt lejupielādi"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8062,9 +8278,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8602,6 +8815,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9079,9 +9304,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9160,6 +9382,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Visi formāti"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Piezīme: GPL nav savietojams ar OSM licenci. Neielādējiet GPL licencētas "
+"pēdas!"
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr "Pievienot autora informāciju"
+
+msgid "Real name"
+msgstr "Īstais vārds"
+
+msgid "E-Mail"
+msgstr "E-pasts"
+
+msgid "Copyright (URL)"
+msgstr "Autortiesības (URL)"
+
+msgid "Predefined"
+msgstr "Pirmsdefinēts"
+
+msgid "Copyright year"
+msgstr "Autortiesību gads"
+
+msgid "Keywords"
+msgstr "Atslēgvārdi"
+
+msgid "Export options"
+msgstr "Eksporta opcijas"
+
+msgid "Export and Save"
+msgstr "Eksportēt un saglabāt"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Kļūda eksportējot {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Izvēlaties predefinētu licensi"
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9267,6 +9665,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9370,6 +9795,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9443,6 +9871,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10012,9 +10443,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10024,6 +10452,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10443,49 +10874,28 @@ msgid ""
 "later.</html>"
 msgstr ""
 
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11571,19 +11981,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11663,12 +12060,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12134,9 +12525,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12154,12 +12542,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12340,69 +12722,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12646,6 +12965,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12758,9 +13100,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Visi formāti"
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12863,90 +13202,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Piezīme: GPL nav savietojams ar OSM licenci. Neielādējiet GPL licencētas "
-"pēdas!"
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr "Pievienot autora informāciju"
-
-msgid "Real name"
-msgstr "Īstais vārds"
-
-msgid "E-Mail"
-msgstr "E-pasts"
-
-msgid "Copyright (URL)"
-msgstr "Autortiesības (URL)"
-
-msgid "Predefined"
-msgstr "Pirmsdefinēts"
-
-msgid "Copyright year"
-msgstr "Autortiesību gads"
-
-msgid "Keywords"
-msgstr "Atslēgvārdi"
-
-msgid "Export options"
-msgstr "Eksporta opcijas"
-
-msgid "Export and Save"
-msgstr "Eksportēt un saglabāt"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Kļūda eksportējot {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Izvēlaties predefinētu licensi"
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12956,18 +13211,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13019,36 +13262,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13136,27 +13352,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13202,35 +13403,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13362,6 +13537,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13419,13 +13597,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14361,33 +14533,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14446,20 +14591,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14483,109 +14614,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18298,9 +18333,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18880,6 +18912,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21320,6 +21355,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22180,6 +22218,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22875,6 +22985,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23627,6 +23740,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23737,15 +23853,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31597,13 +31704,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32101,6 +32214,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32109,6 +32225,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/mk.po b/i18n/po/mk.po
index 3a46055..a0ff227 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:53+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:52+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: mk\n"
 
@@ -55,55 +55,9 @@ msgstr "Услови на употреба на позадината"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Отворањето на врски не е поддржано во тековната подлога (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Ја извршувам на подготвителната постапка"
-
-msgid "Building main menu"
-msgstr "Создавам главно мени"
-
-msgid "Help"
-msgstr "Помош"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Го покревам прилогот на OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Го покревам проверувачот"
-
-msgid "Initializing presets"
-msgstr "Го покревам зададеното"
-
-msgid "Initializing map styles"
-msgstr "Ги покревам картографските стилови"
-
-msgid "Loading imagery preferences"
-msgstr "Ги покревам нагодувањата за подлогата"
-
-msgid "Updating user interface"
-msgstr "Го подновувам корисничкиот посредник"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ја занемарувам неправилната URL-адреса: „{0}“"
-
-msgid "Warning"
-msgstr "Предупредување"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ја занемарувам неправилната податотечна URL-адреса : „{0}“"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Параметарот „downloadgps“ не прифаќа имиња и URL-адреси на податотеки"
-
 msgid "About"
 msgstr "За нас"
 
@@ -181,6 +135,9 @@ msgstr "Откажи"
 msgid "Click to abort launching external browsers"
 msgstr "Стиснете за да го откажете пуштањето на надворешни прелистувачи"
 
+msgid "Warning"
+msgstr "Предупредување"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Изберете барем една веќе подигната точка, пат или релација."
 
@@ -459,13 +416,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -473,9 +427,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -542,6 +493,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Помош"
+
 msgid "History"
 msgstr ""
 
@@ -1041,23 +995,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2312,36 +2249,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2628,86 +2535,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2725,9 +2552,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3074,57 +2898,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3214,6 +2993,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3342,6 +3127,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3356,6 +3150,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3392,14 +3189,67 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -3426,21 +3276,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3474,6 +3314,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3551,6 +3501,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3735,9 +3800,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3922,9 +3984,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4463,9 +4522,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4575,50 +4631,20 @@ msgid "Do not show again (this operation)"
 msgstr ""
 
 msgid "Do not show again (this session)"
-msgstr ""
-
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgstr ""
 
-msgid "public transport"
+msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ја занемарувам неправилната URL-адреса: „{0}“"
+
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ја занемарувам неправилната податотечна URL-адреса : „{0}“"
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"Параметарот „downloadgps“ не прифаќа имиња и URL-адреси на податотеки"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4708,6 +4734,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Ја извршувам на подготвителната постапка"
+
+msgid "Building main menu"
+msgstr "Создавам главно мени"
+
+msgid "Updating user interface"
+msgstr "Го подновувам корисничкиот посредник"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Го покревам прилогот на OSM"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Го покревам проверувачот"
+
+msgid "Initializing presets"
+msgstr "Го покревам зададеното"
+
+msgid "Initializing map styles"
+msgstr "Ги покревам картографските стилови"
+
+msgid "Loading imagery preferences"
+msgstr "Ги покревам нагодувањата за подлогата"
+
 msgid "usage"
 msgstr ""
 
@@ -5169,6 +5255,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5863,6 +6022,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6419,9 +6592,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6532,9 +6702,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7927,49 +8094,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7981,36 +8186,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8055,9 +8271,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8595,6 +8808,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9072,9 +9297,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9153,6 +9375,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9260,6 +9654,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9363,6 +9784,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9436,6 +9860,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10005,9 +10432,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10017,6 +10441,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10430,55 +10857,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11564,19 +11970,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11656,12 +12049,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12128,9 +12515,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12148,12 +12532,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12334,69 +12712,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12640,6 +12955,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12752,9 +13090,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12857,86 +13192,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12946,18 +13201,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13009,36 +13252,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13126,27 +13342,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13192,35 +13393,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13352,6 +13527,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13409,13 +13587,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14351,33 +14523,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14436,20 +14581,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14473,109 +14604,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18288,9 +18323,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18870,6 +18902,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21310,6 +21345,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22170,6 +22208,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22865,6 +22975,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23617,6 +23730,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23727,15 +23843,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31587,13 +31694,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32091,6 +32204,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32099,6 +32215,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/mr.po b/i18n/po/mr.po
index ea9aaf9..97f5f8a 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:53+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:53+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: mr\n"
 
@@ -55,54 +55,9 @@ msgstr "पार्श्वभूमि वापरावयाच्या 
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "मदत"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "OSM API प्रारंभत आहे"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr "नकाशा शैली प्रारंभत आहे"
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "ताकीद"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "प्रमाणक \"downloadgps\" संचिका नावे किंवा संचिका URLs स्वीकारत नाही"
-
 msgid "About"
 msgstr "परिचय"
 
@@ -180,6 +135,9 @@ msgstr "रद्द करा"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "ताकीद"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -463,13 +421,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -477,9 +432,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -546,6 +498,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr "GPX संचिका निर्यात करा"
 
+msgid "Help"
+msgstr "मदत"
+
 msgid "History"
 msgstr "इतिहास"
 
@@ -1056,23 +1011,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "कृपया सुमारे ९० किंवा १८० अंशांचे कोन असलेले मार्ग निवडा."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "चिकटवा"
 
@@ -2336,36 +2274,6 @@ msgstr ""
 msgid "Select relation"
 msgstr "संबंध निवडा"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "शोधा..."
 
@@ -2653,86 +2561,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2750,9 +2578,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "API क्षमता भंग"
 
-msgid "Cyclic dependency between relations:"
-msgstr "संबंधांमध्ये चक्राकार अवलंब:"
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3099,57 +2924,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr "प्रश्न"
-
-msgid "Message"
-msgstr "संदेश"
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3239,6 +3019,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "मीटरमान"
 
@@ -3367,6 +3153,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3381,6 +3176,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr "संबंधांमध्ये चक्राकार अवलंब:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3417,11 +3215,64 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr "चाचणी ''{0}'' {1} मध्ये पूर्ण"
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
-
-msgid "Error in filter"
-msgstr ""
+msgid "incomplete"
+msgstr "अपूर्ण"
+
+msgid "House {0}"
+msgstr "घर {0}"
+
+msgid "House number {0} at {1}"
+msgstr "घरक्रमांक {0} {1} वर"
+
+msgid "House number {0}"
+msgstr "घरक्रमांक {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "गाठ"
+msgstr[1] "गाठी"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr "लोहमार्ग"
+
+msgid "waterway"
+msgstr "जलमार्ग"
+
+msgid "landuse"
+msgstr "भूवापर"
+
+msgid "building"
+msgstr "इमारत"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} गाठ"
+msgstr[1] "{0} गाठी"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} सदस्य"
+msgstr[1] "{0} सदस्य"
+
+msgid "public transport"
+msgstr "सार्वजनिक परिवहन"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "संबंध"
+msgstr[1] "संबंध"
+
+msgid "Changeset {0}"
+msgstr "बदलसंच {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
 msgid_plural "<p><b>{0}</b> objects hidden"
@@ -3451,21 +3302,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "गाठ"
-msgstr[1] "गाठी"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "मार्ग"
 msgstr[1] "मार्ग"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "संबंध"
-msgstr[1] "संबंध"
-
 msgid "closedway"
 msgstr ""
 
@@ -3499,6 +3340,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3576,6 +3527,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr "वर्णन:"
+
+msgid "Version:"
+msgstr "आवृत्ती:"
+
+msgid "Minimum JOSM Version:"
+msgstr "किमान JOSM आवृत्ती:"
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "पत्ते"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "संबंध"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3760,9 +3826,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "पत्ते"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3947,9 +4010,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4488,9 +4548,6 @@ msgstr "जलमार्ग प्रकार {0}"
 msgid "boundary type {0}"
 msgstr "सीमा प्रकार {0}"
 
-msgid "building"
-msgstr "इमारत"
-
 msgid "area"
 msgstr "क्षेत्र"
 
@@ -4605,45 +4662,14 @@ msgstr "पुन्हा दाखवू नका (हे सत्र)"
 msgid "Do not show again (remembers choice)"
 msgstr "पुन्हा दाखवू नका (निवड लक्षात ठेवली जाईल)"
 
-msgid "incomplete"
-msgstr "अपूर्ण"
-
-msgid "House {0}"
-msgstr "घर {0}"
-
-msgid "House number {0} at {1}"
-msgstr "घरक्रमांक {0} {1} वर"
-
-msgid "House number {0}"
-msgstr "घरक्रमांक {0}"
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr "लोहमार्ग"
-
-msgid "waterway"
-msgstr "जलमार्ग"
-
-msgid "landuse"
-msgstr "भूवापर"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} गाठ"
-msgstr[1] "{0} गाठी"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} सदस्य"
-msgstr[1] "{0} सदस्य"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
-msgstr "सार्वजनिक परिवहन"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr ""
 
-msgid "Changeset {0}"
-msgstr "बदलसंच {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "प्रमाणक \"downloadgps\" संचिका नावे किंवा संचिका URLs स्वीकारत नाही"
 
 msgid "Precondition violation"
 msgstr "पूर्वअट भंग"
@@ -4733,6 +4759,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "OSM API प्रारंभत आहे"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr "नकाशा शैली प्रारंभत आहे"
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr "वापर"
 
@@ -5194,6 +5280,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5888,6 +6047,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6444,9 +6617,6 @@ msgstr "स्रोत"
 msgid "Title:"
 msgstr "शीर्षक:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6557,9 +6727,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "संबंध"
-
 msgid "Open a list of all relations."
 msgstr "सर्व संबंधांची यादी उघडा"
 
@@ -7952,49 +8119,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -8006,36 +8211,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
 
-msgid "Download object"
+msgid "Download all data?"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Add new snippet"
 msgstr ""
 
-msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Edit selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8080,9 +8296,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8620,6 +8833,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr "प्रश्न"
+
+msgid "Message"
+msgstr "संदेश"
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9097,9 +9322,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9178,6 +9400,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9285,6 +9679,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "हा संदेश लपवा आणि तो पुन्हा दाखवू नका"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9388,6 +9809,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9461,6 +9885,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10040,9 +10467,6 @@ msgstr "(URL होती: "
 msgid "Select the map painting styles"
 msgstr "नकाशासाठी रंगशैली निवडा"
 
-msgid "loading style ''{0}''..."
-msgstr "शैली ''{0}'' लादत आहे..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10052,6 +10476,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr "शैली ''{0}'' लादत आहे..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10474,46 +10901,25 @@ msgstr ""
 msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr "वर्णन:"
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr ""
 
-msgid "Version:"
-msgstr "आवृत्ती:"
+msgid "Would you like to restart now?"
+msgstr ""
 
-msgid "Minimum JOSM Version:"
-msgstr "किमान JOSM आवृत्ती:"
+msgid "Download plugins"
+msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11600,19 +12006,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11692,12 +12085,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12163,9 +12550,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12183,12 +12567,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12369,69 +12747,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12675,6 +12990,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12787,9 +13125,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12892,86 +13227,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12981,18 +13236,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13044,36 +13287,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13161,27 +13377,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13227,35 +13428,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13387,6 +13562,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13444,13 +13622,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14386,33 +14558,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14471,20 +14616,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14508,109 +14639,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18323,9 +18358,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18905,6 +18937,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21345,6 +21380,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22205,6 +22243,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22900,6 +23010,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23652,6 +23765,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23762,15 +23878,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31622,13 +31729,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32126,6 +32239,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32134,6 +32250,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ms.po b/i18n/po/ms.po
index 605f6dc..d99ae8f 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:54+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:53+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ms\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Bantuan"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Tentang"
 
@@ -180,6 +135,9 @@ msgstr "Batal"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Bantuan"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "Hak cipta (URL)"
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr "Tahun hak cipta"
+
+msgid "Keywords"
+msgstr "Kata kunci"
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "Hak cipta (URL)"
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr "Tahun hak cipta"
-
-msgid "Keywords"
-msgstr "Kata kunci"
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/nb.po b/i18n/po/nb.po
index e9de77f..4770135 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-25 19:26+0000\n"
 "Last-Translator: Kristoffer Hagen <Unknown>\n"
 "Language-Team: Norwegian Bokmal <nb at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:55+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:54+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: nb\n"
 
@@ -55,54 +55,9 @@ msgstr "Vilkår for bakgrunnskart"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Åpning av lenke er ikke støttet på denne plattformen (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Kjører plattformavhengig oppstartskode"
-
-msgid "Building main menu"
-msgstr "Bygger hovedmeny"
-
-msgid "Help"
-msgstr "Hjelp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Starter OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Laster inn kontrollør"
-
-msgid "Initializing presets"
-msgstr "Laster inn forhåndsdefinisjoner"
-
-msgid "Initializing map styles"
-msgstr "Laster inn stilkart"
-
-msgid "Loading imagery preferences"
-msgstr "Laster bildeinstillinger"
-
-msgid "Updating user interface"
-msgstr "Oppdaterer brukergrensesnitt"
-
 msgid "Failed to save default preferences."
 msgstr "Feilet under lagring av standardinnstillinger."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Overser feilutformet URL: «{0}»"
-
-msgid "Warning"
-msgstr "Advarsel"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Overser feilutformet fil-URL: «{0}»"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parameter \"downloadgps\" støtter ikke filnavn eller fil baner"
-
 msgid "About"
 msgstr "Om"
 
@@ -184,6 +139,9 @@ msgstr "Avbryt"
 msgid "Click to abort launching external browsers"
 msgstr "Klikk for å avbryte åpningen av eksterne nettlesere"
 
+msgid "Warning"
+msgstr "Advarsel"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Velg minst én allerede opplastet node, linje eller relasjon."
 
@@ -476,13 +434,10 @@ msgstr ""
 "* Én ikke-selvkryssende vei med minimum to av dens noder;\n"
 "* Tre noder"
 
-msgid "Download from OSM..."
-msgstr "Last ned fra OSM …"
-
-msgid "Download map data from the OSM server."
-msgstr "Last ned kartdata fra OSM-tjeneren."
+msgid "Download data"
+msgstr "Last ned data"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -492,9 +447,6 @@ msgstr ""
 "<html>Fenne handling krever {0} individuelle<br>download-forespørsler. "
 "Ønsker du<br>å fortsette?</html>"
 
-msgid "Download data"
-msgstr "Last ned data"
-
 msgid "Download notes in current view"
 msgstr "Last ned notater innen nåværende visningsområde"
 
@@ -561,6 +513,9 @@ msgstr "Ingenting å eksportere. Hent inn data først."
 msgid "Export GPX file"
 msgstr "Eksporter GPX fil"
 
+msgid "Help"
+msgstr "Hjelp"
+
 msgid "History"
 msgstr "Historikk"
 
@@ -1084,23 +1039,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Vennligst velg linjer med vinkler på omtrent 90 eller 180 grader."
 
-msgid "Download from Overpass API ..."
-msgstr "Last ned fra Overpass API-en..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Last ned kartdata fra API-tjeneren til Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Lim inn"
 
@@ -2398,36 +2336,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Søk …"
 
@@ -2715,90 +2623,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Regulært uttrykk «{0}» har en feil ved posisjon {1}, feilmelding:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Nøkkel kan ikke være tom når egenskap-operatoren brukes. Bruk: nøkkel=verdi"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "Ukjent objekttype: {0}. Tillatte verdier er node, way og relation"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "Uventet symbol: {0}"
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2817,9 +2641,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "API-krav ikke møtt"
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3171,57 +2992,12 @@ msgstr "Roller i relasjoner som viser til"
 msgid "Automatic tag correction"
 msgstr "Korriger egenskap automatisk"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3311,6 +3087,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Innstilligen  {0} er fjernet fordi den ikke lenger brukes."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3439,6 +3221,15 @@ msgstr ""
 msgid "Note"
 msgstr "Kommentar"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3453,6 +3244,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3489,7 +3283,60 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "uferdig"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "node"
+msgstr[1] "noder"
+
+msgid "highway"
+msgstr "ferdselsvei"
+
+msgid "railway"
+msgstr "jernbane"
+
+msgid "waterway"
+msgstr "vannvei"
+
+msgid "landuse"
+msgstr "bruk av grunn"
+
+msgid "building"
+msgstr "bygning"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} node"
+msgstr[1] "{0} noder"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} medlem"
+msgstr[1] "{0} medlemmer"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relasjon"
+msgstr[1] "relasjoner"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
 msgid "Error in filter"
@@ -3523,21 +3370,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "node"
-msgstr[1] "noder"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "linje"
 msgstr[1] "linjer"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relasjon"
-msgstr[1] "relasjoner"
-
 msgid "closedway"
 msgstr "stengt_vei"
 
@@ -3571,6 +3408,120 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "parameter {0} er ikke i intervall 0–{1} – leste {2}"
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Regulært uttrykk «{0}» har en feil ved posisjon {1}, feilmelding:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Nøkkel kan ikke være tom når egenskap-operatoren brukes. Bruk: nøkkel=verdi"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "Ukjent objekttype: {0}. Tillatte verdier er node, way og relation"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "Uventet symbol: {0}"
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3648,6 +3599,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Adresser"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Ferdselsveier"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relasjoner"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3834,9 +3900,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Adresser"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -4021,9 +4084,6 @@ msgstr "Doble linjenoder"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Sjekker om linjer har identiske etterfølgende Noder."
 
-msgid "Highways"
-msgstr "Ferdselsveier"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4567,9 +4627,6 @@ msgstr "vannvei type {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "bygning"
-
 msgid "area"
 msgstr "område"
 
@@ -4686,45 +4743,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "uferdig"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "ferdselsvei"
-
-msgid "railway"
-msgstr "jernbane"
-
-msgid "waterway"
-msgstr "vannvei"
-
-msgid "landuse"
-msgstr "bruk av grunn"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} node"
-msgstr[1] "{0} noder"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} medlem"
-msgstr[1] "{0} medlemmer"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Overser feilutformet URL: «{0}»"
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Overser feilutformet fil-URL: «{0}»"
 
-msgid "Changeset {0}"
-msgstr ""
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parameter \"downloadgps\" støtter ikke filnavn eller fil baner"
 
 msgid "Precondition violation"
 msgstr "Forhåndsbetingelse brutt"
@@ -4814,6 +4840,66 @@ msgstr "Forskyvning"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Kjører plattformavhengig oppstartskode"
+
+msgid "Building main menu"
+msgstr "Bygger hovedmeny"
+
+msgid "Updating user interface"
+msgstr "Oppdaterer brukergrensesnitt"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Starter OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Laster inn kontrollør"
+
+msgid "Initializing presets"
+msgstr "Laster inn forhåndsdefinisjoner"
+
+msgid "Initializing map styles"
+msgstr "Laster inn stilkart"
+
+msgid "Loading imagery preferences"
+msgstr "Laster bildeinstillinger"
+
 msgid "usage"
 msgstr "bruk"
 
@@ -5275,6 +5361,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Rapporter feil"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5996,6 +6155,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6552,9 +6725,6 @@ msgstr "Kilde"
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6665,9 +6835,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relasjoner"
-
 msgid "Open a list of all relations."
 msgstr "Åpne en liste over alle relasjoner"
 
@@ -8064,24 +8231,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr ""
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap-data"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "GPS-rådata"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Last ned som nytt lag"
 
@@ -8109,6 +8258,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Last ned objekt"
+
+msgid "Start downloading"
+msgstr "Start nedlasting"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap-data"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "GPS-rådata"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8119,38 +8324,49 @@ msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 "Områdets størrelse OK, størrelsen vil sannsynligvis aksepteres av tjener"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Last ned objekt"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Start nedlasting"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
 msgstr ""
 
+msgid "history"
+msgstr "Historisk"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8193,9 +8409,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Tolkningsfeil"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8751,6 +8964,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr "Laster ned fil"
 
@@ -9235,9 +9460,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9316,6 +9538,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Alle formater"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Merk: GPL er ikke kompatibel med OSM-lisensen. Ikke last opp GPL-lisensierte "
+"spor."
+
+msgid "GPS track description"
+msgstr "beskrivelse av sporloggen"
+
+msgid "Add author information"
+msgstr "Legg til informasjon om opphavsperson"
+
+msgid "Real name"
+msgstr "Fullt navn"
+
+msgid "E-Mail"
+msgstr "E-post"
+
+msgid "Copyright (URL)"
+msgstr "Opphavsrett (URL)"
+
+msgid "Predefined"
+msgstr "Forhåndsvalgt"
+
+msgid "Copyright year"
+msgstr "År for opphavsrett"
+
+msgid "Keywords"
+msgstr "Stikkord"
+
+msgid "Export options"
+msgstr "Innstillinger for eksport"
+
+msgid "Export and Save"
+msgstr "Eksporter og lagre"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Det oppsto feil i eksport av {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Velg en lisens"
+
+msgid "GPX Files"
+msgstr "GPX filer"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 filer"
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "Feil ved import av NMEA data!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM-tjenerfiler bzip2-komprimert"
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr "Fila «{0}» finnes ikke"
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "OSM-tjenerfiler"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM-tjenerfiler gzip-komprimert"
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Støtter ikke WMS fil versjon;fant {0}, ønsker {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9423,6 +9821,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Tilpass farge"
 
@@ -9526,6 +9951,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "utenfor nedlastet område"
 
@@ -9601,6 +10029,9 @@ msgstr "Valideringsfeil"
 msgid "No validation errors"
 msgstr "Ingen valideringsfeil"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10190,9 +10621,6 @@ msgstr "(URL var: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10202,6 +10630,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10624,46 +11055,25 @@ msgstr ""
 msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "Du må starte JOSM for at enkelte innstillingene skal tre i kraft."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "Du må starte JOSM for at enkelte innstillingene skal tre i kraft."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11771,19 +12181,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Innstillinger for kart"
 
@@ -11863,12 +12260,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12334,9 +12725,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12354,12 +12742,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12543,69 +12925,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12849,6 +13168,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12970,9 +13312,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Alle formater"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Laster ned punkt {0} til {1}..."
 
@@ -13075,90 +13414,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Merk: GPL er ikke kompatibel med OSM-lisensen. Ikke last opp GPL-lisensierte "
-"spor."
-
-msgid "GPS track description"
-msgstr "beskrivelse av sporloggen"
-
-msgid "Add author information"
-msgstr "Legg til informasjon om opphavsperson"
-
-msgid "Real name"
-msgstr "Fullt navn"
-
-msgid "E-Mail"
-msgstr "E-post"
-
-msgid "Copyright (URL)"
-msgstr "Opphavsrett (URL)"
-
-msgid "Predefined"
-msgstr "Forhåndsvalgt"
-
-msgid "Copyright year"
-msgstr "År for opphavsrett"
-
-msgid "Keywords"
-msgstr "Stikkord"
-
-msgid "Export options"
-msgstr "Innstillinger for eksport"
-
-msgid "Export and Save"
-msgstr "Eksporter og lagre"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Det oppsto feil i eksport av {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Velg en lisens"
-
-msgid "GPX Files"
-msgstr "GPX filer"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Lesefeil: Strukturen i GPX fila er ukjent"
 
@@ -13168,18 +13423,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13231,36 +13474,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Tjeneren svarte med HTTP 404 for ID {0} – hopper over."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 filer"
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "Feil ved import av NMEA data!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer-feil, muligens manglende egenskaper."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13348,27 +13564,12 @@ msgstr "(Kode={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Tjeneren svarte en feil med kode {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM-tjenerfiler bzip2-komprimert"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr "Fila «{0}» finnes ikke"
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13416,35 +13617,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM-tjenerfiler"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM-tjenerfiler gzip-komprimert"
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13576,6 +13751,9 @@ msgstr "Kobler til tjener …"
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13634,15 +13812,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Støtter ikke WMS fil versjon;fant {0}, ønsker {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14582,33 +14754,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14667,20 +14812,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14704,109 +14835,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Rapporter feil"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18523,9 +18558,6 @@ msgstr "Tavleinnhold"
 msgid "notice"
 msgstr "Merknad"
 
-msgid "history"
-msgstr "Historisk"
-
 msgid "nature"
 msgstr "Natur"
 
@@ -19105,6 +19137,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21545,6 +21580,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22405,6 +22443,78 @@ msgstr "Næringsområde"
 msgid "Industrial"
 msgstr "Industriområde"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garasje"
 
@@ -23104,6 +23214,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23856,6 +23969,9 @@ msgstr "Matrikkel"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23966,15 +24082,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31884,13 +31991,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32388,6 +32501,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32396,6 +32512,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/nds.po b/i18n/po/nds.po
index 2730d91..0a9e750 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:54+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:54+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/nl.po b/i18n/po/nl.po
index 0c2cbdd..7581214 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-07-02 11:29+0000\n"
 "Last-Translator: DiGro <Unknown>\n"
 "Language-Team: Dutch\n"
@@ -15,7 +15,7 @@ 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-08-13 04:40+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:40+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: nl\n"
 
@@ -56,56 +56,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Openen van koppeling niet ondersteund op het huidige platform (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr "Platform-opstarthook uitvoeren"
-
-msgid "Building main menu"
-msgstr "Hoofdmenu opbouwen"
-
-msgid "Help"
-msgstr "Help"
-
-msgid "Initializing internal boundaries data"
-msgstr "Initialiseren van gegevens van interne grenzen"
-
-msgid "Initializing OSM API"
-msgstr "OSM-API initialiseren"
-
-msgid "Initializing internal traffic data"
-msgstr "Initialiseren van interne verkeersgegevens"
-
-msgid "Initializing validator"
-msgstr "Validator initialiseren"
-
-msgid "Initializing presets"
-msgstr "Voorkeuzen initialiseren"
-
-msgid "Initializing map styles"
-msgstr "Kaartstijlen initialiseren"
-
-msgid "Loading imagery preferences"
-msgstr "Afbeeldingsvoorkeuren laden"
-
-msgid "Updating user interface"
-msgstr "Interface bijwerken"
-
 msgid "Failed to save default preferences."
 msgstr "Opslaan van standaard voorkeuren mislukt."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ongeldige URL \"{0}\" wordt genegeerd"
-
-msgid "Warning"
-msgstr "Waarschuwing"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ongeldige URL voor bestand negeren: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Parameter \"downloadgps\" accepteert geen bestandsnamen of URL''s voor "
-"bestanden"
-
 msgid "About"
 msgstr "Over"
 
@@ -187,6 +140,9 @@ msgstr "Annuleren"
 msgid "Click to abort launching external browsers"
 msgstr "Klik om het openen van de externe browservensters te annuleren"
 
+msgid "Warning"
+msgstr "Waarschuwing"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Selecteer ten minste één reeds geüploade knoop, weg of relatie."
 
@@ -483,14 +439,11 @@ msgstr ""
 "* Eén niet zichzelf kruisende weg met tenminste twee van zijn knopen;\n"
 "* Drie knopen."
 
-msgid "Download from OSM..."
-msgstr "Downloaden vanuit OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Kaartgegevens downloaden van de server van OSM."
+msgid "Download data"
+msgstr "Ophalen gegevens"
 
-msgid "Please select a download area first."
-msgstr "Selecteer eerst een gebied waarvan u gegevens wilt downloaden"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -499,9 +452,6 @@ msgstr ""
 "<html>Deze actie vereist {0} individuele<br>verzoeken om te downloaden. Wilt "
 "u<br>doorgaan?</html>"
 
-msgid "Download data"
-msgstr "Ophalen gegevens"
-
 msgid "Download notes in current view"
 msgstr "Opmerkingen in huidige weergave downloaden"
 
@@ -571,6 +521,9 @@ msgstr "Niets te exporteren. Verzamel eerst enkele gegevens."
 msgid "Export GPX file"
 msgstr "Exporteren als GPX-bestand"
 
+msgid "Help"
+msgstr "Help"
+
 msgid "History"
 msgstr "Geschiedenis"
 
@@ -1146,23 +1099,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Selecteer wegen met hoeken van ongeveer 90 of 180 graden."
 
-msgid "Download from Overpass API ..."
-msgstr "Downloaden vanaf Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Download kaartgegevens vanaf server van Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Plakken"
 
@@ -2554,36 +2490,6 @@ msgstr "Selecteer relatie (toevoegen)"
 msgid "Select relation"
 msgstr "Selecteer relatie"
 
-msgid "<not>"
-msgstr "<niet>"
-
-msgid "<or>"
-msgstr "<of>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<linker ouder>"
-
-msgid "<right parent>"
-msgstr "<rechter ouder>"
-
-msgid "<colon>"
-msgstr "<dubbele punt>"
-
-msgid "<equals>"
-msgstr "<is gelijk aan>"
-
-msgid "<key>"
-msgstr "<sleutel>"
-
-msgid "<question mark>"
-msgstr "<vraagteken>"
-
-msgid "<end-of-file>"
-msgstr "<einde-van-bestand>"
-
 msgid "Search..."
 msgstr "Zoeken..."
 
@@ -2885,96 +2791,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Zoeken in {0} object"
 msgstr[1] "Searching in {0} objecten"
 
-msgctxt "search"
-msgid "CS"
-msgstr "HG (hoofdlettergevoelig)"
-
-msgctxt "search"
-msgid "CI"
-msgstr "NHG (niet-hoofdlettergevoelig)"
-
-msgctxt "search"
-msgid "RX"
-msgstr "Regex (reguliere expressie)"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "T"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"De regexp \"{0}\" bevat een fout bij het parsen op positie {1}, volledige "
-"foutmelding:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"De regex \"{0}\" bevat een fout bij het parsen, volledige foutmelding:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Kan tijdstempel ''{0}'' niet parsen"
-
-msgid "Expecting {0} after {1}"
-msgstr "Verwacht {0} na {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Bereik van ID''s voor primitieven verwacht"
-
-msgid "Range of changeset ids expected"
-msgstr "Bereik van ID''s voor wijzigingen verwacht"
-
-msgid "Range of versions expected"
-msgstr "Bereik van versies verwacht"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Sleutel mag niet leeg zijn als de tag-operator wordt gebruikt.  Voorbeeld "
-"van gebruik: sleutel=waarde"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Onbekende primitief: {0}. Toegestane waarden zijn knoop, weg of relatie"
-
-msgid "Positive integer expected"
-msgstr "Positief geheel getal verwacht"
-
-msgid "Range of numbers expected"
-msgstr "Een bereik van getallen werd verwacht"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Onverwacht teken. {0} werd verwacht, {1} werd gevonden"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Parsen selectie MapCSS mislukt"
-
-msgid "Unexpected token: {0}"
-msgstr "Onverwacht teken: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parameter voor OF ontbreekt"
-
-msgid "Missing parameter for XOR"
-msgstr "Ontbrekende parameter voor XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Operator voor NIET ontbreekt"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Breek automatisch de waarde van de tag ''{0}'' af voor verwijderde object {1}"
@@ -2996,9 +2812,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "API inbreuk op mogelijkheden"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cirkelverwijzing tussen relaties:"
-
 msgid "Removed obsolete tags"
 msgstr "Verwijderde vervallen tags"
 
@@ -3378,67 +3191,12 @@ msgstr "Rollen in relaties verwijzen naar"
 msgid "Automatic tag correction"
 msgstr "Automatische tagcorrectie"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Map {0} kan niet aangemaakt worden, automatisch opslaan zal worden "
-"uitgeschakeld"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Het bestand {0} kan niet aangemaakt worden, er zal een andere bestandsnaam "
-"worden gebruikt"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Fout voor Invoer/Uitvoer bij het aanmaken van bestand, automatisch opslaan "
-"wordt overgeslagen: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Het voormalige back-upbestand {0} kan niet worden verwijderd"
-
-msgid "Your work has been saved automatically."
-msgstr "Uw werk is automatisch opgeslagen."
-
-msgid "Restoring files"
-msgstr "Bezig met herstellen van bestanden"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Onmogelijk back-upbestand {0} te verwijderen"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Onmogelijk PIDbestand {0} te verwijderen"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Onmogelijk gearchiveerd back-upbestand {0} te verwijderen"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Ongeldige waarde ''{0}'' voor breedtegraad"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Ongeldige waarde ''{0}'' voor lengtegraad"
 
-msgid "Question"
-msgstr "Vraag"
-
-msgid "Message"
-msgstr "Bericht"
-
-msgid "Enter text"
-msgstr "Voer tekst in"
-
-msgid "Installing plugins"
-msgstr "Installeren van plugins"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>bestand met instellingen vraagt om voorkeuren toe te voegen aan "
-"<b>{0}</b>,<br/> maar de standaard waarde daarvan is op dit moment niet "
-"bekend.<br/> Activeer alstublieft de overeenkomende functie handmatig en "
-"probeer opnieuw te importeren."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Maken van ontbrekende cache-map: {0} mislukt"
 
@@ -3551,6 +3309,16 @@ msgstr ""
 "Instelling van voorkeur {0} is verwijderd omdat hij niet langer wordt "
 "gebruikt."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>bestand met instellingen vraagt om voorkeuren toe te voegen aan "
+"<b>{0}</b>,<br/> maar de standaard waarde daarvan is op dit moment niet "
+"bekend.<br/> Activeer alstublieft de overeenkomende functie handmatig en "
+"probeer opnieuw te importeren."
+
 msgid "Metric"
 msgstr "Metrisch"
 
@@ -3691,6 +3459,18 @@ msgstr ""
 msgid "Note"
 msgstr "Notitie"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Ophalen van toegangstoken voor OAuth vanaf beheerder van inloggegevens "
+"mislukt"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Huidig beheer voor beveiligde gegevens is van het type ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Opslaan van toegangstoken voor OAuth naar beheerder van inloggegevens mislukt"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 verwacht. Kreeg {0}."
 
@@ -3707,6 +3487,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Een primitief met ID = 0 kan niet onzichtbaar zijn."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cirkelverwijzing tussen relaties:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3751,6 +3534,59 @@ msgstr "Gegevens samenvoegen..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' voltooid in {1}"
 
+msgid "incomplete"
+msgstr "incompleet"
+
+msgid "House {0}"
+msgstr "Huisnaam {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Huisnummer {0} op {1}"
+
+msgid "House number {0}"
+msgstr "Huisnummer {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "knoop"
+msgstr[1] "knopen"
+
+msgid "highway"
+msgstr "verkeersweg"
+
+msgid "railway"
+msgstr "spoorweg"
+
+msgid "waterway"
+msgstr "waterweg"
+
+msgid "landuse"
+msgstr "grondgebruik"
+
+msgid "building"
+msgstr "gebouw"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} knoop"
+msgstr[1] "{0} knopen"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} lid"
+msgstr[1] "{0} leden"
+
+msgid "public transport"
+msgstr "Openbaar vervoer"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relatie"
+msgstr[1] "relaties"
+
+msgid "Changeset {0}"
+msgstr "Wijzigingenset {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Fout in filter <code>{0}</code>:<br>{1}"
 
@@ -3789,21 +3625,11 @@ msgstr ""
 "Primitieven met verschillende ID''s kunnen niet worden samengevoegd. Deze ID "
 "is {0}, de andere is {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "knoop"
-msgstr[1] "knopen"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "weg"
 msgstr[1] "wegen"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relatie"
-msgstr[1] "relaties"
-
 msgid "closedway"
 msgstr "geslotenweg"
 
@@ -3841,6 +3667,126 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parameter {0} niet in bereik 0..{1}. Kreeg ''{2}''."
 
+msgid "<not>"
+msgstr "<niet>"
+
+msgid "<or>"
+msgstr "<of>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<linker ouder>"
+
+msgid "<right parent>"
+msgstr "<rechter ouder>"
+
+msgid "<colon>"
+msgstr "<dubbele punt>"
+
+msgid "<equals>"
+msgstr "<is gelijk aan>"
+
+msgid "<key>"
+msgstr "<sleutel>"
+
+msgid "<question mark>"
+msgstr "<vraagteken>"
+
+msgid "<end-of-file>"
+msgstr "<einde-van-bestand>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"De regexp \"{0}\" bevat een fout bij het parsen op positie {1}, volledige "
+"foutmelding:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"De regex \"{0}\" bevat een fout bij het parsen, volledige foutmelding:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Kan tijdstempel ''{0}'' niet parsen"
+
+msgid "Expecting {0} after {1}"
+msgstr "Verwacht {0} na {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Bereik van ID''s voor primitieven verwacht"
+
+msgid "Range of changeset ids expected"
+msgstr "Bereik van ID''s voor wijzigingen verwacht"
+
+msgid "Range of versions expected"
+msgstr "Bereik van versies verwacht"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Sleutel mag niet leeg zijn als de tag-operator wordt gebruikt.  Voorbeeld "
+"van gebruik: sleutel=waarde"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Onbekende primitief: {0}. Toegestane waarden zijn knoop, weg of relatie"
+
+msgid "Positive integer expected"
+msgstr "Positief geheel getal verwacht"
+
+msgid "Range of numbers expected"
+msgstr "Een bereik van getallen werd verwacht"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Parsen selectie MapCSS mislukt"
+
+msgid "Unexpected token: {0}"
+msgstr "Onverwacht teken: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parameter voor OF ontbreekt"
+
+msgid "Missing parameter for XOR"
+msgstr "Ontbrekende parameter voor XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Operator voor NIET ontbreekt"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Onverwacht teken. {0} werd verwacht, {1} werd gevonden"
+
+msgctxt "search"
+msgid "CS"
+msgstr "HG (hoofdlettergevoelig)"
+
+msgctxt "search"
+msgid "CI"
+msgstr "NHG (niet-hoofdlettergevoelig)"
+
+msgctxt "search"
+msgid "RX"
+msgstr "Regex (reguliere expressie)"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "T"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Laden van de kaartrender klasse ''{0}'' mislukt. De klasse werd niet "
@@ -3926,6 +3872,123 @@ msgstr "Verwacht element ''{0}'', maar kreeg ''{1}''"
 msgid "value expected"
 msgstr "waarde verwacht"
 
+msgid "Short Description:"
+msgstr "Korte beschrijving:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Auteur:"
+
+msgid "Webpage:"
+msgstr "Webpagina:"
+
+msgid "Description:"
+msgstr "Beschrijving:"
+
+msgid "Version:"
+msgstr "Versie:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimale JOSM-versie:"
+
+msgid "by {0}"
+msgstr "door {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM standaard (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Interne stijl die moet worden gebruikt als basis voor runtime schakelbare "
+"overtrek-stijlen"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "de belangrijkste stijl van Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Interne voorkeuze"
+
+msgid "The default preset for JOSM"
+msgstr "De standaard voorkeuze voor JOSM"
+
+msgid "Addresses"
+msgstr "Adressen"
+
+msgid "Checks for errors on addresses"
+msgstr "Controleren op fouten in adressen"
+
+msgid "Tag combinations"
+msgstr "Tagcombinaties"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Controleert op ontbrekende tag of verdachte combinaties"
+
+msgid "Deprecated features"
+msgstr "Vervallen mogelijkheden"
+
+msgid "Checks for deprecated features"
+msgstr "Controleert op vervallen mogelijkheden"
+
+msgid "Geometry"
+msgstr "Geometrie"
+
+msgid "Checks for geometry errors"
+msgstr "Controleert op fouten in de geometrie"
+
+msgid "Highways"
+msgstr "Wegen"
+
+msgid "Checks for errors on highways"
+msgstr "Controleert op fouten in wegen"
+
+msgid "Multiple values"
+msgstr "Meervoudige waarden"
+
+msgid "Checks for wrong multiple values"
+msgstr "Controleert op foutieve meervoudige waarden"
+
+msgid "Numeric values"
+msgstr "Numerieke waarden"
+
+msgid "Checks for wrong numeric values"
+msgstr "Controleert op foutieve numerieke waarden"
+
+msgid "Religion"
+msgstr "Religie"
+
+msgid "Checks for errors on religious objects"
+msgstr "Controleert op fouten voor religieuze objecten"
+
+msgid "Relations"
+msgstr "Relaties"
+
+msgid "Checks for errors on relations"
+msgstr "Controleert op fouten in relaties"
+
+msgid "Territories"
+msgstr "Gebieden"
+
+msgid "Checks for territories-specific features"
+msgstr "Controles voor gebiedsspecifieke objecten"
+
+msgid "Unnecessary tags"
+msgstr "Onnodige tags"
+
+msgid "Checks for unnecessary tags"
+msgstr "Controleert op onnodige tags"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Controleert op foutieve tags voor wikipedia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Projectie UTM (''+proj=utm'') vereist parameter ''+zone=...''."
 
@@ -4118,9 +4181,6 @@ msgstr "URL heeft een ongeldig deel: {0}"
 msgid "URL validator"
 msgstr "Validatie URL"
 
-msgid "Addresses"
-msgstr "Adressen"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Controleert op fouten in adressen en relaties met associatedStreet."
 
@@ -4314,9 +4374,6 @@ msgstr "Gedupliceerde wegknopen"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Controleert op wegen met identieke, opeenvolgende knopen."
 
-msgid "Highways"
-msgstr "Wegen"
-
 msgid "Performs semantic checks on highways."
 msgstr "Voert semantische controles uit op wegen."
 
@@ -4891,9 +4948,6 @@ msgstr "soort waterweg {0}"
 msgid "boundary type {0}"
 msgstr "grens type {0}"
 
-msgid "building"
-msgstr "gebouw"
-
 msgid "area"
 msgstr "gebied"
 
@@ -5012,45 +5066,16 @@ msgstr "Niet opnieuw weergeven (deze sessie)"
 msgid "Do not show again (remembers choice)"
 msgstr "Niet opnieuw tonen (keuze onthouden)"
 
-msgid "incomplete"
-msgstr "incompleet"
-
-msgid "House {0}"
-msgstr "Huisnaam {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Huisnummer {0} op {1}"
-
-msgid "House number {0}"
-msgstr "Huisnummer {0}"
-
-msgid "highway"
-msgstr "verkeersweg"
-
-msgid "railway"
-msgstr "spoorweg"
-
-msgid "waterway"
-msgstr "waterweg"
-
-msgid "landuse"
-msgstr "grondgebruik"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} knoop"
-msgstr[1] "{0} knopen"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} lid"
-msgstr[1] "{0} leden"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ongeldige URL \"{0}\" wordt genegeerd"
 
-msgid "public transport"
-msgstr "Openbaar vervoer"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ongeldige URL voor bestand negeren: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Wijzigingenset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Parameter \"downloadgps\" accepteert geen bestandsnamen of URL''s voor "
+"bestanden"
 
 msgid "Precondition violation"
 msgstr "Overtreding van voorwaarde"
@@ -5140,6 +5165,72 @@ msgstr "Verschuiving"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Verwachtte niet-lege waarde voor parameter ''{0}'', kreeg ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Verouderde Java-versie"
+
+msgid "Update Java"
+msgstr "Java bijwerken"
+
+msgid "You are running version {0} of Java."
+msgstr "U voert versie {0} van Java uit."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Deze versie wordt niet langer ondersteund door {0} sinds {1} en wordt niet "
+"aanbevolen voor gebruik."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM zal het werken met deze versie snel beëindigen; wij adviseren u sterk "
+"om bij te werken naar Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"U zou kritieke problemen met Java kunnen tegenkomen; we raden u ten zeerste "
+"aan om bij te werken naar Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Wilt u nu bijwerken?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Platform-opstarthook uitvoeren"
+
+msgid "Building main menu"
+msgstr "Hoofdmenu opbouwen"
+
+msgid "Updating user interface"
+msgstr "Interface bijwerken"
+
+msgid "Initializing internal boundaries data"
+msgstr "Initialiseren van gegevens van interne grenzen"
+
+msgid "Initializing OSM API"
+msgstr "OSM-API initialiseren"
+
+msgid "Initializing internal traffic data"
+msgstr "Initialiseren van interne verkeersgegevens"
+
+msgid "Initializing validator"
+msgstr "Validator initialiseren"
+
+msgid "Initializing presets"
+msgstr "Voorkeuzen initialiseren"
+
+msgid "Initializing map styles"
+msgstr "Kaartstijlen initialiseren"
+
+msgid "Loading imagery preferences"
+msgstr "Afbeeldingsvoorkeuren laden"
+
 msgid "usage"
 msgstr "gebruik"
 
@@ -5646,6 +5737,92 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "De huidige waarde is geen geldige tegelindex voor het opgegeven zoomniveau"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "U bent een probleem tegengekomen in JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Er trad een onverwachte fout op.\n"
+"Dit is altijd een fout in de codering. Als u de laatste versie van JOSM "
+"gebruikt, overweeg dan om een foutenrapport in te dienen."
+
+msgid "Debug information"
+msgstr "Informatie over debuggen"
+
+msgid "Manually report at:"
+msgstr "Handmatig rapport op:"
+
+msgid "Is JOSM up to date?"
+msgstr "Is JOSM up to date?"
+
+msgid "Send bug report"
+msgstr "Foutenrapport verzenden"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Als u de laatste versie van JOSM en de plug-ins uitvoert, dien dan een "
+"foutenrapport in in het systeem voor het volgen van fouten.\n"
+"Daar zou de informatie over de fout al voor u zijn ingevuld. Vermeld ook "
+"informatie over hoe de fout te reproduceren en probeer zoveel mogelijk "
+"details te geven."
+
+msgid "Report Bug"
+msgstr "Fout melden"
+
+msgid "Suppress this error for this session."
+msgstr "Onderdruk deze fout voor deze sessie."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Onderdruk verdere dialoogvensters voor fouten voor deze sessie."
+
+msgid "Ignore this error."
+msgstr "Negeer deze fout."
+
+msgid "Include the system status report."
+msgstr "Neem het systeem statusrapport op."
+
+msgid "Include information about the data you were working on."
+msgstr "Geef informatie over de gegevens waarmee u werkte."
+
+msgid "Include all stack traces."
+msgstr "Neem alle stack traces op."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Uw huidige versie van JOSM is {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM zoekt naar updates..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+"Er trad een fout op bij het controleren of uw instantie van JOSM up to date "
+"is."
+
+msgid "JOSM is up to date."
+msgstr "JOSM is up to date."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM is verouderd. De huidige versie is {0}. Probeer JOSM bij te werken."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Zorg er hier voor, voordat u een foutenrapport indient, dat u bent "
+"bijgewerkt naar de laatste versie van JOSM:"
+
+msgid "Update JOSM"
+msgstr "JOSM bijwerken"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflict op achtergrond: geen conflict"
 
@@ -6431,6 +6608,22 @@ msgstr ""
 "worden de incomplete objecten verwijderd.  Wilt u de gegevens plakken zonder "
 "deze incomplete objecten?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Wilt u deze tags plakken?"
+
+msgid "Clear buffer"
+msgstr "Buffer leegmaken"
+
+msgid "Ignore warnings"
+msgstr "Negeer waarschuwingen"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Sorry, het is niet mogelijk om tags uit de buffer te plakken. Het "
+"bevat geen JOSM-object of geschikte tekst. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Alleen voor de geselecteerde objecten"
 
@@ -7043,9 +7236,6 @@ msgstr "Bron"
 msgid "Title:"
 msgstr "Titel:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Ingebouwde stijl, intern pad:"
 
@@ -7164,9 +7354,6 @@ msgstr ""
 "Ongeldige lijst met ID''s gespecificeerd\n"
 "Kan niet doorgaan."
 
-msgid "Relations"
-msgstr "Relaties"
-
 msgid "Open a list of all relations."
 msgstr "Open een lijst met alle relaties."
 
@@ -8713,26 +8900,6 @@ msgstr "Waarde voor breedtegraad in bereik [-90,90] vereist."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Waarde voor lengtegraad in bereik [-180,180] vereist."
 
-msgid "Data Sources and Types:"
-msgstr "Gegevensbronnen en types:"
-
-msgid "OpenStreetMap data"
-msgstr "gegevens van OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Selecteren om gegevens van OSM voor het geselecteerde gebied te downloaden"
-
-msgid "Raw GPS data"
-msgstr "Ruwe GPS-gegevens"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Selecteren om GPS-sporen voor het geselecteerde gebied te downloaden"
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-"Selecteer dit om de opmerkingen van het geselecteerde gebied op te halen"
-
 msgid "Download as new layer"
 msgstr "Als nieuwe laag downloaden"
 
@@ -8768,19 +8935,6 @@ msgstr ""
 "Gebruik klik met links & slepen om gebied te selecteren, pijlen of rechter "
 "muisknop om door de kaart te scrollen, wiel of +/- om in of uit te zoomen."
 
-msgid "No area selected yet"
-msgstr "Er werd nog geen gebied geselecteerd"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Gebied te groot om te downloaden; zal waarschijnlijk worden afgewezen door "
-"de server"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Gebied geschikt om te downloaden; grootte waarschijnlijk acceptabel voor de "
-"server"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 "Klik om het dialoogvenster te sluiten en om het downloaden af te breken"
@@ -8788,15 +8942,6 @@ msgstr ""
 msgid "Click to download the currently selected area"
 msgstr "Klik om het huidige geselecteerde gebied te downloaden"
 
-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>Noch <strong>{0}</strong> noch <strong>{1}</strong> noch "
-"<strong>{2}</strong> zijn ingeschakeld.<br>Kies ofwel OSM-gegevens, of GPX-"
-"gegevens, of Opmerkingen, of alles om te downloaden.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Download verwijzers (ouderrelaties)"
 
@@ -8820,6 +8965,97 @@ msgstr ""
 msgid "Download referrers (parent relations and ways)"
 msgstr "Download verwijzers (ouderrelaties en -wegen)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Gegevensbronnen en types:"
+
+msgid "OpenStreetMap data"
+msgstr "gegevens van OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Selecteren om gegevens van OSM voor het geselecteerde gebied te downloaden"
+
+msgid "Raw GPS data"
+msgstr "Ruwe GPS-gegevens"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Selecteren om GPS-sporen voor het geselecteerde gebied te downloaden"
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+"Selecteer dit om de opmerkingen van het geselecteerde gebied op te halen"
+
+msgid "Please select a download area first."
+msgstr "Selecteer eerst een gebied waarvan u gegevens wilt downloaden"
+
+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>Noch <strong>{0}</strong> noch <strong>{1}</strong> noch "
+"<strong>{2}</strong> zijn ingeschakeld.<br>Kies ofwel OSM-gegevens, of GPX-"
+"gegevens, of Opmerkingen, of alles om te downloaden.</html>"
+
+msgid "No area selected yet"
+msgstr "Er werd nog geen gebied geselecteerd"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Gebied te groot om te downloaden; zal waarschijnlijk worden afgewezen door "
+"de server"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Gebied geschikt om te downloaden; grootte waarschijnlijk acceptabel voor de "
+"server"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "geschiedenis"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8862,9 +9098,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Fout bij parsen"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9470,6 +9703,18 @@ msgstr "Authenticeren met de opgegeven gebruikersnaam en wachtwoord"
 msgid "Cancel authentication"
 msgstr "Authenticeren annuleren"
 
+msgid "Question"
+msgstr "Vraag"
+
+msgid "Message"
+msgstr "Bericht"
+
+msgid "Enter text"
+msgstr "Voer tekst in"
+
+msgid "Installing plugins"
+msgstr "Installeren van plugins"
+
 msgid "Downloading file"
 msgstr "Downloaden van bestand"
 
@@ -10057,9 +10302,6 @@ msgstr "Selecteer objecten om te uploaden"
 msgid "Cancel uploading"
 msgstr "Uploaden annuleren"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Onverwachte waarde voor sleutel ''{0}'' in voorkeuren, kreeg ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 "Vul een wijzigingenset op en keer terug naar het dialoogvenster Uploaden"
@@ -10146,6 +10388,188 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} object te verwijderen:"
 msgstr[1] "{0} objecten te verwijderen:"
 
+msgid "All Formats"
+msgstr "Alle indelingen"
+
+msgid "Could not export ''{0}''."
+msgstr "Kon ''{0}'' niet exporteren."
+
+msgid "Could not import ''{0}''."
+msgstr "Kon ''{0}'' niet importeren."
+
+msgid "Could not import files."
+msgstr "Kon geen bestanden importeren."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Kon bestand ''{0}'' niet lezen.<br>Fout is:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Kon bestanden niet lezen.<br>Fout is:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON-bestanden"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Laag ''{0}'' niet ondersteund"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Opmerking: GPL is niet compatibel met de licentie van OSM. Geen sporen "
+"uploaden met licentie GPL."
+
+msgid "GPS track description"
+msgstr "beschrijving GPS-spoor"
+
+msgid "Add author information"
+msgstr "Voeg informatie over auteur toe"
+
+msgid "Real name"
+msgstr "Echte naam"
+
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Vooraf gedefinieerd"
+
+msgid "Copyright year"
+msgstr "Jaar van copyright"
+
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgid "Export options"
+msgstr "Opties voor exporteren"
+
+msgid "Export and Save"
+msgstr "Exporteren en opslaan"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Fout tijdens exporteren van {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Kies een vooraf gedefinieerde licentie"
+
+msgid "GPX Files"
+msgstr "GPX-bestanden"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Parsen van gegevens voor laag ''{0}'' mislukt"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Er trad een fout op tijdens het parsen van GPX-gegevens voor laag ''{0}''. "
+"Slechts een gedeelte van het bestand zal beschikbaar zijn."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Er trad een fout op tijdens het parsen van GPX-bestand {0}. Slechts een "
+"gedeelte van het bestand zal beschikbaar zijn."
+
+msgid "Image Files"
+msgstr "Afbeeldingsbestanden"
+
+msgid "folder"
+msgstr "map"
+
+msgid "Looking for image files"
+msgstr "Zoeken naar afbeeldingsbestanden"
+
+msgid "No image files found."
+msgstr "Geen afbeeldingsbestanden gevonden."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183-bestanden"
+
+msgid "Coordinates imported: {0}"
+msgstr "Geïmporteerde coördinaten: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Misvormde zinnen: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Fouten in controlesom: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Onbekende zinnen: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nul-coördinaten: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA importeren gelukt:"
+
+msgid "NMEA import failure!"
+msgstr "Importeren van NMEA mislukt!"
+
+msgid "Note Files"
+msgstr "Bestanden voor Opmerkingen"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM Server-bestanden bzip2 gecomprimeerd"
+
+msgid "OsmChange File"
+msgstr "OsmChange-bestand"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Bestand \"{0}\" bestaat niet."
+
+msgid "No data found in file {0}."
+msgstr "Geen gegevens gevonden in bestand {0}."
+
+msgid "Open OsmChange file"
+msgstr "Open een OsmChange-bestand"
+
+msgid "OSM Server Files"
+msgstr "OSM Server bestanden"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Er trad een fout op bij het opslaan.<br>Fout is:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Er trad een fout op bij het terugzetten van het back-"
+"upbestand.<br>Fout is:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM Server-bestanden gzip gecomprimeerd"
+
+msgid "Invalid dataset"
+msgstr "Ongeldige gegevensset"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Geen gegevens gevonden voor laag ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Geen gegevens gevonden in bestand \"{0}\"."
+
+msgid "Open OSM file"
+msgstr "Open OSM-bestand"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS-bestanden (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Niet-ondersteunde versie WMS-bestand; gevonden {0}, verwachtte {1}"
+
 msgid "Native projections"
 msgstr "Eigen projecties"
 
@@ -10256,6 +10680,39 @@ msgstr "Toon dit bericht niet meer"
 msgid "Hide this message and never show it again"
 msgstr "Verberg dit bericht en laat het nooit meer zien"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Map {0} kan niet aangemaakt worden, automatisch opslaan zal worden "
+"uitgeschakeld"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Het bestand {0} kan niet aangemaakt worden, er zal een andere bestandsnaam "
+"worden gebruikt"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Fout voor Invoer/Uitvoer bij het aanmaken van bestand, automatisch opslaan "
+"wordt overgeslagen: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Het voormalige back-upbestand {0} kan niet worden verwijderd"
+
+msgid "Your work has been saved automatically."
+msgstr "Uw werk is automatisch opgeslagen."
+
+msgid "Restoring files"
+msgstr "Bezig met herstellen van bestanden"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Onmogelijk back-upbestand {0} te verwijderen"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Onmogelijk PIDbestand {0} te verwijderen"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Onmogelijk gearchiveerd back-upbestand {0} te verwijderen"
+
 msgid "Customize Color"
 msgstr "Kleur aanpassen"
 
@@ -10359,6 +10816,9 @@ msgstr "Totaal aantal opmerkingen"
 msgid "Changes need uploading?"
 msgstr "Moeten de wijzigingen worden geüpload?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "buiten gedownload gebied"
 
@@ -10434,6 +10894,9 @@ msgstr "Fouten bij valideren"
 msgid "No validation errors"
 msgstr "Geen fouten bij valideren"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Stel WMS-bladwijzer in"
 
@@ -11061,9 +11524,6 @@ msgstr "(URL was: "
 msgid "Select the map painting styles"
 msgstr "Selecteer de maptekenstijlen"
 
-msgid "loading style ''{0}''..."
-msgstr "stijl laden ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11077,6 +11537,9 @@ msgstr[1] ""
 "Er traden {0} fouten op bij het laden van deze stijl. Selecteer ''Info'' uit "
 "het rechtsklik-menu voor details."
 
+msgid "loading style ''{0}''..."
+msgstr "stijl laden ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Laden van Kaarttekenstijlen vanaf ''{0}'' mislukt. Exceptie was: {1}"
 
@@ -11637,27 +12100,6 @@ msgstr "Download plug-ins"
 msgid "Icon paths:"
 msgstr "Paden voor pictogrammen:"
 
-msgid "Short Description:"
-msgstr "Korte beschrijving:"
-
-msgid "Author:"
-msgstr "Auteur:"
-
-msgid "Webpage:"
-msgstr "Webpagina:"
-
-msgid "Description:"
-msgstr "Beschrijving:"
-
-msgid "Version:"
-msgstr "Versie:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimale JOSM-versie:"
-
-msgid "by {0}"
-msgstr "door {0}"
-
 msgid "Name (optional):"
 msgstr "Naam (optioneel):"
 
@@ -12852,21 +13294,6 @@ msgstr ""
 "Waarschuwing: ongeldige indeling van item in de lijst met stijlen ''{0}''. "
 "Kreeg ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM standaard (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Interne stijl die moet worden gebruikt als basis voor runtime schakelbare "
-"overtrek-stijlen"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "de belangrijkste stijl van Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Kaartinstellingen"
 
@@ -12970,12 +13397,6 @@ msgstr ""
 "Waarschuwing: ongeldige indeling van item in lijst met voorkeuzes ''{0}''. "
 "Kreeg ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Interne voorkeuze"
-
-msgid "The default preset for JOSM"
-msgstr "De standaard voorkeuze voor JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Plugin {0} is nog steeds vereist bij deze plugin:"
@@ -13482,9 +13903,6 @@ msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 "Ophalen van inloggegevens voor OSM vanaf beheerder van inloggegevens mislukt."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Huidig beheer voor beveiligde gegevens is van het type ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Opslaan van inloggegevens voor OSM naar beheerder van inloggegevens mislukt."
@@ -13505,15 +13923,6 @@ msgstr ""
 "Specificeert het aantal dagen dat een opmerking moet zijn gesloten om niet "
 "langer te worden gedownload"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Ophalen van toegangstoken voor OAuth vanaf beheerder van inloggegevens "
-"mislukt"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Opslaan van toegangstoken voor OAuth naar beheerder van inloggegevens mislukt"
-
 msgid "Save to preferences"
 msgstr "Opslaan naar voorkeuren"
 
@@ -13717,69 +14126,6 @@ msgstr ""
 "Waarschuwing: ongeldige indeling voor item in lijst met regels ''{0}''. "
 "Kreeg ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Controleren op fouten in adressen"
-
-msgid "Tag combinations"
-msgstr "Tagcombinaties"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Controleert op ontbrekende tag of verdachte combinaties"
-
-msgid "Deprecated features"
-msgstr "Vervallen mogelijkheden"
-
-msgid "Checks for deprecated features"
-msgstr "Controleert op vervallen mogelijkheden"
-
-msgid "Geometry"
-msgstr "Geometrie"
-
-msgid "Checks for geometry errors"
-msgstr "Controleert op fouten in de geometrie"
-
-msgid "Checks for errors on highways"
-msgstr "Controleert op fouten in wegen"
-
-msgid "Multiple values"
-msgstr "Meervoudige waarden"
-
-msgid "Checks for wrong multiple values"
-msgstr "Controleert op foutieve meervoudige waarden"
-
-msgid "Numeric values"
-msgstr "Numerieke waarden"
-
-msgid "Checks for wrong numeric values"
-msgstr "Controleert op foutieve numerieke waarden"
-
-msgid "Religion"
-msgstr "Religie"
-
-msgid "Checks for errors on religious objects"
-msgstr "Controleert op fouten voor religieuze objecten"
-
-msgid "Checks for errors on relations"
-msgstr "Controleert op fouten in relaties"
-
-msgid "Territories"
-msgstr "Gebieden"
-
-msgid "Checks for territories-specific features"
-msgstr "Controles voor gebiedsspecifieke objecten"
-
-msgid "Unnecessary tags"
-msgstr "Onnodige tags"
-
-msgid "Checks for unnecessary tags"
-msgstr "Controleert op onnodige tags"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Controleert op foutieve tags voor wikipedia"
-
 msgid "Tag checker rules"
 msgstr "Regels voor tagcontrole"
 
@@ -14043,6 +14389,38 @@ msgstr "Alle bestanden (*.*)"
 msgid "Received error page:"
 msgstr "Ontvangen pagina met fouten:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Voorkeur met toets ''{0}'' bevat niet ''{1}''. Kan geen geometrie voor het "
+"venster herstellen vanuit de voorkeuren."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Voorkeur met toets ''{0}'' bevat geen integer (geheel getal) waarde voor "
+"''{1}''. Kreeg {2}. Kan geen geometrie voor het venster herstellen vanuit de "
+"voorkeuren."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Veld ''{1}'' parsen mislukt in voorkeur met toets ''{0}''. Exceptie was: "
+"{2}. Kan geen geometrie voor het venster herstellen vanuit de voorkeuren."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Voorkeur met toets ''{0}'' bestaat niet. Kan geen geometrie voor het venster "
+"herstellen vanuit de voorkeuren."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Negeren van niet goed gevormde geometrie: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. breedtegraad"
 
@@ -14180,9 +14558,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Verwijderd lid {0} wordt gebruikt door relatie {1}"
 
-msgid "All Formats"
-msgstr "Alle indelingen"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Downloaden van punten {0} tot en met {1}..."
 
@@ -14310,94 +14685,6 @@ msgstr "Antwoord van server parsen..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Onverwacht XML-element met de naam ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Kon ''{0}'' niet exporteren."
-
-msgid "Could not import ''{0}''."
-msgstr "Kon ''{0}'' niet importeren."
-
-msgid "Could not import files."
-msgstr "Kon geen bestanden importeren."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Kon bestand ''{0}'' niet lezen.<br>Fout is:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Kon bestanden niet lezen.<br>Fout is:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON-bestanden"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Laag ''{0}'' niet ondersteund"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Opmerking: GPL is niet compatibel met de licentie van OSM. Geen sporen "
-"uploaden met licentie GPL."
-
-msgid "GPS track description"
-msgstr "beschrijving GPS-spoor"
-
-msgid "Add author information"
-msgstr "Voeg informatie over auteur toe"
-
-msgid "Real name"
-msgstr "Echte naam"
-
-msgid "E-Mail"
-msgstr "E-mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Vooraf gedefinieerd"
-
-msgid "Copyright year"
-msgstr "Jaar van copyright"
-
-msgid "Keywords"
-msgstr "Trefwoorden"
-
-msgid "Export options"
-msgstr "Opties voor exporteren"
-
-msgid "Export and Save"
-msgstr "Exporteren en opslaan"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Fout tijdens exporteren van {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Kies een vooraf gedefinieerde licentie"
-
-msgid "GPX Files"
-msgstr "GPX-bestanden"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Parsen van gegevens voor laag ''{0}'' mislukt"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Er trad een fout op tijdens het parsen van GPX-gegevens voor laag ''{0}''. "
-"Slechts een gedeelte van het bestand zal beschikbaar zijn."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Er trad een fout op tijdens het parsen van GPX-bestand {0}. Slechts een "
-"gedeelte van het bestand zal beschikbaar zijn."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Fout bij parsen: documentstructuur voor GPX-document is ongeldig"
 
@@ -14407,18 +14694,6 @@ msgstr "(op regel {0}, kolom {1})"
 msgid "Unknown mode {0}."
 msgstr "Onbekende modus {0}."
 
-msgid "Image Files"
-msgstr "Afbeeldingsbestanden"
-
-msgid "folder"
-msgstr "map"
-
-msgid "Looking for image files"
-msgstr "Zoeken naar afbeeldingsbestanden"
-
-msgid "No image files found."
-msgstr "Geen afbeeldingsbestanden gevonden."
-
 msgid "get number of unread messages"
 msgstr "haal aantal niet-gelezen berichten op"
 
@@ -14472,36 +14747,9 @@ msgstr "Relatie met ID {0} ophalen vanaf ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server antwoordde met retourcode 404 voor ID {0}. Overslaan."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183-bestanden"
-
-msgid "Coordinates imported: {0}"
-msgstr "Geïmporteerde coördinaten: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Misvormde zinnen: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Fouten in controlesom: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Onbekende zinnen: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nul-coördinaten: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA importeren gelukt:"
-
-msgid "NMEA import failure!"
-msgstr "Importeren van NMEA mislukt!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer-exceptie, mogelijk ontbreken er enkele tags."
 
-msgid "Note Files"
-msgstr "Bestanden voor Opmerkingen"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14597,9 +14845,6 @@ msgstr "(Code={0})"
 msgid "The server replied an error with code {0}."
 msgstr "De server antwoordde met een fout met code {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM Server-bestanden bzip2 gecomprimeerd"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Proloog van document van OsmChange al geschreven. Slechts één maal schrijven."
@@ -14608,18 +14853,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Proloog van document van OsmChange nog niet geschreven. Dat eerst schrijven."
 
-msgid "OsmChange File"
-msgstr "OsmChange-bestand"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Bestand \"{0}\" bestaat niet."
-
-msgid "No data found in file {0}."
-msgstr "Geen gegevens gevonden in bestand {0}."
-
-msgid "Open OsmChange file"
-msgstr "Open een OsmChange-bestand"
-
 msgid "Unsupported version: {0}"
 msgstr "Niet ondersteunde versie: {0}"
 
@@ -14674,37 +14907,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Onverwachte waarde voor voorkeur ''{0}''. Kreeg ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "OSM Server bestanden"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Er trad een fout op bij het opslaan.<br>Fout is:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Er trad een fout op bij het terugzetten van het back-"
-"upbestand.<br>Fout is:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM Server-bestanden gzip gecomprimeerd"
-
 msgid "Parsing OSM history data ..."
 msgstr "Ontleden van gegevens over historie van OSM ..."
 
-msgid "Invalid dataset"
-msgstr "Ongeldige gegevensset"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Geen gegevens gevonden voor laag ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Geen gegevens gevonden in bestand \"{0}\"."
-
-msgid "Open OSM file"
-msgstr "Open OSM-bestand"
-
 msgid "Reading was canceled"
 msgstr "Lezen werd geannuleerd"
 
@@ -14850,6 +15055,9 @@ msgstr "Met server verbinden..."
 msgid "Downloading OSM notes..."
 msgstr "Opmerkingen van OSM worden gedownload..."
 
+msgid "Downloading data..."
+msgstr "Gegevens downloaden..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14910,14 +15118,8 @@ msgstr "Onverwachte ID voor primitief van OSM gevonden"
 msgid "Failed to evaluate {0}"
 msgstr "Evalueren van {0} mislukt"
 
-msgid "Downloading data..."
-msgstr "Gegevens downloaden..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS-bestanden (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Niet-ondersteunde versie WMS-bestand; gevonden {0}, verwachtte {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Onverwachte waarde voor sleutel ''{0}'' in voorkeuren, kreeg ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bytes zijn gelezen"
@@ -16078,39 +16280,6 @@ msgstr "Openings-URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL bevat geen {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Verouderde Java-versie"
-
-msgid "Update Java"
-msgstr "Java bijwerken"
-
-msgid "You are running version {0} of Java."
-msgstr "U voert versie {0} van Java uit."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Deze versie wordt niet langer ondersteund door {0} sinds {1} en wordt niet "
-"aanbevolen voor gebruik."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM zal het werken met deze versie snel beëindigen; wij adviseren u sterk "
-"om bij te werken naar Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"U zou kritieke problemen met Java kunnen tegenkomen; we raden u ten zeerste "
-"aan om bij te werken naar Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Wilt u nu bijwerken?"
-
 msgid "reserved"
 msgstr "gereserveerd"
 
@@ -16185,22 +16354,6 @@ msgstr "Verdachte tekens in sleutel:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Waarde is te lang (max {0} tekens):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Wilt u deze tags plakken?"
-
-msgid "Clear buffer"
-msgstr "Buffer leegmaken"
-
-msgid "Ignore warnings"
-msgstr "Negeer waarschuwingen"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Sorry, het is niet mogelijk om tags uit de buffer te plakken. Het "
-"bevat geen JOSM-object of geschikte tekst. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Onmogelijk bestand {0} te verwijderen"
 
@@ -16224,133 +16377,15 @@ msgid_plural "days"
 msgstr[0] "dag"
 msgstr[1] "dagen"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Voorkeur met toets ''{0}'' bevat niet ''{1}''. Kan geen geometrie voor het "
-"venster herstellen vanuit de voorkeuren."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Voorkeur met toets ''{0}'' bevat geen integer (geheel getal) waarde voor "
-"''{1}''. Kreeg {2}. Kan geen geometrie voor het venster herstellen vanuit de "
-"voorkeuren."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Veld ''{1}'' parsen mislukt in voorkeur met toets ''{0}''. Exceptie was: "
-"{2}. Kan geen geometrie voor het venster herstellen vanuit de voorkeuren."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Voorkeur met toets ''{0}'' bestaat niet. Kan geen geometrie voor het venster "
-"herstellen vanuit de voorkeuren."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Negeren van niet goed gevormde geometrie: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Laden van XML-schema mislukt."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "U bent een probleem tegengekomen in JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Er trad een onverwachte fout op.\n"
-"Dit is altijd een fout in de codering. Als u de laatste versie van JOSM "
-"gebruikt, overweeg dan om een foutenrapport in te dienen."
-
-msgid "Debug information"
-msgstr "Informatie over debuggen"
-
-msgid "Manually report at:"
-msgstr "Handmatig rapport op:"
-
-msgid "Is JOSM up to date?"
-msgstr "Is JOSM up to date?"
-
-msgid "Send bug report"
-msgstr "Foutenrapport verzenden"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Als u de laatste versie van JOSM en de plug-ins uitvoert, dien dan een "
-"foutenrapport in in het systeem voor het volgen van fouten.\n"
-"Daar zou de informatie over de fout al voor u zijn ingevuld. Vermeld ook "
-"informatie over hoe de fout te reproduceren en probeer zoveel mogelijk "
-"details te geven."
-
-msgid "Report Bug"
-msgstr "Fout melden"
-
-msgid "Suppress this error for this session."
-msgstr "Onderdruk deze fout voor deze sessie."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Onderdruk verdere dialoogvensters voor fouten voor deze sessie."
-
-msgid "Ignore this error."
-msgstr "Negeer deze fout."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Openen van het bugrapport is mislukt. Rapporteer dit handmatig met behulp "
 "van deze website:"
 
-msgid "Include the system status report."
-msgstr "Neem het systeem statusrapport op."
-
-msgid "Include information about the data you were working on."
-msgstr "Geef informatie over de gegevens waarmee u werkte."
-
-msgid "Include all stack traces."
-msgstr "Neem alle stack traces op."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Uw huidige versie van JOSM is {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM zoekt naar updates..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-"Er trad een fout op bij het controleren of uw instantie van JOSM up to date "
-"is."
-
-msgid "JOSM is up to date."
-msgstr "JOSM is up to date."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM is verouderd. De huidige versie is {0}. Probeer JOSM bij te werken."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Zorg er hier voor, voordat u een foutenrapport indient, dat u bent "
-"bijgewerkt naar de laatste versie van JOSM:"
-
-msgid "Update JOSM"
-msgstr "JOSM bijwerken"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20109,9 +20144,6 @@ msgstr "Inhoud bord"
 msgid "notice"
 msgstr "aankondigingen"
 
-msgid "history"
-msgstr "geschiedenis"
-
 msgid "nature"
 msgstr "natuur"
 
@@ -20693,6 +20725,9 @@ msgstr "Sociale faciliteit"
 msgid "Nursing Home"
 msgstr "Verpleeghuis"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Groepshuis"
 
@@ -23135,6 +23170,9 @@ msgstr "Kadoshop/Souveniers"
 msgid "Variety Store"
 msgstr "Euroshop"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Wedkantoor"
 
@@ -24006,6 +24044,78 @@ msgstr "Kantoren"
 msgid "Industrial"
 msgstr "Industrieterrein"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garages"
 
@@ -24706,6 +24816,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25489,6 +25602,9 @@ msgstr "Kadaster"
 msgid "French land registry"
 msgstr "Frans kadaster"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25602,15 +25718,6 @@ msgstr "Oude kaart van Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale grondkaart 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topografische kaart 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropool Ruhr: Luchtfoto (10 cm)"
 
@@ -34450,15 +34557,21 @@ msgstr "naar vorige waarde (ongewijzigde mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Plug-in Photo Geotagging"
 
-msgid "Writing position information to image files..."
-msgstr "Informatie over positie schrijven naar afbeeldingsbestanden..."
-
 msgid "Could not read mtime."
 msgstr "Kon geen mtime lezen."
 
 msgid "Could not write mtime."
 msgstr "Kon geen mtime schrijven."
 
+msgid "Writing position information to image files..."
+msgstr "Informatie over positie schrijven naar afbeeldingsbestanden..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Bestand kon niet worden verwijderd!"
 
@@ -34974,6 +35087,9 @@ msgstr "Fout oplossen"
 msgid "PT: dummy test warning"
 msgstr "PT: dummy testwaarschuwing"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "PT: Route bevat een gat dat kan worden opgelost door te sorteren"
 
@@ -34984,6 +35100,9 @@ msgstr ""
 "PT: Gaten in route kunnen verminderen bij sorteren van leden. Nadere "
 "specificaties zijn vereist"
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/nn.po b/i18n/po/nn.po
index a6ed565..9ceee46 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:55+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:54+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: nn\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Hjelp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Åtvaring"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Om"
 
@@ -180,6 +135,9 @@ msgstr "Avbryt"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Åtvaring"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Hjelp"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr "E-post"
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr "Førehandsvald"
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr "Stikkord"
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr "E-post"
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr "Førehandsvald"
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr "Stikkord"
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/oc.po b/i18n/po/oc.po
index a23e9f9..3f04452 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:55+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:55+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,55 +55,9 @@ msgstr "Tèrmes d''utilizacion en rèire plan"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Ajuda"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "IURL mal formada ignorada : \"{0}\""
-
-msgid "Warning"
-msgstr "Avertiment"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "URL de fichièr mal formada ignorat : \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Lo paramètre \"downloadgps\" accèpta pas de noms de fichièr o d'URLs."
-
 msgid "About"
 msgstr "A prepaus"
 
@@ -181,6 +135,9 @@ msgstr "Anullar"
 msgid "Click to abort launching external browsers"
 msgstr "Clicatz per anullar l'aviada dels navigadors extèrnes"
 
+msgid "Warning"
+msgstr "Avertiment"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Seleccionatz al mens un nos, camin o relacion ja cargat."
 
@@ -463,13 +420,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Telecargar dempuèi OSM…"
-
-msgid "Download map data from the OSM server."
-msgstr ""
+msgid "Download data"
+msgstr "Telecargar las donadas."
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -477,9 +431,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "Telecargar las donadas."
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -546,6 +497,9 @@ msgstr "Pas res d'exportar. Obtenetz d’en primièr qualques donadas."
 msgid "Export GPX file"
 msgstr "Exportar en fichièr GPX"
 
+msgid "Help"
+msgstr "Ajuda"
+
 msgid "History"
 msgstr "Istoric"
 
@@ -1045,23 +999,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Empegar"
 
@@ -2316,36 +2253,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr "<o>"
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr "<egal>"
-
-msgid "<key>"
-msgstr "<clau>"
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr "<fin de fichièr>"
-
 msgid "Search..."
 msgstr "Recercar..."
 
@@ -2632,86 +2539,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "SC"
-
-msgctxt "search"
-msgid "CI"
-msgstr "IC"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2729,9 +2556,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3078,57 +2902,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3218,6 +2997,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3346,6 +3131,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3360,6 +3154,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3396,7 +3193,60 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "incomplet"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr "rota"
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membre"
+msgstr[1] "{0} membres"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relacion"
+msgstr[1] "relacions"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
 msgid "Error in filter"
@@ -3430,21 +3280,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "camin"
 msgstr[1] "camins"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relacion"
-msgstr[1] "relacions"
-
 msgid "closedway"
 msgstr ""
 
@@ -3478,6 +3318,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr "<o>"
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr "<egal>"
+
+msgid "<key>"
+msgstr "<clau>"
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr "<fin de fichièr>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr "SC"
+
+msgctxt "search"
+msgid "CI"
+msgstr "IC"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3555,6 +3505,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relacions"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3739,9 +3804,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3926,9 +3988,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4467,9 +4526,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4584,45 +4640,15 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "incomplet"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "rota"
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membre"
-msgstr[1] "{0} membres"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "IURL mal formada ignorada : \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "URL de fichièr mal formada ignorat : \"{0}\""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"Lo paramètre \"downloadgps\" accèpta pas de noms de fichièr o d'URLs."
 
 msgid "Precondition violation"
 msgstr ""
@@ -4712,6 +4738,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr "usatge"
 
@@ -5173,6 +5259,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5867,6 +6026,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6423,9 +6596,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6536,9 +6706,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relacions"
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7931,49 +8098,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
 msgstr ""
 
+msgid "Download object"
+msgstr "Telecargar l'objècte"
+
+msgid "Start downloading"
+msgstr "Aviar lo telecargament"
+
 msgid ""
-"<html>Autostart ''Download from OSM'' dialog every time JOSM is "
-"started.<br>You can open it manually from File menu or toolbar.</html>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7985,36 +8190,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
-msgstr "Telecargar l'objècte"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "Aviar lo telecargament"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8059,9 +8275,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8599,6 +8812,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9076,9 +9301,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9157,6 +9379,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9264,6 +9658,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9367,6 +9788,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9440,6 +9864,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10011,9 +10438,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10023,6 +10447,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10436,55 +10863,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11570,19 +11976,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11662,12 +12055,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12133,9 +12520,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12153,12 +12537,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12339,69 +12717,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12645,6 +12960,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12757,9 +13095,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12862,86 +13197,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12951,18 +13206,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13014,36 +13257,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13131,27 +13347,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13197,35 +13398,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13357,6 +13532,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13414,13 +13592,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14356,33 +14528,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14441,20 +14586,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14478,109 +14609,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18293,9 +18328,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18875,6 +18907,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21315,6 +21350,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22175,6 +22213,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22870,6 +22980,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23622,6 +23735,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23732,15 +23848,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31592,13 +31699,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32096,6 +32209,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32104,6 +32220,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/pa.po b/i18n/po/pa.po
index 744389b..0b5f27a 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:56+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:55+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: pa\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "ਮੱਦਦ"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "ਇਸ ਬਾਰੇ"
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "ਮੱਦਦ"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/pl.po b/i18n/po/pl.po
index acc5450..994cd4f 100644
--- a/i18n/po/pl.po
+++ b/i18n/po/pl.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-12 08:12+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-27 12:27+0000\n"
 "Last-Translator: Piotr Sokół <Unknown>\n"
 "Language-Team: polski <>\n"
 "MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
 "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-08-13 04:57+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:56+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: pl\n"
 
@@ -70,54 +70,9 @@ msgstr "Warunki korzystania z podkładu"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Otwarcie łącza nie jest obsługiwane na tej platformie („{0}”)"
 
-msgid "Executing platform startup hook"
-msgstr "Wykonanie procedur początkowych platformy"
-
-msgid "Building main menu"
-msgstr "Budowanie menu głównego"
-
-msgid "Help"
-msgstr "Pomoc"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicjowanie danych wewnętrznych granic"
-
-msgid "Initializing OSM API"
-msgstr "Inicjowanie API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicjowanie wewnętrznych danych o kierunku ruchu"
-
-msgid "Initializing validator"
-msgstr "Inicjowanie weryfikatora"
-
-msgid "Initializing presets"
-msgstr "Inicjowanie szablonów"
-
-msgid "Initializing map styles"
-msgstr "Inicjowanie stylów map"
-
-msgid "Loading imagery preferences"
-msgstr "Wczytywanie ustawień podkładów"
-
-msgid "Updating user interface"
-msgstr "Uaktualnianie interfejsu użytkownika"
-
 msgid "Failed to save default preferences."
 msgstr "Nie udało się zapisać domyślnych ustawień."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Pominięto nieprawidłowy adres URL: „{0}”"
-
-msgid "Warning"
-msgstr "Ostrzeżenie"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Pominięto nieprawidłowy adres URL pliku: „{0}”"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametr „downloadgps” nie przyjmuje nazw plików lub adresów URL"
-
 msgid "About"
 msgstr "O programie"
 
@@ -203,6 +158,9 @@ msgstr "Anuluj"
 msgid "Click to abort launching external browsers"
 msgstr "Proszę kliknąć, aby anulować uruchomienie zewnętrznych przeglądarek"
 
+msgid "Warning"
+msgstr "Ostrzeżenie"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Proszę wybrać co najmniej jeden węzeł, linię lub relację"
 
@@ -494,14 +452,11 @@ msgstr ""
 "dwa węzły,\n"
 "* trzy węzły."
 
-msgid "Download from OSM..."
-msgstr "Pobierz z OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Pobiera dane mapy z serwera OSM"
+msgid "Download data"
+msgstr "Pobieranie danych"
 
-msgid "Please select a download area first."
-msgstr "Proszę najpierw zaznaczyć obszar."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -510,9 +465,6 @@ msgstr ""
 "<html>To działanie będzie wymagało {0} osobnych żądań "
 "pobierania.<br>Kontynuować?</html>"
 
-msgid "Download data"
-msgstr "Pobieranie danych"
-
 msgid "Download notes in current view"
 msgstr "Pobierz uwagi w aktualnym widoku"
 
@@ -579,6 +531,9 @@ msgstr "Nie ma nic do wyeksportowania. Proszę najpierw pobrać jakieś dane."
 msgid "Export GPX file"
 msgstr "Eksportowanie do pliku GPX"
 
+msgid "Help"
+msgstr "Pomoc"
+
 msgid "History"
 msgstr "Historia"
 
@@ -1144,23 +1099,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Proszę wybrać linie, których kąty w przybliżeniu mają 90 lub 180 stopni."
 
-msgid "Download from Overpass API ..."
-msgstr "Pobierz z Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Pobierz dane mapy z serwera Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Wklej"
 
@@ -2549,36 +2487,6 @@ msgstr "Wybierz relacje (dodaj)"
 msgid "Select relation"
 msgstr "Zaznacz relację"
 
-msgid "<not>"
-msgstr "<nie>"
-
-msgid "<or>"
-msgstr "<lub>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<lewy rodzic>"
-
-msgid "<right parent>"
-msgstr "<prawy rodzic>"
-
-msgid "<colon>"
-msgstr "<dwukropek>"
-
-msgid "<equals>"
-msgstr "<równa się>"
-
-msgid "<key>"
-msgstr "<klawisz>"
-
-msgid "<question mark>"
-msgstr "<znak zapytania>"
-
-msgid "<end-of-file>"
-msgstr "<koniec pliku>"
-
 msgid "Search..."
 msgstr "Szukaj..."
 
@@ -2595,56 +2503,56 @@ msgid "Search string:"
 msgstr "Wyszukanie:"
 
 msgid "Enter the search expression"
-msgstr "Wpisz wyrażenie do wyszukania"
+msgstr "Proszę wprowadzić wyrażenie do wyszukania"
 
 msgid "replace selection"
-msgstr "zamień zaznaczenie"
+msgstr "Zamienienie zaznaczenia"
 
 msgid "add to selection"
-msgstr "dodaj do zaznaczenia"
+msgstr "Dodanie do zaznaczenia"
 
 msgid "remove from selection"
-msgstr "usuń z zaznaczenia"
+msgstr "Usunięcie z zaznaczenia"
 
 msgid "find in selection"
-msgstr "znajdź w zaznaczeniu"
+msgstr "Wyszukanie w zaznaczeniu"
 
 msgid "case sensitive"
-msgstr "uwzględnij wielkość liter"
+msgstr "Uwzględnianie wielkości liter"
 
 msgid "all objects"
-msgstr "wszystkie obiekty"
+msgstr "Wszystkie obiekty"
 
 msgid "Also include incomplete and deleted objects in search."
 msgstr ""
 "Uwzględnij także niekompletne i skasowane obiekty w wynikach wyszukiwania."
 
 msgid "add toolbar button"
-msgstr "dodaj przycisk na pasku narzędzi"
+msgstr "Dodanie przycisku na pasku narzędzi"
 
 msgid "standard"
-msgstr "standardowe"
+msgstr "Zwykła"
 
 msgid "regular expression"
-msgstr "wyrażenie regularne"
+msgstr "Wyrażenie regularne"
 
 msgid "MapCSS selector"
 msgstr "Selektor MapCSS"
 
 msgid "Selection settings"
-msgstr "Ustawienia zaznaczania"
+msgstr "Zaznaczanie"
 
 msgid "Additional settings"
-msgstr "Ustawienia dodatkowe"
+msgstr "Dodatkowe ustawienia"
 
 msgid "Search syntax"
 msgstr "Składnia wyszukiwania"
 
 msgid "Invalid search expression"
-msgstr "Niepoprawne wyrażenie regularne."
+msgstr "Nieprawidłowe wyrażenie regularne."
 
 msgid "Search by preset"
-msgstr "Szukaj według szablonu"
+msgstr "Wyszukiwanie wg szablonu"
 
 msgid "Filter"
 msgstr "Filtr"
@@ -2663,7 +2571,8 @@ msgid ""
 "\n"
 " {0}"
 msgstr ""
-"Zadane wyrażenie regularne jest niepoprawne:\n"
+"Wyszukiwane wyrażenie jest nieprawidłowe:\n"
+"\n"
 " {0}"
 
 msgid "Search hints"
@@ -2676,28 +2585,28 @@ msgid "Baker Street"
 msgstr "Osiedle Sikorskiego"
 
 msgid "''Baker'' and ''Street'' in any key"
-msgstr "\"Osiedle” i „Sikorskiego” w dowolnym kluczu"
+msgstr "„Osiedle” i „Sikorskiego” w dowolnym kluczu"
 
 msgid "\"Baker Street\""
-msgstr "\"Osiedle Sikorskiego\""
+msgstr "„Osiedle Sikorskiego\""
 
 msgid "''Baker Street'' in any key"
-msgstr "\"Osiedle Sikorskiego” w dowolnym kluczu"
+msgstr "„Osiedle Sikorskiego” w dowolnym kluczu"
 
 msgid "''valuefragment'' anywhere in ''key''"
-msgstr "\"fragmentwartości” gdziekolwiek w „kluczu\""
+msgstr "„fragmentwartości” gdziekolwiek w „kluczu\""
 
 msgid "''valuefragment'' nowhere in ''key''"
-msgstr "\"fragmentwartości” nigdzie w kluczu"
+msgstr "„fragmentwartości” nigdzie w kluczu"
 
 msgid "''key'' with exactly ''value''"
-msgstr "\"klucz” z dokładną „wartością\""
+msgstr "„klucz” z dokładną „wartością\""
 
 msgid "''key'' with any value"
-msgstr "\"klucz” z dowolną wartością"
+msgstr "„klucz” z dowolną wartością"
 
 msgid "''value'' in any key"
-msgstr "\"wartość” w dowolnym kluczu"
+msgstr "„wartość” w dowolnym kluczu"
 
 msgid "matches if ''key'' exists"
 msgstr "pasuje jeśli „klucz” istnieje"
@@ -2857,16 +2766,16 @@ msgstr ""
 "obiekty (i wszystkie jego węzły linii / członków relacji) w pobranym obszarze"
 
 msgid "No match found for ''{0}''"
-msgstr "Nie znaleziono nic szukając „{0}”"
+msgstr "Nie odnaleziono wyrażenia „{0}”"
 
 msgid "Nothing added to selection by searching for ''{0}''"
-msgstr "Nic nie zostało dodane do zaznaczenia szukając „{0}”"
+msgstr "Nic nie dodano do zaznaczenia szukając „{0}”"
 
 msgid "Nothing removed from selection by searching for ''{0}''"
-msgstr "Nic nie zostało usunięte z zaznaczenia szukając „{0}”"
+msgstr "Nic nie usunięto z zaznaczenia szukając „{0}”"
 
 msgid "Nothing found in selection by searching for ''{0}''"
-msgstr "Nic nie zostało znalezione w zaznaczeniu szukając „{0}”"
+msgstr "Nic nie odnaleziono w zaznaczeniu szukając „{0}”"
 
 msgid "Found {0} matches"
 msgstr "Znaleziono {0} pasujących."
@@ -2880,96 +2789,6 @@ msgstr[0] "Wyszukiwanie w {0} obiekcie"
 msgstr[1] "Wyszukiwanie w {0} obiektach"
 msgstr[2] "Wyszukiwanie w {0} obiektach"
 
-msgctxt "search"
-msgid "CS"
-msgstr "wielkość liter istotna"
-
-msgctxt "search"
-msgid "CI"
-msgstr "wielkość liter nieistotna"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Wyrażenie regularne „{0}” zawiera błąd składni w pozycji {1}, pełny opis "
-"błędu:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Wyrażenie „{0}” zawiera błąd skłani. Pełny opis błędu:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Nie można przetworzyć datownika „{0}”"
-
-msgid "Expecting {0} after {1}"
-msgstr "Spodziewane {0} po  {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Oczekiwany zakres identyfikatorów elementów"
-
-msgid "Range of changeset ids expected"
-msgstr "Oczekiwany zakres identyfikatorów zestawów zmian"
-
-msgid "Range of versions expected"
-msgstr "Oczekiwany zakres wersji"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Klucz nie może być pusty jeśli użyty jest operator tag. Przykład użycia: "
-"klucz=wartość"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Nieznany typ elementu: {0}. Dozwolone wartości to węzeł, linia lub relacja"
-
-msgid "Positive integer expected"
-msgstr "Oczekiwano dodatniej liczby całkowitej"
-
-msgid "Range of numbers expected"
-msgstr "Spodziewane: zakres liczbowy"
-
-msgid "Unknown preset name: "
-msgstr "Nieznana nazwa szablonu: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Niespodziewany token. Spodziewano się {0}, znaleziono {1}."
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Nie udało się przetworzyć selektora MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Niespodziewany token: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Brak parametru dla OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Brakujący parametr dla XOR"
-
-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 znacznika „{0}” z usuniętego obiektu {1}"
@@ -2990,9 +2809,6 @@ msgstr "{0} węzłów w linii {1} przekracza dopuszczalną liczbę węzłów {2}
 msgid "API Capabilities Violation"
 msgstr "Naruszenie możliwości API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Zapętlone zależności między relacjami"
-
 msgid "Removed obsolete tags"
 msgstr "Usunięte przestarzałe znaczniki"
 
@@ -3192,16 +3008,16 @@ 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 ""
-"Zamierzasz usunąć węzły spoza obszaru, który pobrano.<br>Może to spowodowac "
-"problem, ponieważ inne (niewidoczne dla ciebie) obiekty mogą używać tych "
-"węzłów.<br>Czy naprawdę zamierzasz je usunąć?"
+"Zostaną usunięte węzły spoza obszaru, który pobrano.<br>Może to spowodowac "
+"problem, ponieważ inne (aktualnie niewidoczne) obiekty mogą używać tych "
+"węzłów.<br>Usunąć je?"
 
 msgid ""
 "You are about to delete incomplete objects.<br>This will cause problems "
 "because you don''t see the real object.<br>Do you really want to delete?"
 msgstr ""
-"Próbujesz usunąć niekompletne obiekty.<br>Spowoduje to problem, bo obiekty "
-"nie są widoczne w całości.<br>Czy na pewno usunąć?"
+"Zostaną usunięte niekompletne obiekty.<br>Spowoduje to problem, bo obiekty "
+"nie są widoczne w całości.<br>Usunąć je?"
 
 msgid ""
 "You are about to delete {0} relation: {1}<br/>This step is rarely necessary "
@@ -3395,61 +3211,12 @@ msgstr "Role w relacjach odnoszących się do"
 msgid "Automatic tag correction"
 msgstr "Automatyczna korekcja znaczników"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Nie można utworzyć katalogu {0}, automatyczny zapis bedzie wyłaczony"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Nie można utworzyć pliku {0}, inna nazwa pliku zostanie użyta"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Błąd IO podczas tworzenia pliku, automatyczny zapis zostanie pominięty: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Nie można usunąć poprzedniego pliku backup {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Twoja praca została zapisana automatycznie."
-
-msgid "Restoring files"
-msgstr "Odzyskiwanie plików"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Nie można usunąć pliku kopii zapasowej {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Nie można usunąć pliku PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Nie można usunąć zarchiwizowanego pliku kopii zapasowej {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Niewłaściwa wartość szerokości geograficznej „{0}”"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Niewłaściwa wartość długości geograficznej „{0}”"
 
-msgid "Question"
-msgstr "Pytanie"
-
-msgid "Message"
-msgstr "Komunikat"
-
-msgid "Enter text"
-msgstr "Wprowadź tekst"
-
-msgid "Installing plugins"
-msgstr "Instalowanie wtyczek"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Plik ustawień pyta o pozwolenie dopisania preferencji do "
-"<b>{0}</b>,<br/> ale jej wartość domyślna jest w tej chwili nieznana.<br/> "
-"Proszę aktywować ręcznie odpowiednią opcję i spróbować zaimportować ponownie."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Nie udało się utworzyć brakującego katalogu pamięci podręcznej: {0}"
 
@@ -3480,7 +3247,8 @@ msgid ""
 "Failed to initialize preferences. Preference directory ''{0}'' is not a "
 "directory."
 msgstr ""
-"Nie udało się zainicjować preferencji. Katalog „{0}” nie jest katalogiem."
+"Nie udało się zainicjować preferencji. Katalog preferencji „{0}” nie jest "
+"katalogiem."
 
 msgid ""
 "<html>Failed to initialize preferences.<br>Preference directory ''{0}'' is "
@@ -3560,6 +3328,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Ustawienie {0} zostało usunięte, ponieważ nie jest już używane."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Plik ustawień pyta o pozwolenie dopisania preferencji do "
+"<b>{0}</b>,<br/> ale jej wartość domyślna jest w tej chwili nieznana.<br/> "
+"Proszę aktywować ręcznie odpowiednią opcję i spróbować zaimportować ponownie."
+
 msgid "Metric"
 msgstr "Metryczny"
 
@@ -3591,7 +3368,7 @@ msgid "Decimal Degrees"
 msgstr "Stopnie dziesiętne"
 
 msgid "deg° min'' sec\""
-msgstr "st° min'' sek\""
+msgstr "st° min'' s\""
 
 msgid "deg° min'' (Nautical)"
 msgstr "st° min'' (Morskie)"
@@ -3698,6 +3475,17 @@ msgstr ""
 msgid "Note"
 msgstr "Uwagi"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Nie udało się uzyskać klucza dostępu z menedżera danych uwierzytelniających"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Aktualny menedżer danych uwierzytelniających jest typu „{0}”"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Nie udało się przesłać klucza dostępu do menedżera danych uwierzytelniających"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Oczekiwano ID > 0. Jest {0}."
 
@@ -3714,6 +3502,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Element z ID = 0 nie może być niewidoczny."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Zapętlone zależności między relacjami"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3756,6 +3547,63 @@ msgstr "Scalanie danych..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test „{0}” kompletny w {1}"
 
+msgid "incomplete"
+msgstr "niekompletne"
+
+msgid "House {0}"
+msgstr "Dom {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Numer domu {0} przy {1}"
+
+msgid "House number {0}"
+msgstr "Numer domu {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "węzeł"
+msgstr[1] "węzły"
+msgstr[2] "węzłów"
+
+msgid "highway"
+msgstr "droga"
+
+msgid "railway"
+msgstr "tory kolejowe"
+
+msgid "waterway"
+msgstr "szlak wodny"
+
+msgid "landuse"
+msgstr "zagospodarowanie przestrzenne"
+
+msgid "building"
+msgstr "budynek"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} węzeł"
+msgstr[1] "{0} węzły"
+msgstr[2] "{0} węzłów"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} element"
+msgstr[1] "{0} elementy"
+msgstr[2] "{0} elementów"
+
+msgid "public transport"
+msgstr "transport publiczny"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relacja"
+msgstr[1] "relacje"
+msgstr[2] "relacji"
+
+msgid "Changeset {0}"
+msgstr "Zestaw zmian {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Błąd filtra  <code>{0}</code>:<br>{1}"
 
@@ -3792,24 +3640,12 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr "Nie można połączyć elementów z innymi id ({0} i {1})"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "węzeł"
-msgstr[1] "węzły"
-msgstr[2] "węzłów"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "linia"
 msgstr[1] "linie"
 msgstr[2] "linii"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relacja"
-msgstr[1] "relacje"
-msgstr[2] "relacji"
-
 msgid "closedway"
 msgstr "zamknięta linia"
 
@@ -3845,6 +3681,126 @@ msgstr "Nie można porównać elementu z ID „{0}” do elementu z ID „{1}”
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parametr {0} nie jest w zakresie 0..{1}. Obecnie „{2}”."
 
+msgid "<not>"
+msgstr "<nie>"
+
+msgid "<or>"
+msgstr "<lub>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<lewy rodzic>"
+
+msgid "<right parent>"
+msgstr "<prawy rodzic>"
+
+msgid "<colon>"
+msgstr "<dwukropek>"
+
+msgid "<equals>"
+msgstr "<równa się>"
+
+msgid "<key>"
+msgstr "<klawisz>"
+
+msgid "<question mark>"
+msgstr "<znak zapytania>"
+
+msgid "<end-of-file>"
+msgstr "<koniec pliku>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Wyrażenie regularne „{0}” zawiera błąd składni w pozycji {1}. Pełny opis "
+"błędu:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Wyrażenie „{0}” zawiera błąd składni. Pełny opis błędu:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Nie można przetworzyć datownika „{0}”"
+
+msgid "Expecting {0} after {1}"
+msgstr "Spodziewane {0} po  {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Oczekiwany zakres identyfikatorów elementów"
+
+msgid "Range of changeset ids expected"
+msgstr "Oczekiwany zakres identyfikatorów zestawów zmian"
+
+msgid "Range of versions expected"
+msgstr "Oczekiwany zakres wersji"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Klucz nie może być pusty jeśli użyty jest operator tag. Przykład użycia: "
+"klucz=wartość"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Nieznany typ elementu: {0}. Dozwolone wartości to węzeł, linia lub relacja"
+
+msgid "Positive integer expected"
+msgstr "Oczekiwano dodatniej liczby całkowitej"
+
+msgid "Range of numbers expected"
+msgstr "Spodziewane: zakres liczbowy"
+
+msgid "Unknown preset name: "
+msgstr "Nieznana nazwa szablonu: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Nie udało się przetworzyć selektora MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Niespodziewany token: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Brak parametru dla OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Brakujący parametr dla XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Brak parametru dla NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Niespodziewany token. Spodziewano się {0}, znaleziono {1}."
+
+msgctxt "search"
+msgid "CS"
+msgstr "wielkość liter istotna"
+
+msgctxt "search"
+msgid "CI"
+msgstr "wielkość liter nieistotna"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Błąd ładowania klasy rendera mapy „{0}”. Klasa nie znaleziona."
 
@@ -3927,6 +3883,122 @@ msgstr "Oczekiwany element „{0}'', ale otrzymano „{1}”"
 msgid "value expected"
 msgstr "spodziewana wartość"
 
+msgid "Short Description:"
+msgstr "Krótki opis:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Strona internetowa:"
+
+msgid "Description:"
+msgstr "Opis:"
+
+msgid "Version:"
+msgstr "Wersja:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Najniższa wersja JOSM:"
+
+msgid "by {0}"
+msgstr "autor: {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM domyślny (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Wewnętrzne style do użycia jako baza dla przełączalnych stylów nakładek."
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "podstawowy styl Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Wewętrzne szablony"
+
+msgid "The default preset for JOSM"
+msgstr "Domyślne szablony JOSM"
+
+msgid "Addresses"
+msgstr "Adresy"
+
+msgid "Checks for errors on addresses"
+msgstr "Szuka błędów w adresowaniu"
+
+msgid "Tag combinations"
+msgstr "Zestawienia znaczników"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Szuka brakujących znaczników i ich podejrzanych zestawień"
+
+msgid "Deprecated features"
+msgstr "Porzucone funkcje"
+
+msgid "Checks for deprecated features"
+msgstr "Szuka przestarzałych elementów"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Szuka błędów geometrii"
+
+msgid "Highways"
+msgstr "Drogi"
+
+msgid "Checks for errors on highways"
+msgstr "Szuka błędów w systemie dróg"
+
+msgid "Multiple values"
+msgstr "Wiele wartości"
+
+msgid "Checks for wrong multiple values"
+msgstr "Sprawdza istnienie błędnych wielu wartości"
+
+msgid "Numeric values"
+msgstr "Wartości numeryczne"
+
+msgid "Checks for wrong numeric values"
+msgstr "Szuka nieprawidłowych wartości numerycznych"
+
+msgid "Religion"
+msgstr "Religia"
+
+msgid "Checks for errors on religious objects"
+msgstr "Szuka błędów w obiektach religijnych"
+
+msgid "Relations"
+msgstr "Relacje"
+
+msgid "Checks for errors on relations"
+msgstr "Szuka błędów w relacjach"
+
+msgid "Territories"
+msgstr "Obszary"
+
+msgid "Checks for territories-specific features"
+msgstr "Sprawdza cechy związane z obszarami"
+
+msgid "Unnecessary tags"
+msgstr "Zbędne znaczniki"
+
+msgid "Checks for unnecessary tags"
+msgstr "Szuka niepotrzebnych znaczników"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Szuka błędnych znaczników Wikipedii"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Projekcja UTM (''+proj=utm'') wymaga parametru „+zone=...”."
 
@@ -4116,9 +4188,6 @@ msgstr "Adres URL zawiera nieprawidłowy fragment: {0}"
 msgid "URL validator"
 msgstr "Weryfikator adresu URL"
 
-msgid "Addresses"
-msgstr "Adresy"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Sprawdza błędy w adresach i relacjach skojarzonych ulic."
 
@@ -4144,7 +4213,7 @@ msgid "API Capabilities"
 msgstr "Możliwości API"
 
 msgid "Checks for errors against API capabilities"
-msgstr ""
+msgstr "Szuka błędów możliwości interfejsu API"
 
 msgid ""
 "Way contains more than {0} nodes. It should be replaced by a multipolygon"
@@ -4313,9 +4382,6 @@ msgstr "Powielone węzły linii"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Sprawdza linie z identycznymi, kolejnymi węzłami."
 
-msgid "Highways"
-msgstr "Drogi"
-
 msgid "Performs semantic checks on highways."
 msgstr "Przeprowadza semantyczne kontrole dróg."
 
@@ -4374,7 +4440,7 @@ msgid "Very long segment of {0} kilometers"
 msgstr "Bardzo długi segment o długości {0} kilometrów"
 
 msgid "Tag checker (MapCSS based)"
-msgstr "Walidator znaczników (bazujący na MapCSS)"
+msgstr "Znaczniki (weryfikator bazujący na MapCSS)"
 
 msgid "This test checks for errors in tag keys and values."
 msgstr "Wyszukuje błędy w kluczach i wartościach znaczników."
@@ -4392,10 +4458,10 @@ msgid "{0}, use {1} instead"
 msgstr "{0}, użyj {1} w zamian"
 
 msgid "Adding {0} to tag checker"
-msgstr "Dodawanie {0} do walidatora znaczników"
+msgstr "Dodawanie {0} do weryfikatora znaczników"
 
 msgid "Failed to add {0} to tag checker"
-msgstr "Nie udało się dodać {0} do walidatora znaczników"
+msgstr "Nie udało się dodać {0} do weryfikatora znaczników"
 
 msgid "Multipolygon"
 msgstr "Wielokąt złożony"
@@ -4495,9 +4561,9 @@ msgid ""
 "to some ''name:*'' attribute and not a composition of ''name:*'' attributes, "
 "e.g., Italia - Italien - Italy."
 msgstr ""
-"Ten test wyszukuje obiekty wielojęzyczne, których atrybut „name” nie jest "
-"równy innym atrybutom „name:*” i zbiorom atrybutów „name:*'', na przykład, "
-"Italia - Italien - Włochy."
+"Wyszukuje obiekty wielojęzyczne, których atrybut „name” nie jest równy innym "
+"atrybutom „name:*” i zbiorom atrybutów „name:*'', na przykład, Italia - "
+"Italien - Włochy."
 
 msgid "Missing name:*={0}. Add tag with correct language key."
 msgstr ""
@@ -4883,9 +4949,6 @@ msgstr "typ drogi wodnej {0}"
 msgid "boundary type {0}"
 msgstr "typ granicy {0}"
 
-msgid "building"
-msgstr "budynek"
-
 msgid "area"
 msgstr "Obszar"
 
@@ -5002,47 +5065,14 @@ msgstr "Pomijanie tego komunikatu ponownie (dla tej sesji)"
 msgid "Do not show again (remembers choice)"
 msgstr "Pomijanie tego komunikatu ponownie (zapamiętanie wyboru)"
 
-msgid "incomplete"
-msgstr "niekompletne"
-
-msgid "House {0}"
-msgstr "Dom {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Numer domu {0} przy {1}"
-
-msgid "House number {0}"
-msgstr "Numer domu {0}"
-
-msgid "highway"
-msgstr "droga"
-
-msgid "railway"
-msgstr "tory kolejowe"
-
-msgid "waterway"
-msgstr "szlak wodny"
-
-msgid "landuse"
-msgstr "zagospodarowanie przestrzenne"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} węzeł"
-msgstr[1] "{0} węzły"
-msgstr[2] "{0} węzłów"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} element"
-msgstr[1] "{0} elementy"
-msgstr[2] "{0} elementów"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Pominięto nieprawidłowy adres URL: „{0}”"
 
-msgid "public transport"
-msgstr "transport publiczny"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Pominięto nieprawidłowy adres URL pliku: „{0}”"
 
-msgid "Changeset {0}"
-msgstr "Zestaw zmian {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametr „downloadgps” nie przyjmuje nazw plików lub adresów URL"
 
 msgid "Precondition violation"
 msgstr "Naruszenie warunku wstępnego"
@@ -5134,6 +5164,69 @@ msgstr "Przesunięcie"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Wartość parametru „{0}” nie może być pusta, jest „{1}”"
 
+msgid "Outdated Java version"
+msgstr "Nieaktualna wersja Javy"
+
+msgid "Update Java"
+msgstr "Uaktualnij Javę"
+
+msgid "You are running version {0} of Java."
+msgstr "Używana wersja {0} Java"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Ta wersja nie jest obsługiwana przez {0} od {1} i odradza się jej używanie."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"Program JOSM niedługo przestanie działać z tą wersją. Zaleca się uaktualnić "
+"Java do wersji {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Uaktualnić?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Wykonanie procedur początkowych platformy"
+
+msgid "Building main menu"
+msgstr "Budowanie menu głównego"
+
+msgid "Updating user interface"
+msgstr "Uaktualnianie interfejsu użytkownika"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicjowanie danych wewnętrznych granic"
+
+msgid "Initializing OSM API"
+msgstr "Inicjowanie API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicjowanie wewnętrznych danych o kierunku ruchu"
+
+msgid "Initializing validator"
+msgstr "Inicjowanie weryfikatora"
+
+msgid "Initializing presets"
+msgstr "Inicjowanie szablonów"
+
+msgid "Initializing map styles"
+msgstr "Inicjowanie stylów map"
+
+msgid "Loading imagery preferences"
+msgstr "Wczytywanie ustawień podkładów"
+
 msgid "usage"
 msgstr "użycie"
 
@@ -5631,6 +5724,91 @@ msgstr ""
 "Wprowadzona wartość dla kafelka nie jest poprawna dla podanego stopnia "
 "przybliżenia"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Błąd programu"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Wystąpił nieoczekiwany wyjątek.\n"
+"Zazwyczaj winny jest błąd oprogramowania. Jeśli używana jest najnowsza "
+"wersja JOSM, proszę rozważyć zgłoszenie błędu."
+
+msgid "Debug information"
+msgstr "Informacje diagnozowania błędów"
+
+msgid "Manually report at:"
+msgstr "Strona ręcznego zgłaszania błędów:"
+
+msgid "Is JOSM up to date?"
+msgstr "Uaktualnienia programu"
+
+msgid "Send bug report"
+msgstr "Wyślij raport o błędach"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Jeśli uruchomiona jest najnowsza wersja programu i wtyczek, proszę zgłosić "
+"błąd za pośrednictwem systemu śledzenia błędów.\n"
+"Informacje o błędzie powinny zostać wypełnione automatycznie. Proszę "
+"dołączyć informacje o tym jak odtworzyć błąd i zawrzeć tak wiele szczegółów, "
+"jak to tylko możliwe."
+
+msgid "Report Bug"
+msgstr "Zgłoś błąd"
+
+msgid "Suppress this error for this session."
+msgstr "Pomijanie tego błędu dla tej sesji"
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Nie pokazuj więcej raportów z błędami dla tej sesji."
+
+msgid "Ignore this error."
+msgstr "Zignoruj ten błąd"
+
+msgid "Include the system status report."
+msgstr "Załączenie raportu stanu systemu"
+
+msgid "Include information about the data you were working on."
+msgstr "Załączenie informacji na temat opracowywanych danych"
+
+msgid "Include all stack traces."
+msgstr "Załączenie zrzutów stosu"
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Uruchomiona wersja JOSM to {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "Wyszukiwanie aktualizacji..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Wystąpił błąd podczas sprawdzania czy program jest aktualny."
+
+msgid "JOSM is up to date."
+msgstr "Program JOSM jest aktualny."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"JOSM jest nieaktualny. Aktualna wersja to {0}. Proszę spróbować uaktualnić "
+"program."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Przed zgłoszeniem błędu, proszę upewnić się, że zainstalowano najnowszą "
+"wersję programu JOSM z tej strony:"
+
+msgid "Update JOSM"
+msgstr "Uaktualnij JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikt tła: brak konfilktu"
 
@@ -6391,6 +6569,22 @@ msgstr ""
 "Skopiowane dane zawierają niekompletne obiekty. Podczas wstawiania "
 "niekompletne obiekty są usuwane. Wstawić dane bez niekompletnych obiektów?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Wkleić te znaczniki?"
+
+msgid "Clear buffer"
+msgstr "Wyczyść bufor"
+
+msgid "Ignore warnings"
+msgstr "Zignoruj ostrzeżenia"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p>Nie można wkleić znaczników ze schowka. Nie zawiera on żadnego "
+"obiektu JOSM bądź odpowiedniego tekstu.</p></html>"
+
 msgid "For selected objects only"
 msgstr "Tylko dla zaznaczonych obiektów"
 
@@ -6987,9 +7181,6 @@ msgstr "Źródło"
 msgid "Title:"
 msgstr "Nazwa:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Styl wbudowany, wewnętrzna ścieżka:"
 
@@ -7106,9 +7297,6 @@ msgstr ""
 "Określono nieprawidłową listę identyfikatorów.\n"
 "Nie można kontynuować."
 
-msgid "Relations"
-msgstr "Relacje"
-
 msgid "Open a list of all relations."
 msgstr "Otwiera listę wszystkich relacji"
 
@@ -7360,7 +7548,7 @@ msgid "ID"
 msgstr "Identyfikator"
 
 msgid "Open"
-msgstr "Otwórz"
+msgstr "Stan"
 
 msgid "User"
 msgstr "Użytkownik"
@@ -8533,7 +8721,7 @@ msgid "Wrong number of arguments for bookmark"
 msgstr "Nieprawidłowa liczba parametrów dla zakładki"
 
 msgid "Home location"
-msgstr ""
+msgstr "Położenie domu"
 
 msgid "Error reading bookmark entry: %s"
 msgstr "Błąd odczytywania wpisu zakładki: %s"
@@ -8575,7 +8763,7 @@ msgid "Rename the currently selected bookmark"
 msgstr "Zmienia nazwę zakładki"
 
 msgid "Download bookmarks for my {0} last changesets"
-msgstr ""
+msgstr "Pobiera zakładki ostatnich {0} zestawów zmian użytkownika"
 
 msgid "min lat"
 msgstr "min. szerokość"
@@ -8611,24 +8799,6 @@ msgstr "Wartości szerokości geograficznej musza być z zakresu [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Wartości długości geograficznej musza być z zakresu [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Zasoby i typy danych:"
-
-msgid "OpenStreetMap data"
-msgstr "Dane OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Pobiera dane OSM ze wskazanego obszaru"
-
-msgid "Raw GPS data"
-msgstr "Nieprzetworzone dane GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Pobiera ślady GPS ze wskazanego obszaru"
-
-msgid "Select to download notes in the selected download area."
-msgstr "Pobiera uwagi ze wskazanego obszaru"
-
 msgid "Download as new layer"
 msgstr "Pobranie do nowej warstwy"
 
@@ -8664,30 +8834,12 @@ msgstr ""
 "przycisk myszy przesuwa mapę a kółko myszy i klawisze +/- przybliżają i "
 "oddalają widok."
 
-msgid "No area selected yet"
-msgstr "Nie zaznaczono obszaru"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Za duży rozmiar obszaru, potencjalnie do odrzucenia przez serwer"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Właściwy rozmiar obszaru, potencjalnie do przyjęcia przez serwer"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Zamyka okno i anuluje pobieranie"
 
 msgid "Click to download the currently selected area"
 msgstr "Pobiera wskazany obszar"
 
-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>Nie wybrano <strong>{0}</strong> ani <strong>{1}</strong> ani "
-"<strong>{2}</strong>.<br>Proszę wybrać któryś z zasobów lub wszystkie z "
-"nich.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Pobranie obiektów nadrzędnych (relacji)"
 
@@ -8709,6 +8861,91 @@ msgstr "Pobiera również obiekty należące do relacji"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Pobierz obiekty nadrzędne (np. relacje i linie)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Zasoby i typy danych:"
+
+msgid "OpenStreetMap data"
+msgstr "Dane OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Pobiera dane OSM ze wskazanego obszaru"
+
+msgid "Raw GPS data"
+msgstr "Nieprzetworzone dane GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Pobiera ślady GPS ze wskazanego obszaru"
+
+msgid "Select to download notes in the selected download area."
+msgstr "Pobiera uwagi ze wskazanego obszaru"
+
+msgid "Please select a download area first."
+msgstr "Proszę najpierw zaznaczyć obszar."
+
+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>Nie wybrano <strong>{0}</strong> ani <strong>{1}</strong> ani "
+"<strong>{2}</strong>.<br>Proszę wybrać któryś z zasobów lub wszystkie z "
+"nich.</html>"
+
+msgid "No area selected yet"
+msgstr "Nie zaznaczono obszaru"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Za duży rozmiar obszaru, potencjalnie do odrzucenia przez serwer"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Właściwy rozmiar obszaru, potencjalnie do przyjęcia przez serwer"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr "Pobrać wszystkie dane?"
+
+msgid "Add new snippet"
+msgstr "Dodaje nową wstawkę"
+
+msgid "Delete selected snippet"
+msgstr "Usuwa zaznaczoną wstawkę"
+
+msgid "Edit selected snippet"
+msgstr "Modyfikuje zaznaczoną wstawkę"
+
+msgid "history"
+msgstr "tablica historyczna"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8746,14 +8983,11 @@ msgid "Search :"
 msgstr ""
 
 msgid "The Overpass wizard could not parse the following query:"
-msgstr ""
+msgstr "Nie można przetworzyć zapytania przez kreator Overpass:"
 
 msgid "Parse error"
 msgstr "Błąd przetwarzania"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8988,7 +9222,7 @@ msgid "Node {0}"
 msgstr "Węzeł {0}"
 
 msgid "The nodes of this way are in reverse order"
-msgstr ""
+msgstr "Węzły tej linii są w odwrotnej kolejności"
 
 msgid "Zoom to node"
 msgstr "Powiększ do węzła"
@@ -9021,7 +9255,7 @@ msgid "<b>Source</b>:"
 msgstr "<b>Źródło</b>:"
 
 msgid "<b>Imagery</b>:"
-msgstr "<b>Zdjęcia</b>:"
+msgstr "<b>Obrazy</b>:"
 
 msgid ""
 "<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>"
@@ -9169,13 +9403,13 @@ msgstr "Wyślij"
 msgid ""
 "Select which actions to perform for this layer, if you click the leftmost "
 "button."
-msgstr ""
+msgstr "Wybiera czynności do wykonania dla tej warstwy."
 
 msgid "Check \"Upload\" to upload the changes to the OSM server."
-msgstr ""
+msgstr "Zaznaczenie „Wyślij”, wyśle zmiany do serwera OSM."
 
 msgid "Check \"Save\" to save the layer to the file specified on the left."
-msgstr ""
+msgstr "Zaznaczenie „Zapisz”, zapisze warstwę do pliku określonego po lewej."
 
 msgid "Provide a brief comment for the changes you are uploading:"
 msgstr "Opis zmian wysyłanych do serwera:"
@@ -9334,6 +9568,18 @@ msgstr "Uwierzytelnij wprowadzoną nazwą użytkownika i hasłem."
 msgid "Cancel authentication"
 msgstr "Anuluj uwierzytelnianie"
 
+msgid "Question"
+msgstr "Pytanie"
+
+msgid "Message"
+msgstr "Komunikat"
+
+msgid "Enter text"
+msgstr "Wprowadź tekst"
+
+msgid "Installing plugins"
+msgstr "Instalowanie wtyczek"
+
 msgid "Downloading file"
 msgstr "Pobieranie pliku"
 
@@ -9344,7 +9590,7 @@ msgid "Download finished"
 msgstr "Zakończono pobieranie"
 
 msgid "Unpacking {0} into {1}"
-msgstr "Wypakowywanie {0} do {1}"
+msgstr "Rozpakowywanie {0} do {1}"
 
 msgid ""
 "Cannot download file ''{0}''. Its download link ''{1}'' is not a valid URL. "
@@ -9408,8 +9654,8 @@ msgid ""
 "Either edit the path manually in the text field or click the \"...\" button "
 "to open a file chooser."
 msgstr ""
-"Edytuj ścieżkę ręcznie w polu tekstowym lub naciśnij przycisk „...” aby "
-"otworzyć okno wyboru plików."
+"Proszę wprowadzić ścieżkę w polu tekstowym lub nacisnąć przycisk „...”, aby "
+"otworzyć okno wyboru pliku."
 
 msgid "The bold text is the name of the layer."
 msgstr "Pogrubiony tekst wskazuje nazwę warstwy."
@@ -9427,7 +9673,7 @@ msgid "Click cell to change the file path."
 msgstr "Kliknięcie komórki umożliwia zmienienie ścieżki pliku."
 
 msgid "Launch a file chooser to select a file"
-msgstr "Pokaż okno wyboru plików by wskazać plik"
+msgstr "Otwiera okno wyboru plików aby wskazać plik"
 
 msgid "Select filename"
 msgstr "Wybieranie pliku"
@@ -9455,6 +9701,7 @@ msgstr "Zapisywanie lub wysyłanie zmian przed usunięciem"
 
 msgid "Unsaved changes - Save/Upload before restarting?"
 msgstr ""
+"Zapisywanie lub wysyłanie zmian przed ponownym uruchomieniem programu"
 
 msgid "Uploading and saving modified layers ..."
 msgstr "Wysyłanie i zapisywanie zmodyfikowanych warstw..."
@@ -9486,7 +9733,17 @@ msgid_plural ""
 "file for each of them or discard the changes.<br>Layers without a "
 "file:</html>"
 msgstr[0] ""
+"<html>{0} warstwa wymaga zapisania ale nie przypisano do niej "
+"pliku.<br>Proszę wybrać plik dla tej warstwy lub odrzucić zmiany.<br>Warstwa "
+"bez pliku:</html>"
 msgstr[1] ""
+"<html>{0} warstwy wymagają zapisania ale nie przypisano do nich "
+"plików.<br>Proszę wybrać plik dla każdej z warstw lub odrzucić "
+"zmiany.<br>Warstwy bez pliku:</html>"
+msgstr[2] ""
+"<html>{0} warstw wymaga zapisania ale nie przypisano do nich "
+"plików.<br>Proszę wybrać plik dla każdej z warstw lub odrzucić "
+"zmiany.<br>Warstwy bez pliku:</html>"
 
 msgid "Unsaved data and missing associated file"
 msgstr "Niezapisane dane i brak skojarzonego pliku"
@@ -9500,7 +9757,17 @@ msgid_plural ""
 "written.<br>Either select another file for each of them or discard the "
 "changes.<br>Layers with non-writable files:</html>"
 msgstr[0] ""
+"<html>{0} warstwa wymaga zapisania ale nie można zapisać<br> przypisanego do "
+"niej pliku.<br>Proszę wybrać plik dla tej warstwy lub odrzucić "
+"zmiany.<br>Warstwa z plikiem bez możliwości zapisania:</html>"
 msgstr[1] ""
+"<html>{0} warstwy wymagają zapisania ale nie można zapisać<br> przypisanego "
+"do nich pliku.<br>Proszę wybrać plik dla każdej z warstw lub odrzucić "
+"zmiany.<br>Warstwy z plikiem bez możliwości zapisania:</html>"
+msgstr[2] ""
+"<html>{0} warstw wymaga zapisania ale nie można zapisać<br> przypisanego do "
+"nich pliku.<br>Proszę wybrać plik dla każdej z warstw lub odrzucić "
+"zmiany.<br>Warstwy z plikiem bez możliwości zapisania:</html>"
 
 msgid "Unsaved data non-writable files"
 msgstr "Niezapisane dane do plików bez uprawnień zapisywania"
@@ -9909,9 +10176,6 @@ msgstr "Wybierz obiekty do wysłania"
 msgid "Cancel uploading"
 msgstr "Anuluj przesyłanie"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Nieoczekiwana wartość klucza „{0}” w preferencjach, otrzymano „{1}”"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Wypełnij jeden zestaw zmian i powróć do dialogu wysyłki."
 
@@ -10006,6 +10270,188 @@ msgstr[0] "{0} obiekt do usunięcia:"
 msgstr[1] "{0} obiekty do usunięcia:"
 msgstr[2] "{0} obiektów do usunięcia:"
 
+msgid "All Formats"
+msgstr "Wszystkie formaty"
+
+msgid "Could not export ''{0}''."
+msgstr "Nie można wyeksportować „{0}”."
+
+msgid "Could not import ''{0}''."
+msgstr "Nie można zaimportować „{0}”."
+
+msgid "Could not import files."
+msgstr "Nie można zaimportować plików."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Nie można odczytać pliku „{0}”.<br>Błąd w:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Nie można odczytać plików.<br>Błąd w:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Pliki GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Warstwa „{0}” nie jest obsługiwana"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Uwaga: Licencja GPL nie jest zgodna z licencją OSM. Proszę nie przesyłać "
+"tras na licencji GPL."
+
+msgid "GPS track description"
+msgstr "Opis trasy GPS"
+
+msgid "Add author information"
+msgstr "Dodaj informacje o autorze"
+
+msgid "Real name"
+msgstr "Imię i nazwisko"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Prawa autorskie (URL)"
+
+msgid "Predefined"
+msgstr "Predefiniowane"
+
+msgid "Copyright year"
+msgstr "Prawa autorskie - rok"
+
+msgid "Keywords"
+msgstr "Słowa kluczowe"
+
+msgid "Export options"
+msgstr "Opcje eksportowania"
+
+msgid "Export and Save"
+msgstr "Eksportuj i zapisz"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Błąd podczas eksportowania {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Wybierz jedną z gotowych licencji"
+
+msgid "GPX Files"
+msgstr "Pliki GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Nie udało się przetworzyć danych warstwy „{0}”"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Wystąpił błąd podczas przetwarzania danych gpx warstwy „{0}”. Tylko część "
+"pliku będzie dostępna."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Wystąpił błąd podczas przetwarzania pliku gpx „{0}”. Tylko część pliku "
+"będzie dostępna."
+
+msgid "Image Files"
+msgstr "Pliki obrazów"
+
+msgid "folder"
+msgstr "katalog"
+
+msgid "Looking for image files"
+msgstr "Wyszukiwanie plików obrazu"
+
+msgid "No image files found."
+msgstr "Nie odnaleziono plików obrazu"
+
+msgid "NMEA-0183 Files"
+msgstr "Pliki NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Zaimportowane współrzędne: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr "Błędy sumy kontrolnej: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr "Import NMEA zakończony powodzeniem:"
+
+msgid "NMEA import failure!"
+msgstr "Import NMEA zakończony niepowodzeniem!"
+
+msgid "Note Files"
+msgstr "Pliki uwag"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr "Plik OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Plik „{0}” nie istnieje."
+
+msgid "No data found in file {0}."
+msgstr "Nie znaleziono danych w pliku {0}."
+
+msgid "Open OsmChange file"
+msgstr "Otwórz plik OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Pliki serwera OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Podczas zapisywania wystąpił błąd.<br>Błąd:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Podczas przywracania kopii bezpieczeństwa wystąpił "
+"błąd.<br>Błąd:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr "Nieprawidłowy zestaw danych"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nie odnaleziono danych dla warstwy „{0}”."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nie znaleziono danych w pliku „{0}”."
+
+msgid "Open OSM file"
+msgstr "Otwórz plik OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Pliki WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nieosługiwana wersja pliku WMS; znaleziono {0}, oczekiwano {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10019,7 +10465,7 @@ msgid "Tile display projection"
 msgstr ""
 
 msgid "Current zoom"
-msgstr ""
+msgstr "Aktualne przybliżenie"
 
 msgid "Show tile info"
 msgstr "Wyświetl informację o kafelku"
@@ -10067,7 +10513,7 @@ msgid "No tiles at this zoom level"
 msgstr "Brak kafelków na tym poziomie przybliżenia"
 
 msgid "Current zoom: {0}"
-msgstr "Obecne przybliżenie: {0}"
+msgstr "Aktualne przybliżenie: {0}"
 
 msgid "Display zoom: {0}"
 msgstr "Stopień przybliżenia: {0}"
@@ -10115,6 +10561,34 @@ msgstr "Pomijanie tego komunikatu ponownie"
 msgid "Hide this message and never show it again"
 msgstr "Ukrywa tę informację i nie wyświetla jej ponownie"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Nie można utworzyć katalogu {0}, automatyczny zapis bedzie wyłaczony"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Nie można utworzyć pliku {0}, inna nazwa pliku zostanie użyta"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Błąd IO podczas tworzenia pliku, automatyczny zapis zostanie pominięty: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Nie można usunąć poprzedniego pliku backup {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Twoja praca została zapisana automatycznie."
+
+msgid "Restoring files"
+msgstr "Odzyskiwanie plików"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Nie można usunąć pliku kopii zapasowej {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Nie można usunąć pliku PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Nie można usunąć zarchiwizowanego pliku kopii zapasowej {0}"
+
 msgid "Customize Color"
 msgstr "Dostosuj kolor"
 
@@ -10122,7 +10596,7 @@ msgid "Default"
 msgstr "Domyślny"
 
 msgid "Choose a color"
-msgstr "Wybierz kolor"
+msgstr "Wybór koloru"
 
 msgid "Name: {0}"
 msgstr "Nazwa: {0}"
@@ -10223,6 +10697,9 @@ msgstr "Łączna liczba uwag:"
 msgid "Changes need uploading?"
 msgstr "Zmiany wymagają wysłania?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "poza pobranym obszarem"
 
@@ -10299,6 +10776,9 @@ msgstr "Błędy"
 msgid "No validation errors"
 msgstr "Sprawdzanie poprawności przebiegło pomyślnie"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Ustaw zakładkę WMS"
 
@@ -10782,10 +11262,10 @@ msgstr ""
 "nimi dźwięku.</html>"
 
 msgid "Import not possible"
-msgstr "Import nie jest możliwy"
+msgstr "Zaimportowanie nie jest możliwe"
 
 msgid "Audio markers from {0}"
-msgstr "Markery audio z {0}"
+msgstr "Znaczniki dźwiękowe z {0}"
 
 msgid "No GPX track available in layer to associate audio with."
 msgstr ""
@@ -10865,25 +11345,27 @@ msgstr[2] "znaczników"
 
 msgid "{0} consists of {1} marker"
 msgid_plural "{0} consists of {1} markers"
-msgstr[0] "{0} składa się z {1} znacznika"
-msgstr[1] "{0} składa się z {1} znaczników"
-msgstr[2] "{0} składa się z {1} znaczników"
+msgstr[0] "Warstwa {0} składa się z {1} znacznika"
+msgstr[1] "Warstwa {0} składa się z {1} znaczników"
+msgstr[2] "Warstwa {0} składa się z {1} znaczników"
 
 msgid "No existing audio markers in this layer to offset from."
 msgstr ""
 
 msgid "Show Text/Icons"
-msgstr "Pokaż tekst/ikony"
+msgstr "Etykiety i ikony"
 
 msgid "Toggle visible state of the marker text and icons."
-msgstr "Zmienia widoczność markerów tekstowych i ikon."
+msgstr "Przełącza widoczność etykiet i ikon."
 
 msgid "Synchronize Audio"
 msgstr "Synchronizacja dźwięku"
 
 msgid ""
 "You need to pause audio at the moment when you hear your synchronization cue."
-msgstr "Musisz włączyć pauzę kiedy usłyszysz wskazówkę do synchronizacji."
+msgstr ""
+"Należy wstrzymać odtwarzanie dźwięku po usłyszeniu wskazówki do "
+"synchronizacji."
 
 msgid "Audio synchronized at point {0}."
 msgstr "Dźwięk zsynchronizowany w punkcie {0}."
@@ -10898,6 +11380,8 @@ msgid ""
 "You need to have paused audio at the point on the track where you want the "
 "marker."
 msgstr ""
+"Należy wstrzymać odtwarzanie dźwięku w punkcie śladu, w którym zostanie "
+"utworzony znacznik."
 
 msgid ""
 "You need to drag the play head near to the GPX track whose associated sound "
@@ -10922,9 +11406,6 @@ msgstr "(Adres URL był: "
 msgid "Select the map painting styles"
 msgstr "Wybierz style rysowania mapy"
 
-msgid "loading style ''{0}''..."
-msgstr "wczytywanie stylu „{0}”..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10941,11 +11422,14 @@ msgstr[2] ""
 "Wystąpiło {0} błędów podczas wczytywania stylu. Proszę wybrać „Info” z menu "
 "kontekstowego, aby wyświetlić szczegóły."
 
+msgid "loading style ''{0}''..."
+msgstr "wczytywanie stylu „{0}”..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
-msgstr ""
+msgstr "Nie udało się wczytać stylów Mappaint z „{0}”. Wyjątek: {1}"
 
 msgid "Failed to parse Mappaint styles from ''{0}''. Error was: {1}"
-msgstr ""
+msgstr "Nie udało się przetworzyć stylów Mappaint z „{0}”. Błąd: {1}"
 
 msgid "Failed to locate image ''{0}''"
 msgstr "Nie udało się zlokalizować obrazu „{0}''"
@@ -10967,7 +11451,7 @@ msgstr ""
 "używać Klucza Dostępu tylko w tej sesji JOSM.</html>"
 
 msgid "Use default settings"
-msgstr "Użyj domyślnych ustawień"
+msgstr "Domyślne ustawienia"
 
 msgid "Consumer Key:"
 msgstr "Klucz odbiorcy:"
@@ -10976,7 +11460,7 @@ msgid "Consumer Secret:"
 msgstr "Sekretny klucz odbiorcy:"
 
 msgid "Request Token URL:"
-msgstr "URL prośby klucza:"
+msgstr "URL żądania klucza:"
 
 msgid "Access Token URL:"
 msgstr "URL dostępu klucza:"
@@ -11000,8 +11484,8 @@ msgid ""
 "<html>JOSM is about to reset the OAuth settings to default values.<br>The "
 "current custom settings are not saved.</html>"
 msgstr ""
-"<html>JOSM zresetuje ustawienia OAuth.<br>Obecne ustawienia nie są "
-"zapisane.</html>"
+"<html>Zostaną przywrócone domyślne ustawienia OAuth.<br>Aktualne ustawienia "
+"nie są zapisane.</html>"
 
 msgid "Overwrite custom OAuth settings?"
 msgstr "Zastąpić ustawienia OAuth?"
@@ -11168,9 +11652,11 @@ msgid ""
 "The Access Token Secret must not be empty. Please enter an Access Token "
 "Secret"
 msgstr ""
+"Sekretny klucz dostępu nie może być pusty. Proszę wprowadzić sekretny klucz "
+"dostępu."
 
 msgid "Click to test the Access Token"
-msgstr "Kliknij, aby przetestować klucz dostępu"
+msgstr "Proszę kliknąć, aby przetestować klucz dostępu"
 
 msgid ""
 "With OAuth you grant JOSM the right to upload map data and GPS tracks on "
@@ -11288,7 +11774,7 @@ msgid "<html>Retrieving an OAuth Request Token from ''{0}'' failed.</html>"
 msgstr "<html>Nie udało się pobrać tokena żądania OAuth z „{0}”.</html>"
 
 msgid "Display Advanced OAuth Parameters"
-msgstr "Wyświetl zaawansowane parametry OAuth"
+msgstr "Zaawansowane parametry OAuth"
 
 msgid "Retrieve Request Token"
 msgstr "Pobierz token żądania"
@@ -11345,7 +11831,7 @@ msgid "Click to retrieve a Request Token"
 msgstr "Kliknij by pobrać żeton żądania"
 
 msgid "Retrieve Access Token"
-msgstr "Pobierz żeton żądania"
+msgstr "Pobierz token żądania"
 
 msgid "Click to retrieve an Access Token"
 msgstr ""
@@ -11436,27 +11922,6 @@ msgstr "Pobierz wtyczki"
 msgid "Icon paths:"
 msgstr "Ścieżki ikon:"
 
-msgid "Short Description:"
-msgstr "Krótki opis:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Strona internetowa:"
-
-msgid "Description:"
-msgstr "Opis:"
-
-msgid "Version:"
-msgstr "Wersja:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Najniższa wersja JOSM:"
-
-msgid "by {0}"
-msgstr "autor: {0}"
-
 msgid "Name (optional):"
 msgstr "Nazwa (opcjonalna):"
 
@@ -11597,10 +12062,10 @@ msgid "JOSM custom settings files (*.xml)"
 msgstr "Pliki z własnymi ustawieniami JOSM (*.xml)"
 
 msgid "Please select some preference keys not marked as default"
-msgstr ""
+msgstr "Proszę zaznaczyć klucze ustawień nie oznaczone jako domyślne."
 
 msgid "Export preferences keys to JOSM customization file"
-msgstr ""
+msgstr "Eksportowanie kluczy preferencji do pliku ustawień"
 
 msgid "What to do with preference lists when this file is to be imported?"
 msgstr ""
@@ -12605,20 +13070,6 @@ msgstr ""
 "Ostrzeżenie: nieprawidłowy format pozycji w liście stylu „{0}”. Otrzymano "
 "„{1}”"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM domyślny (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Wewnętrzne style do użycia jako baza dla przełączalnych stylów nakładek."
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "podstawowy styl Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Ustawienia mapy"
 
@@ -12715,12 +13166,6 @@ msgstr ""
 "Ostrzeżenie: nieprawidłowy format pozycji w liście szablonów „{0}”. "
 "Otrzymano „{1}”"
 
-msgid "Internal Preset"
-msgstr "Wewętrzne szablony"
-
-msgid "The default preset for JOSM"
-msgstr "Domyślne szablony JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Wtyczka {0} jest wciąż wymagana przez tę wtyczkę:"
@@ -13185,7 +13630,7 @@ msgstr ""
 "Konfiguruj tożsamość użytkownika i sposób jej potwierdzania w serwerze OSM"
 
 msgid "Use Basic Authentication"
-msgstr "Używanie prostego uwierzytelniania"
+msgstr "Proste uwierzytelnianie"
 
 msgid ""
 "Select to use HTTP basic authentication with your OSM username and password"
@@ -13193,7 +13638,7 @@ msgstr ""
 "Używa prostego uwierzytelniania HTTP z nazwą użytkownika i hasłem OSM"
 
 msgid "Use OAuth"
-msgstr "Używanie OAuth"
+msgstr "OAuth"
 
 msgid "Select to use OAuth as authentication mechanism"
 msgstr "Używa mechanizmu uwierzytelniania OAuth"
@@ -13216,9 +13661,6 @@ msgstr ""
 "Nie udało się uzyskać danych uwierzytelniających OSM z menedżera danych "
 "uwierzytelniających."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Aktualny menedżer danych uwierzytelniających jest typu „{0}”"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Nie udało się zapisać danych uwierzytelniających OSM w menedżerze danych "
@@ -13238,14 +13680,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Nie udało się uzyskać klucza dostępu z menedżera danych uwierzytelniających"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Nie udało się przesłać klucza dostępu do menedżera danych uwierzytelniających"
-
 msgid "Save to preferences"
 msgstr "Zapisanie do ustawień"
 
@@ -13292,13 +13726,13 @@ msgstr ""
 msgid "OSM API URL must not be empty. Please enter the OSM API URL."
 msgstr ""
 "Adres URL interfejsu API OSM nie może być pusty. Proszę wprowadzić adres URL "
-"interfejsu API OSM"
+"interfejsu API OSM."
 
 msgid "The current value is not a valid URL"
 msgstr "Aktualna wartość nie jest prawidłowym adresem URL"
 
 msgid "Please enter the OSM API URL."
-msgstr "Podaj OSM API URL."
+msgstr "Proszę wprowadzić adres URL interfejsu API OSM."
 
 msgid "Use Overpass server for object downloads"
 msgstr "Używanie serwera Overpass do pobierania obiektów"
@@ -13325,7 +13759,7 @@ msgstr "Port:"
 msgid ""
 "Please enter a username and a password if your proxy requires authentication."
 msgstr ""
-"Wprowadź nazwę użytkownika i hasło jeśli twój serwer proxy wymaga "
+"Proszę wprowadzić nazwę użytkownika i hasło jeśli serwer proxy wymaga "
 "uwierzytelniania."
 
 msgid "Password:"
@@ -13335,27 +13769,27 @@ msgid "No proxy"
 msgstr "Bez serwera proxy"
 
 msgid "Use standard system settings"
-msgstr "Używaj standardowych ustawień systemowych"
+msgstr "Standardowe ustawienia systemowe"
 
 msgid ""
 "Use standard system settings (disabled. Start JOSM with <tt>-"
 "Djava.net.useSystemProxies=true</tt> to enable)"
 msgstr ""
-"Używaj standardowych ustawień systemowych (nieaktywne. Uruchom JOSM z <tt>-"
-"Djava.net.useSystemProxies=true</tt> aby uaktywnić)"
+"Standardowe ustawienia systemowe (nieaktywne. Proszę uruchomić program z "
+"<tt>-Djava.net.useSystemProxies=true</tt>, aby uaktywnić)"
 
 msgid "Manually configure a HTTP proxy"
 msgstr "Ręczna konfiguracja serwerów proxy"
 
 msgid "Use a SOCKS proxy"
-msgstr "Używaj SOCKS proxy"
+msgstr "SOCKS proxy"
 
 msgid ""
 "JOSM is configured to use proxies from the system setting, but the JVM is "
 "not configured to retrieve them. Resetting preferences to ''No proxy''"
 msgstr ""
 "JOSM jest skonfigurowane tak, aby używać proxy z ustawień systemowych, "
-"jednakże JVM nie jest skonfigurowane aby je pobrać. Resetowanie ustawień do "
+"jednakże JVM nie jest skonfigurowane aby je pobrać. Przywracanie ustawień do "
 "„Bez serwera proxy\""
 
 msgid "Connection Settings"
@@ -13365,7 +13799,7 @@ msgid "Connection Settings for the OSM server."
 msgstr "Konfiguruje połączenia z serwerem OSM"
 
 msgid "Please enter your OSM user name"
-msgstr "Proszę wprowadć swoją nazwę użytkownika OSM."
+msgstr "Wprowadza nazwę użytkownika OSM"
 
 msgid "The user name cannot be empty. Please enter your OSM user name"
 msgstr ""
@@ -13399,7 +13833,7 @@ msgid "Changing keyboard shortcuts manually."
 msgstr "Umożliwia zmianę skrótów klawiszowych"
 
 msgid "Data validator"
-msgstr "Weryfikacja danych"
+msgstr "Sprawdzenie poprawności danych"
 
 msgid ""
 "An OSM data validator that checks for common errors made by users and editor "
@@ -13445,69 +13879,6 @@ msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 "Ostrzeżenie: niewłaściwy format wpisu na liście reguł „{0}”. Jest „{1}”."
 
-msgid "Checks for errors on addresses"
-msgstr "Szuka błędów w adresowaniu"
-
-msgid "Tag combinations"
-msgstr "Zestawienia znaczników"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Szuka brakujących znaczników i ich podejrzanych zestawień"
-
-msgid "Deprecated features"
-msgstr "Porzucone funkcje"
-
-msgid "Checks for deprecated features"
-msgstr "Szuka przestarzałych elementów"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Szuka błędów geometrii"
-
-msgid "Checks for errors on highways"
-msgstr "Szuka błędów w systemie dróg"
-
-msgid "Multiple values"
-msgstr "Wiele wartości"
-
-msgid "Checks for wrong multiple values"
-msgstr "Sprawdza istnienie błędnych wielu wartości"
-
-msgid "Numeric values"
-msgstr "Wartości numeryczne"
-
-msgid "Checks for wrong numeric values"
-msgstr "Szuka nieprawidłowych wartości numerycznych"
-
-msgid "Religion"
-msgstr "Religia"
-
-msgid "Checks for errors on religious objects"
-msgstr "Szuka błędów w obiektach religijnych"
-
-msgid "Checks for errors on relations"
-msgstr "Szuka błędów w relacjach"
-
-msgid "Territories"
-msgstr "Obszary"
-
-msgid "Checks for territories-specific features"
-msgstr "Sprawdza cechy związane z obszarami"
-
-msgid "Unnecessary tags"
-msgstr "Zbędne znaczniki"
-
-msgid "Checks for unnecessary tags"
-msgstr "Szuka niepotrzebnych znaczników"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Szuka błędnych znaczników Wikipedii"
-
 msgid "Tag checker rules"
 msgstr "Reguły weryfikacji"
 
@@ -13756,6 +14127,29 @@ msgstr "Wszystkie pliki (*.*)"
 msgid "Received error page:"
 msgstr "Strona błędu:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr "Min. szerokość"
 
@@ -13881,9 +14275,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Usunięty członek {0} jest użyty w relacji {1}"
 
-msgid "All Formats"
-msgstr "Wszystkie formaty"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Pobieranie punktów od {0} do {1}..."
 
@@ -13991,94 +14382,6 @@ msgstr "Przetwarzanie odpowiedzi z serwera..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr "Nie można wyeksportować „{0}”."
-
-msgid "Could not import ''{0}''."
-msgstr "Nie można zaimportować „{0}”."
-
-msgid "Could not import files."
-msgstr "Nie można zaimportować plików."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Nie można odczytać pliku „{0}”.<br>Błąd w:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Nie można odczytać plików.<br>Błąd w:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Pliki GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Warstwa „{0}” nie jest obsługiwana"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Uwaga: Licencja GPL nie jest zgodna z licencją OSM. Proszę nie przesyłać "
-"tras na licencji GPL."
-
-msgid "GPS track description"
-msgstr "Opis trasy GPS"
-
-msgid "Add author information"
-msgstr "Dodaj informacje o autorze"
-
-msgid "Real name"
-msgstr "Imię i nazwisko"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Prawa autorskie (URL)"
-
-msgid "Predefined"
-msgstr "Predefiniowane"
-
-msgid "Copyright year"
-msgstr "Prawa autorskie - rok"
-
-msgid "Keywords"
-msgstr "Słowa kluczowe"
-
-msgid "Export options"
-msgstr "Opcje eksportowania"
-
-msgid "Export and Save"
-msgstr "Eksportuj i zapisz"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Błąd podczas eksportowania {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Wybierz jedną z gotowych licencji"
-
-msgid "GPX Files"
-msgstr "Pliki GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Nie udało się przetworzyć danych warstwy „{0}”"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Wystąpił błąd podczas przetwarzania danych gpx warstwy „{0}”. Tylko część "
-"pliku będzie dostępna."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Wystąpił błąd podczas przetwarzania pliku gpx „{0}”. Tylko część pliku "
-"będzie dostępna."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Błąd parsowania: błędna struktura dokumentu gpx"
 
@@ -14088,18 +14391,6 @@ msgstr "(w wierszu {0}, kolumnie {1})"
 msgid "Unknown mode {0}."
 msgstr "Nieznany tryb {0}"
 
-msgid "Image Files"
-msgstr "Pliki obrazów"
-
-msgid "folder"
-msgstr "katalog"
-
-msgid "Looking for image files"
-msgstr "Wyszukiwanie plików obrazu"
-
-msgid "No image files found."
-msgstr "Nie odnaleziono plików obrazu"
-
 msgid "get number of unread messages"
 msgstr "pobieranie liczby nieprzeczytanych wiadomości"
 
@@ -14153,36 +14444,9 @@ msgstr "Pobieranie relacji o identyfikatorze {0} z „{1}”"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Serwer odpowiedział kodem 404 dla id {0}. Pomijanie."
 
-msgid "NMEA-0183 Files"
-msgstr "Pliki NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Zaimportowane współrzędne: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr "Błędy sumy kontrolnej: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr "Import NMEA zakończony powodzeniem:"
-
-msgid "NMEA import failure!"
-msgstr "Import NMEA zakończony niepowodzeniem!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Wyjątek pustego wskaźnika. Możliwe brakujące znaczniki."
 
-msgid "Note Files"
-msgstr "Pliki uwag"
-
 msgid "OSM API"
 msgstr "API OSM"
 
@@ -14272,27 +14536,12 @@ msgstr "(Kod={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Serwer odpowiedział błędem o kodzie {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr "Plik OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Plik „{0}” nie istnieje."
-
-msgid "No data found in file {0}."
-msgstr "Nie znaleziono danych w pliku {0}."
-
-msgid "Open OsmChange file"
-msgstr "Otwórz plik OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Nieobsługiwana wersja: {0}"
 
@@ -14340,37 +14589,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "Pliki serwera OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Podczas zapisywania wystąpił błąd.<br>Błąd:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Podczas przywracania kopii bezpieczeństwa wystąpił "
-"błąd.<br>Błąd:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr "Analiza danych o historii..."
 
-msgid "Invalid dataset"
-msgstr "Nieprawidłowy zestaw danych"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nie odnaleziono danych dla warstwy „{0}”."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nie znaleziono danych w pliku „{0}”."
-
-msgid "Open OSM file"
-msgstr "Otwórz plik OSM"
-
 msgid "Reading was canceled"
 msgstr "Anulowano wczytywanie"
 
@@ -14504,6 +14725,9 @@ msgstr "Łączenie z serwerem..."
 msgid "Downloading OSM notes..."
 msgstr "Pobieranie uwag OSM..."
 
+msgid "Downloading data..."
+msgstr "Pobieranie danych..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14563,14 +14787,8 @@ msgstr "Znaleziono nieoczekiwane ID 0 na elemencie"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Pobieranie danych..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Pliki WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nieosługiwana wersja pliku WMS; znaleziono {0}, oczekiwano {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Nieoczekiwana wartość klucza „{0}” w preferencjach, otrzymano „{1}”"
 
 msgid "{0} bytes have been read"
 msgstr "odczytano {0} bajtów"
@@ -15691,36 +15909,6 @@ msgstr "Otwieranie adresu URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "Adres URL nie zawiera {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Nieaktualna wersja Javy"
-
-msgid "Update Java"
-msgstr "Uaktualnij Javę"
-
-msgid "You are running version {0} of Java."
-msgstr "Używana wersja {0} Java"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Ta wersja nie jest obsługiwana przez {0} od {1} i odradza się jej używanie."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"Program JOSM niedługo przestanie działać z tą wersją. Zaleca się uaktualnić "
-"Java do wersji {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Uaktualnić?"
-
 msgid "reserved"
 msgstr "zarezerwowane"
 
@@ -15788,22 +15976,6 @@ msgstr "Podejrzane znaki w kluczu:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Wartość jest zbyt długa (maksymalnie {0} znaków):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Wkleić te znaczniki?"
-
-msgid "Clear buffer"
-msgstr "Wyczyść bufor"
-
-msgid "Ignore warnings"
-msgstr "Zignoruj ostrzeżenia"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p>Nie można wkleić znaczników ze schowka. Nie zawiera on żadnego "
-"obiektu JOSM bądź odpowiedniego tekstu.</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Nie można usunąć pliku {0}"
 
@@ -15828,123 +16000,15 @@ msgstr[0] "dzień"
 msgstr[1] "dni"
 msgstr[2] "dni"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr "Nie udało się wczytać schematu XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Błąd programu"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Wystąpił nieoczekiwany wyjątek.\n"
-"Zazwyczaj winny jest błąd oprogramowania. Jeśli używana jest najnowsza "
-"wersja JOSM, proszę rozważyć zgłoszenie błędu."
-
-msgid "Debug information"
-msgstr "Informacje diagnozowania błędów"
-
-msgid "Manually report at:"
-msgstr "Strona ręcznego zgłaszania błędów:"
-
-msgid "Is JOSM up to date?"
-msgstr "Uaktualnienia programu"
-
-msgid "Send bug report"
-msgstr "Wyślij raport o błędach"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Jeśli uruchomiona jest najnowsza wersja programu i wtyczek, proszę zgłosić "
-"błąd za pośrednictwem systemu śledzenia błędów.\n"
-"Informacje o błędzie powinny zostać wypełnione automatycznie. Proszę "
-"dołączyć informacje o tym jak odtworzyć błąd i zawrzeć tak wiele szczegółów, "
-"jak to tylko możliwe."
-
-msgid "Report Bug"
-msgstr "Zgłoś błąd"
-
-msgid "Suppress this error for this session."
-msgstr "Pomijanie tego błędu dla tej sesji"
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Nie pokazuj więcej raportów z błędami dla tej sesji."
-
-msgid "Ignore this error."
-msgstr "Zignoruj ten błąd"
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Nie udało się zgłosić błędu. Proszę zgłosić błąd przy użyciu strony "
 "internetowej:"
 
-msgid "Include the system status report."
-msgstr "Załączenie raportu stanu systemu"
-
-msgid "Include information about the data you were working on."
-msgstr "Załączenie informacji na temat opracowywanych danych"
-
-msgid "Include all stack traces."
-msgstr "Załączenie zrzutów stosu"
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Uruchomiona wersja JOSM to {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "Wyszukiwanie aktualizacji..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Wystąpił błąd podczas sprawdzania czy program jest aktualny."
-
-msgid "JOSM is up to date."
-msgstr "Program JOSM jest aktualny."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"JOSM jest nieaktualny. Aktualna wersja to {0}. Proszę spróbować uaktualnić "
-"program."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Przed zgłoszeniem błędu, proszę upewnić się, że zainstalowano najnowszą "
-"wersję programu JOSM z tej strony:"
-
-msgid "Update JOSM"
-msgstr "Uaktualnij JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19672,9 +19736,6 @@ msgstr "Zawartość"
 msgid "notice"
 msgstr "tablica informacyjna"
 
-msgid "history"
-msgstr "tablica historyczna"
-
 msgid "nature"
 msgstr "tablica przyrodnicza"
 
@@ -20250,6 +20311,9 @@ msgstr "Opieka społeczna"
 msgid "Nursing Home"
 msgstr "Dom opieki"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Dom grupowy"
 
@@ -22395,7 +22459,7 @@ msgstr "biust"
 
 msgctxt "memorial"
 msgid "plaque"
-msgstr "tablica"
+msgstr "tabliczka"
 
 msgctxt "memorial"
 msgid "stele"
@@ -22692,6 +22756,9 @@ msgstr "Upominki/pamiątki"
 msgid "Variety Store"
 msgstr "Sklep z różnościami"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Bukmacher"
 
@@ -23553,6 +23620,78 @@ msgstr "Obszar biur i usług"
 msgid "Industrial"
 msgstr "Obszar przemysłowy"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garaże"
 
@@ -24210,7 +24349,7 @@ msgid "ways supported by (on top of) the bridge"
 msgstr ""
 
 msgid "ways passing under the bridge"
-msgstr ""
+msgstr "drogi przebiegające pod mostem"
 
 msgid "way forming the outline footprint"
 msgstr ""
@@ -24219,7 +24358,7 @@ msgid "edge ways parallel to ''across''"
 msgstr ""
 
 msgid "ways passing through the tunnel"
-msgstr ""
+msgstr "drogi przebiegające przez tunel"
 
 msgid "edge ways parallel to ''through''"
 msgstr ""
@@ -24237,7 +24376,7 @@ msgid "Mapbox Satellite"
 msgstr "Mapbox - zdjęcia satelitarne"
 
 msgid "DigitalGlobe Premium Imagery"
-msgstr ""
+msgstr "DigitalGlobe: zdjęcia premium"
 
 msgid ""
 "DigitalGlobe-Premium is a mosaic composed of DigitalGlobe basemap with "
@@ -24246,7 +24385,7 @@ msgid ""
 msgstr ""
 
 msgid "DigitalGlobe Standard Imagery"
-msgstr ""
+msgstr "DigitalGlobe: zdjęcia zwykłe"
 
 msgid ""
 "DigitalGlobe-Standard is a curated set of imagery covering 86% of the "
@@ -24254,6 +24393,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -24282,7 +24424,7 @@ msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap - ślady GPS"
 
 msgid "Public GPS traces uploaded to OpenStreetMap."
-msgstr ""
+msgstr "Publiczne ślady GPS wysłane do OpenStreetMap."
 
 msgid "Public Transport (ÖPNV)"
 msgstr "Transport publiczny (ÖPNV)"
@@ -25006,6 +25148,9 @@ msgstr "Kataster"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -25116,15 +25261,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -25607,7 +25743,7 @@ msgid "Będzin: Ortofotomapa 2013 (aerial image)"
 msgstr "Będzin: Ortofotomapa 2013 (zdjęcia lotnicze)"
 
 msgid "Będzin: Budynki (buildings)"
-msgstr "Będzin: Budynki  (budynki)"
+msgstr "Będzin: Budynki (budynki)"
 
 msgid "Bytom: Ortofotomapa 2012 (aerial image)"
 msgstr "Bytom: Ortofotomapa 2012 (zdjęcia lotnicze)"
@@ -26113,7 +26249,7 @@ msgid "imagico.de OSM images for mapping: Rwenzori Mountains 2016"
 msgstr ""
 
 msgid "Ukraine - Orthophotomaps 2012"
-msgstr ""
+msgstr "Ukraina - Ortofotomapy 2012"
 
 msgid "Works only from within Ukraine or with an Ukrainian proxy server."
 msgstr ""
@@ -26767,7 +26903,7 @@ msgid "Landsat 233055"
 msgstr ""
 
 msgid "Recent Landsat imagery"
-msgstr ""
+msgstr "Ostatnie zdjęcia Landsat"
 
 msgid "Even housenumber in odd address interpolation."
 msgstr ""
@@ -27282,11 +27418,16 @@ msgid ""
 "Provides Apache Commons library components. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Dostarcza składniki biblioteki Apache Commons. Nie przeznaczona do "
+"instalowania bezpośrednio przez użytkownika ale jako zależność dla innych "
+"wtyczek."
 
 msgid ""
 "Provides Apache HTTP library. Not meant to be installed directly by users, "
 "but rather as a dependency for other plugins."
 msgstr ""
+"Dostarcza bibliotekę Apache HTTP. Nie przeznaczona do instalowania "
+"bezpośrednio przez użytkownika ale jako zależność dla innych wtyczek."
 
 msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
@@ -27326,11 +27467,15 @@ msgid ""
 "Imports proprietary CSV files of the Columbus/Visiontac V-900 GPS logger "
 "into a GPX layer."
 msgstr ""
+"Importuje własnościowe pliki CSV rejestratora GPS Columbus/Visiontac V-900 "
+"do warstwy GPX."
 
 msgid ""
 "Implements a command line and enables to create your commands. See link for "
 "standard commands (arc, circle etc.)"
 msgstr ""
+"Implementuje wiersz poleceń i umożliwia tworzenie własnych poleceń. Proszę "
+"sprawdzić odnośnik dla typowych poleceń (łuk, okrąg itp.)."
 
 msgid "Tool for conflating data (matching and merging)."
 msgstr ""
@@ -27339,7 +27484,7 @@ msgid "Downloads new data when you pan/zoom"
 msgstr "Pobiera nowe dany podczas przesuwania lub przybliżania widoku."
 
 msgid "Create a grid of ways."
-msgstr "Twórz siatki linii."
+msgstr "Tworzy siatki linii."
 
 msgid "Customization of public public transport stops."
 msgstr ""
@@ -27352,6 +27497,8 @@ msgid ""
 "Allows to import various file formats into JOSM directly. Currently "
 "supported: TangoGPS, Garmin Trainings Center TCX."
 msgstr ""
+"Umożliwia bezpośrednie importowanie wielu formatów plików. Aktualnie "
+"obsługiwane: TangoGPS, Garmin Trainings Center TCX."
 
 msgid "Download your GPX tracks from openstreetmap.org"
 msgstr "Pobiera ślady GPX z openstreetmap.org."
@@ -27372,16 +27519,19 @@ msgid ""
 "Allows the user to anonymize timestamps and delete parts of huge GPX tracks "
 "very fast."
 msgstr ""
-"Pozwala użytkownikom na anonimizowanie znaczników czasu i szybkie usunięcie "
-"części ogromnych śladów GPX."
+"Pozwala na anonimizowanie znaczników czasu i szybkie usunięcie części "
+"ogromnych śladów GPX."
 
 msgid ""
 "Provides the EJML library for other JOSM plugins. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Dostarcza bibliotekę EJML innym wtyczkom JOSM. Nie przeznaczona do "
+"instalowania bezpośrednio przez użytkownika ale jako zależność dla innych "
+"wtyczek."
 
 msgid "Shows the elevation profile and some statistical data of a GPX track."
-msgstr "Wyświetlas profil wysokości i pewne dane statystyczne śladu GPX."
+msgstr "Wyświetla profil wysokości i pewne dane statystyczne śladu GPX."
 
 msgid "Handling of French EPCIs (boundary=local_authority)"
 msgstr ""
@@ -27400,16 +27550,20 @@ msgid ""
 msgstr ""
 
 msgid "Allows you to view a GeoJSON file as a layer."
-msgstr ""
+msgstr "Umożliwia przeglądanie plików GeoJSON jako warstwy."
 
 msgid ""
 "Provides parts of the GeoTools library for other JOSM plugins. Not meant to "
 "be installed directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Dostarcza składniki biblioteki GeoTools innym wtyczkom JOSM. Nie "
+"przeznaczona do instalowania bezpośrednio przez użytkownika ale jako "
+"zależność dla innych"
 
 msgid ""
 "Download GPS points from Globalsat dg100 data logger directly in JOSM."
 msgstr ""
+"Pobiera bezpośrednio w JOSM punkty GPS z rejestratora danych Globalsat dg100."
 
 msgid ""
 "Analyse a set of GPS points to obtain its centre and direction of spread."
@@ -27421,27 +27575,33 @@ msgid "Allows to filter out unnecessary GPS tracks"
 msgstr "Pozwala na odfiltrowanie niepotrzebnych śladów GPS."
 
 msgid "Visualizes routing information as a routing graph."
-msgstr ""
+msgstr "Wizualizuje informacje o trasie za pomocą grafu."
 
 msgid ""
 "Provides the GSON library for other JOSM plugins. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Dostarcza bibliotekę GSOM innym wtyczkom JOSM. Nie przeznaczona do "
+"instalowania bezpośrednio przez użytkownika ale jako zależność dla innych "
+"wtyczek."
 
 msgid "Simple tool to tag house numbers."
-msgstr "Proste narzędzie do tagowania numerów domów."
+msgstr "Dostarcza proste narzędzie do nadawania znaczników numerów domów."
 
 msgid "Generate Imagery XML bounds from a multipolygon"
 msgstr ""
-"Wygeneruj granice XML dla warstwy obrazu na podstawie wielokąta złożonego."
+"Generuje granice XML dla warstwy obrazu na podstawie wielokąta złożonego."
 
 msgid "Export tiles from the imagery layer cache into the file system."
 msgstr ""
+"Eksportuje kafelki z pamięci podręcznej warstwy podkładu do systemu plików."
 
 msgid ""
 "Database of imagery offsets: share and aquire imagery offsets with one "
 "button."
 msgstr ""
+"Udostępnia bazę danych przesunięć podkładów: udostępnianie i ustalanie "
+"przesunięć jednym kliknięciem."
 
 msgid ""
 "Another plugin to match images to the waypoints in a GPX file. A match is "
@@ -27450,7 +27610,7 @@ msgid ""
 msgstr ""
 
 msgid "Plugin for importing spatial referenced images"
-msgstr ""
+msgstr "Importuje obrazy określone przestrzennie."
 
 msgid "Import vector graphics (SVG)"
 msgstr "Importuje grafikę wektorową (SVG)"
@@ -27461,7 +27621,7 @@ msgid ""
 msgstr ""
 
 msgid "This plugin simplifies the mapping and editing of indoor corridors."
-msgstr ""
+msgstr "Ułatwia mapowanie i edytowanie wewnętrznych korytarzy."
 
 msgid ""
 "Gives assistance for the mapping process of indoor OSM building data. "
@@ -27480,12 +27640,18 @@ msgid ""
 "Provides Java Native Access (JNA) library. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
+"Dodstarcza bibliotekę Java Native Access (JNA). Nie przeznaczona do "
+"instalowania bezpośrednio przez użytkownika ale jako zależność dla innych "
+"wtyczek."
 
 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 ""
+"Dostarcza bibliotekę Java Topology Suite (JTS) i związane z nią narzędzia. "
+"Nie przeznaczona do instalowania bezpośrednio przez użytkownika ale jako "
+"zależność dla innych wtyczek."
 
 msgid ""
 "creates a channel digraph and checks a subset of channels if it is a "
@@ -27508,8 +27674,8 @@ msgid ""
 "Provides the Log4j library for other JOSM plugins. Not meant to be installed "
 "directly by users, but rather as a dependency for other plugins."
 msgstr ""
-"Dostarcza bibliotekę Log4j dla innych wtyczek JOSM. Nie ma potrzeby "
-"instalacji bezpośrednio przez użytkownika, jedynie jako zależność dla innych "
+"Dostarcza bibliotekę Log4j innym wtyczkom JOSM. Nie przeznaczona do "
+"instalowania bezpośrednio przez użytkownika ale jako zależność dla innych "
 "wtyczek."
 
 msgid ""
@@ -27520,6 +27686,7 @@ msgstr ""
 
 msgid "Allows the user to work with pictures hosted at mapillary.com"
 msgstr ""
+"Pozwala użytkownikom używać obrazów przechowywanych na mapillary.com."
 
 msgid ""
 "Provide a measurement dialog and a layer to measure length and angle of "
@@ -27545,20 +27712,24 @@ msgid ""
 "Use your system''s password manager to store the API username and password. "
 "(KWallet and gnome-keyring are supported.)"
 msgstr ""
+"Używa systemowego menedżera haseł do przechowywania nazwy użytkownika i "
+"hasła API. Obługiwane są gnome-keyring i KWallet."
 
 msgid ""
 "Disallow using JOSM forever (WARNING: this plugin prevents JOSM from loading "
 "and is hard to rid of)"
 msgstr ""
+"Uniemożliwia używanie JOSM na zawsze. (Ostrzeżenie: ta wtyczka zapobiega "
+"wczytaniu JOSM i ciężko się jej pozbyć.)"
 
 msgid "Import OSM data in o5m format"
-msgstr ""
+msgstr "Importuje dane OSM w formacie o5m."
 
 msgid "Convert data from Open Data portals to OSM layer"
-msgstr ""
+msgstr "Konwertuje dane z portali Open Data do warstwy OSM."
 
 msgid "extended options for editing opening_hours"
-msgstr "Rozszerza opcje edycji opening_hours"
+msgstr "Rozszerza opcje edycji znacznika opening_hours."
 
 msgid ""
 "Allows opening gpx/osm files that intersect the currently visible screen area"
@@ -27594,6 +27765,8 @@ msgid ""
 "Write gps position info to the image file header. Run this feature from the "
 "right click menu of the image layer."
 msgstr ""
+"Zapisuje położenie gps do nagłówka pliku obrazu. Funkcja uruchamiana "
+"poleceniem menu podręcznego warstwy obrazu."
 
 msgid "Make photos movable and position them on the map."
 msgstr ""
@@ -27626,7 +27799,7 @@ msgstr ""
 
 msgid ""
 "This plugin simplifies the mapping and editing of public transport routes."
-msgstr "Upraszcza mapowanie i edycję tras transportu publicznego."
+msgstr "Ułatwia mapowanie i edytowanie tras transportu publicznego."
 
 msgid "Displays stops of selected public transport routes as graph"
 msgstr "Wyświetla przystanki wybranych tras transportu publicznego jako graf"
@@ -27646,6 +27819,8 @@ msgid ""
 "Expand a simple intersection to a roundabout in gradual steps. Select an "
 "intersection node or a roundabout and press Crtl-Shift-R"
 msgstr ""
+"Zastępuje w kilku krokach proste skrzyżowanie rondem. Należy wbrać wezeł "
+"przecięcia lub rondo i wcisnąć Ctrl-Shift-R."
 
 msgid ""
 "Plugin for tagging of objects based on a selection of road signs. The dialog "
@@ -27658,6 +27833,8 @@ msgid ""
 "Renders routes (bus, hiking trails, bicycle routes, ..). Route types must be "
 "defined in routes.xml file in plugin directory"
 msgstr ""
+"Renderuje trasy (autobusowe, piesze, rowerowe, ...). Typy tras należy "
+"zdefiniować w pliku routes.xml znajdującym się w katalogu wtyczki."
 
 msgid "Provides routing capabilities."
 msgstr "Udostępnia możliwość wyznaczania tras."
@@ -27681,10 +27858,10 @@ msgid ""
 msgstr ""
 
 msgid "Edit features for OpenSeaMap"
-msgstr "Narzędzia i ułatwienia edycji dla OpenSeaMap"
+msgstr "Dostarcza narzędzia do edycji OpenSeaMap."
 
 msgid "Allows to draw splines"
-msgstr "Umożliwia rysowanie krzywych sklejanych"
+msgstr "Umożliwia rysowanie krzywych sklejanych."
 
 msgid ""
 "Allows to edit traffic information and export it to the urban mobility "
@@ -27742,7 +27919,7 @@ msgid "Plugin to digital sign OSM-Data"
 msgstr ""
 
 msgid "Editor to add turn lanes tags in highways"
-msgstr ""
+msgstr "Dodaje do dróg znaczniki pasów skrętu."
 
 msgid ""
 "Provides a straightforward GUI for adding, editing and deleting turn lanes."
@@ -27756,7 +27933,7 @@ msgstr ""
 "ograniczeń skrętu do bazy danych OpenStreetMap."
 
 msgid "Allows undeleting object from OSM database"
-msgstr ""
+msgstr "Umożliwia przywrócenie obiektu usuniętego z bazy danych OSM."
 
 msgid "Several utilities that make your life easier."
 msgstr "Udostępnia kilka narzędzi ułatwiających korzystanie z programu."
@@ -27771,8 +27948,9 @@ msgid ""
 "Supports downloading tiled, scanned maps from walking-papers.org. This "
 "plugin is still under early development and may be buggy."
 msgstr ""
-"Wspiera wczytywanie zeskanowany map ze strony walking-papers.org. Wtyczka ta "
-"jest we wczesnej fazie rozwoju i może zawierać błędy."
+"Obsługuje wczytywanie zeskanowanych i podzielonych na fragmenty map ze "
+"strony walking-papers.org. Wtyczka jest we wczesnej fazie rozwoju i może "
+"zawierać błędy."
 
 msgid "Easy downloading along a long set of interconnected ways"
 msgstr ""
@@ -33059,13 +33237,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -33569,6 +33753,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33577,6 +33764,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
@@ -34878,7 +35068,7 @@ msgid "The bounding box is too big."
 msgstr ""
 
 msgid "Cannot place a node outside of the world."
-msgstr "Nie mogę umieścić węzła poza obszarem świata."
+msgstr "Nie można umieścić węzła poza obszarem świata."
 
 msgid "Layer to draw OSM error"
 msgstr ""
@@ -35864,6 +36054,7 @@ msgid ""
 "The two ways participating in the turn restriction <strong>aren''t "
 "connected.</strong>"
 msgstr ""
+"Dwie drogi oznaczone w ograniczeniu skrętu <strong>nie są połączone</strong>."
 
 msgid ""
 "Make sure you add one or more via objects (nodes or ways) to the turn "
@@ -35939,7 +36130,7 @@ msgid ""
 msgstr ""
 
 msgid "A way is required instead."
-msgstr ""
+msgstr "Zamiast tego wymagana jest droga."
 
 msgid "Delete the member from the turn restriction"
 msgstr ""
@@ -35949,21 +36140,27 @@ msgstr ""
 
 msgid "Unable to undelete node {0}. Object has likely been redacted"
 msgstr ""
+"Nie można przywrócić usuniętego węzła {0}. Obiekt prawdopodobnie został "
+"zredagowany."
 
 msgid "Unable to undelete way {0}. Object has likely been redacted"
 msgstr ""
+"Nie można przywrócić usuniętej linii {0}. Obiekt prawdopodobnie został "
+"zredagowany."
 
 msgid "Unable to undelete relation {0}. Object has likely been redacted"
 msgstr ""
+"Nie można przywrócić usuniętej relacji {0}. Obiekt prawdopodobnie został "
+"zredagowany."
 
 msgid "Undelete object..."
 msgstr "Przywróć obiekt..."
 
 msgid "Undelete object by id"
-msgstr ""
+msgstr "Przywraca usunięty obiekt na podstawie identyfikatora"
 
 msgid "Undelete Object"
-msgstr "Przywróć obiekt"
+msgstr "Przywracanie obiektu"
 
 msgid "Undelete object"
 msgstr "Przywróć obiekt"
@@ -35972,15 +36169,17 @@ msgid ""
 "Enter the type and ID of the objects that should be undeleted, e.g., ''n1 "
 "w2''"
 msgstr ""
+"Proszę wprowadzić rodziaj i identyfikator usuniętych obiektów, które należy "
+"przywrócić, np. „n1 w2”."
 
 msgid "Select if the data should be added into a new layer"
-msgstr "Zaznacz jeśli dane powinny być dodane do nowej warstwy"
+msgstr "Dodaje dane do nowej warstwy"
 
 msgid "Start undeleting"
-msgstr ""
+msgstr "Rozpoczyna przywracanie"
 
 msgid "Close dialog and cancel"
-msgstr ""
+msgstr "Zamyka okno i przerywa działanie"
 
 msgid "Add nodes at intersections"
 msgstr "Dodaj węzły na przecięciach"
@@ -36051,6 +36250,8 @@ msgid ""
 "The selected way is not a split way, please select split points or split way "
 "too."
 msgstr ""
+"Zaznaczona linia nie jest rodzielaną linią. Prosze zaznaczyć rozdzielające "
+"węzły wraz z rozdzielaną linią lub bez."
 
 msgid "The selected nodes can not be consecutive nodes in the object."
 msgstr "Zaznaczone węzły nie mogą być kolejnymi węzłami obiektu."
@@ -36156,11 +36357,11 @@ msgstr ""
 "Proszę zmodyfikować własne adresy URL i zaznaczyć jeden używany za pomocą "
 "narzędzia<br/> <b>{key}</b> jest zastępowany wartością "
 "znacznika<br/> <b>{#id}</b> jest zastępowany identyfikatorem "
-"obiektu<br/> <b>{#type}</b> jest zastępowany ciągiem "
-"\"node\",\"way\" lub \"relation\"<br/> <b>{#lat} , "
-"{#lon}</b> jest zastępowany szerokością/długością geograficzną "
-"środka ekranu<br/> Można wczytać ręcznie ustawienia z pliku "
-"<b>customurl.txt</b> znajdującego się w katalogu JOSM."
+"obiektu<br/> <b>{#type}</b> jest zastępowany ciągiem „node”,„way” "
+"lub „relation”<br/> <b>{#lat} , {#lon}</b> jest "
+"zastępowany szerokością/długością geograficzną środka ekranu<br/> Można "
+"wczytać ręcznie ustawienia z pliku <b>customurl.txt</b> znajdującego się w "
+"katalogu JOSM."
 
 msgid "Custom URL configuration"
 msgstr "Własne adresy URL"
diff --git a/i18n/po/pt.po b/i18n/po/pt.po
index 84d5ad1..5282c78 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-04-07 16:38+0000\n"
 "Last-Translator: Rui <xande6ruz at yandex.com>\n"
 "Language-Team: Portuguese <pt at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 04:57+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:57+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: pt\n"
 
@@ -55,54 +55,9 @@ msgstr "Condições de Utilização da Imagem de Fundo"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "A abertura do link não é suportada pela plataforma atual (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "A executar arranque da plataforma"
-
-msgid "Building main menu"
-msgstr "A construir o menu inicial"
-
-msgid "Help"
-msgstr "Ajuda"
-
-msgid "Initializing internal boundaries data"
-msgstr "A inicializar os dados de fronteiras internas"
-
-msgid "Initializing OSM API"
-msgstr "A inicializar a API do OpenStreetMap"
-
-msgid "Initializing internal traffic data"
-msgstr "A inicializar os dados de tráfego interno"
-
-msgid "Initializing validator"
-msgstr "A inicializar o mecanismo de validação"
-
-msgid "Initializing presets"
-msgstr "A inicializar modelos de etiquetas"
-
-msgid "Initializing map styles"
-msgstr "A inicializar os estilos de mapa"
-
-msgid "Loading imagery preferences"
-msgstr "A carregar preferências de imagens de fundo"
-
-msgid "Updating user interface"
-msgstr "A atualizar a interface"
-
 msgid "Failed to save default preferences."
 msgstr "Não foi possível gravar as preferências padrão."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "A ignorar o endereço web inválido: \"{0}\""
-
-msgid "Warning"
-msgstr "Aviso"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "O endereço web do ficheiro não é válido e será ignorado: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "O parâmetro \"downloadgps\" não aceita nomes nem URLs de ficheiros"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -186,6 +141,9 @@ msgstr "Cancelar"
 msgid "Click to abort launching external browsers"
 msgstr "Clique para interromper a abertura de navegadores externos"
 
+msgid "Warning"
+msgstr "Aviso"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Selecione pelo menos um nó, linha ou relação que já tenha sido enviado."
@@ -485,14 +443,11 @@ msgstr ""
 "* 1 linha que não intersecte a ela mesma com 2 nós no máximo;\n"
 "* 3 nós."
 
-msgid "Download from OSM..."
-msgstr "Descarregar do OpenStreetMap..."
-
-msgid "Download map data from the OSM server."
-msgstr "Descarrega mapas dos servidores do OpenStreetMap."
+msgid "Download data"
+msgstr "Descarregar dados"
 
-msgid "Please select a download area first."
-msgstr "Por favor selecione primeiro uma área a descarregar."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -501,9 +456,6 @@ msgstr ""
 "<html>Esta ação irá necessitar de {0} pedidos individuais.<br>Quer "
 "continuar?</html>"
 
-msgid "Download data"
-msgstr "Descarregar dados"
-
 msgid "Download notes in current view"
 msgstr "Descarregar erros reportados na vista atual"
 
@@ -572,6 +524,9 @@ msgstr "Nada a exportar. Obtenha primeiro alguns dados."
 msgid "Export GPX file"
 msgstr "Exportar ficheiro GPX"
 
+msgid "Help"
+msgstr "Ajuda"
+
 msgid "History"
 msgstr "Histórico"
 
@@ -1141,23 +1096,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Por favor selecione linhas com ângulos de aproximadamente 90 ou 180 graus."
 
-msgid "Download from Overpass API ..."
-msgstr "Descarregar da API Overpass..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Descarregar dados do mapa da API Overpass."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Colar"
 
@@ -2553,36 +2491,6 @@ msgstr "Selecionar relação (adicionar)"
 msgid "Select relation"
 msgstr "Selecionar relação"
 
-msgid "<not>"
-msgstr "<não>"
-
-msgid "<or>"
-msgstr "<ou>"
-
-msgid "<xor>"
-msgstr "<xou>"
-
-msgid "<left parent>"
-msgstr "<pai esquerda>"
-
-msgid "<right parent>"
-msgstr "<pai direita>"
-
-msgid "<colon>"
-msgstr "<vírgula>"
-
-msgid "<equals>"
-msgstr "<igual a>"
-
-msgid "<key>"
-msgstr "<chave>"
-
-msgid "<question mark>"
-msgstr "<ponto interrogação>"
-
-msgid "<end-of-file>"
-msgstr "<final-do-ficheiro>"
-
 msgid "Search..."
 msgstr "Procurar..."
 
@@ -2886,97 +2794,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "A pesquisar em {0} objeto"
 msgstr[1] "A pesquisar em {0} objetos"
 
-msgctxt "search"
-msgid "CS"
-msgstr "MAI"
-
-msgctxt "search"
-msgid "CI"
-msgstr "MIN"
-
-msgctxt "search"
-msgid "RX"
-msgstr "ER"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "T"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"A expressão regular \"{0}\" teve um erro de interpretação na posição {1}, "
-"erro completo:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"A expressão regular \"{0}\" contém erros:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Não foi possível processar a marca temporal ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Esperado {0} após {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Esperado um intervalo de identificadores de objetos"
-
-msgid "Range of changeset ids expected"
-msgstr "Esperado um intervalo de identificadores de conjuntos de alterações"
-
-msgid "Range of versions expected"
-msgstr "Esperado um intervalo de identificadores de versões"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"A chave não pode estar em branco quando o operador da etiqueta está a ser "
-"usado. Exemplo: chave=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipo de objeto desconhecido: {0}. Os valores permitidos são nó, linha ou "
-"relação"
-
-msgid "Positive integer expected"
-msgstr "Esperado um integral positivo"
-
-msgid "Range of numbers expected"
-msgstr "Esperado um intervalo de números"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Token inesperado. Esperado {0}, encontrado {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Não foi possível processar o seletor MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Token inesperado: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parâmetro em falta para OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Parâmetro em falta para XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Falta um parâmetro em NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "A truncar o valor da etiqueta ''{0}'' no objeto eliminado {1}"
 
@@ -2997,9 +2814,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Violação de Capacidades da API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependência recíproca entre relações:"
-
 msgid "Removed obsolete tags"
 msgstr "Etiquetas em desuso removidas"
 
@@ -3379,66 +3193,12 @@ msgstr "Funções nas relações referentes a"
 msgid "Automatic tag correction"
 msgstr "Correção automática de etiquetas"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Não foi possível criar o diretório {0}, a gravação automática será desativada"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-"Não foi possível criar o ficheiro {0}, será usado outro nome de ficheiro"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Erro IO ao criar o ficheiro. Não será feita a gravação automática da cópia "
-"de segurança: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-"Não foi possível eliminar o ficheiro da cópia de segurança antigo {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Foi feita uma cópia de segurança"
-
-msgid "Restoring files"
-msgstr "A restaurar ficheiros"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Não foi possível eliminar o ficheiro da cópia de segurança {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Não foi possível eliminar o ficheiro PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-"Não foi possível eliminar o ficheiro guardado da cópia de segurança {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valor de latitude \"{0}\" incorreto"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valor de longitude \"{0}\" incorreto"
 
-msgid "Question"
-msgstr "Questão"
-
-msgid "Message"
-msgstr "Mensagem"
-
-msgid "Enter text"
-msgstr "Inserir texto"
-
-msgid "Installing plugins"
-msgstr "A instalar módulos"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>O ficheiro de preferências pede para adicionar as preferências a "
-"<b>{0}</b>,<br/> mas o seu valor padrão é desconhecido neste momento.<br/> "
-"Por favor ative manualmente a função correspondente e tente importar de novo."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Não foi possível criar o diretório que falta da cache: {0}"
 
@@ -3550,6 +3310,15 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "A definição {0} das preferências foi removida por não ser mais utilizada."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>O ficheiro de preferências pede para adicionar as preferências a "
+"<b>{0}</b>,<br/> mas o seu valor padrão é desconhecido neste momento.<br/> "
+"Por favor ative manualmente a função correspondente e tente importar de novo."
+
 msgid "Metric"
 msgstr "Métrico"
 
@@ -3689,6 +3458,17 @@ msgstr ""
 msgid "Note"
 msgstr "Erro no mapa reportado"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Não foi possível obter o Token de Acesso OAuth do gestor de credenciais."
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "O gestor de credenciais atual é do tipo ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Não foi possível gravar o Token de Acesso OAuth no gestor de credenciais."
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Identificador (ID) > 0 esperado. Obteve-se {0}."
 
@@ -3705,6 +3485,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Um objeto com o identificador = 0 não pode ser invisível."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependência recíproca entre relações:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3750,6 +3533,59 @@ msgstr "A fundir dados"
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Teste ''{0}'' feito em {1}"
 
+msgid "incomplete"
+msgstr "incompleto"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Nº porta {0} em {1}"
+
+msgid "House number {0}"
+msgstr "Número de porta {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nó"
+msgstr[1] "nós"
+
+msgid "highway"
+msgstr "via"
+
+msgid "railway"
+msgstr "ferrovia"
+
+msgid "waterway"
+msgstr "curso de água"
+
+msgid "landuse"
+msgstr "uso do solo"
+
+msgid "building"
+msgstr "edifício"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nó"
+msgstr[1] "{0} nós"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membro"
+msgstr[1] "{0} membros"
+
+msgid "public transport"
+msgstr "transporte público"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relação"
+msgstr[1] "relações"
+
+msgid "Changeset {0}"
+msgstr "Conjunto de alterações {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Erro no filtro <code>{0}</code>:<br>{1}"
 
@@ -3786,21 +3622,11 @@ msgstr ""
 "Não é possível fundir objetos com identificadores diferentes. Este "
 "identificador é {0}, o outro é {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nó"
-msgstr[1] "nós"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "linha"
 msgstr[1] "linhas"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relação"
-msgstr[1] "relações"
-
 msgid "closedway"
 msgstr "linha_fechada"
 
@@ -3838,6 +3664,127 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "O parâmetro {0} não está no intervalo 0..{1}. Obteve-se ''{2}''."
 
+msgid "<not>"
+msgstr "<não>"
+
+msgid "<or>"
+msgstr "<ou>"
+
+msgid "<xor>"
+msgstr "<xou>"
+
+msgid "<left parent>"
+msgstr "<pai esquerda>"
+
+msgid "<right parent>"
+msgstr "<pai direita>"
+
+msgid "<colon>"
+msgstr "<vírgula>"
+
+msgid "<equals>"
+msgstr "<igual a>"
+
+msgid "<key>"
+msgstr "<chave>"
+
+msgid "<question mark>"
+msgstr "<ponto interrogação>"
+
+msgid "<end-of-file>"
+msgstr "<final-do-ficheiro>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"A expressão regular \"{0}\" teve um erro de interpretação na posição {1}, "
+"erro completo:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"A expressão regular \"{0}\" contém erros:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Não foi possível processar a marca temporal ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Esperado {0} após {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Esperado um intervalo de identificadores de objetos"
+
+msgid "Range of changeset ids expected"
+msgstr "Esperado um intervalo de identificadores de conjuntos de alterações"
+
+msgid "Range of versions expected"
+msgstr "Esperado um intervalo de identificadores de versões"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"A chave não pode estar em branco quando o operador da etiqueta está a ser "
+"usado. Exemplo: chave=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipo de objeto desconhecido: {0}. Os valores permitidos são nó, linha ou "
+"relação"
+
+msgid "Positive integer expected"
+msgstr "Esperado um integral positivo"
+
+msgid "Range of numbers expected"
+msgstr "Esperado um intervalo de números"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Não foi possível processar o seletor MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Token inesperado: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parâmetro em falta para OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Parâmetro em falta para XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Falta um parâmetro em NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Token inesperado. Esperado {0}, encontrado {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "MAI"
+
+msgctxt "search"
+msgid "CI"
+msgstr "MIN"
+
+msgctxt "search"
+msgid "RX"
+msgstr "ER"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "T"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Não foi possível carregar a classe ''{0}'' de renderização do mapa porque "
@@ -3924,6 +3871,125 @@ msgstr "Era esperado o elemento ''{0}'', mas foi obtido ''{1}''"
 msgid "value expected"
 msgstr "valor esperado"
 
+msgid "Short Description:"
+msgstr "Descrição Resumida:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Página web:"
+
+msgid "Description:"
+msgstr "Descrição"
+
+msgid "Version:"
+msgstr "Versão :"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versão mínima do JOSM:"
+
+msgid "by {0}"
+msgstr "por {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "Padrão do JOSM (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estilo do JOSM de origem para ser utilizado como base para estilos de "
+"cobertura intercambiáveis em tempo de execução"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "estilo principal do Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Modelo de Etiquetas JOSM"
+
+msgid "The default preset for JOSM"
+msgstr "Os modelos de etiquetas originais do JOSM"
+
+msgid "Addresses"
+msgstr "Endereços"
+
+msgid "Checks for errors on addresses"
+msgstr "Verifica se existem erros nos endereços"
+
+msgid "Tag combinations"
+msgstr "Conbinações de etiquetas"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Verifica se faltam etiquetas adicionais ou mal aplicadas"
+
+msgid "Deprecated features"
+msgstr "Etiquetas em desuso"
+
+msgid "Checks for deprecated features"
+msgstr ""
+"Verifica se existem etiquetas que deixaram de ser utilizadas ou foram "
+"substituídas por outras"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Verifica se existem erros de geometria"
+
+msgid "Highways"
+msgstr "Vias"
+
+msgid "Checks for errors on highways"
+msgstr "Verifica se existem erros em vias"
+
+msgid "Multiple values"
+msgstr "Vários valores"
+
+msgid "Checks for wrong multiple values"
+msgstr "Verifica se existem etiquetas com vários valores"
+
+msgid "Numeric values"
+msgstr "Valores numéricos"
+
+msgid "Checks for wrong numeric values"
+msgstr "Verifica se existem erros em valores numéricos"
+
+msgid "Religion"
+msgstr "Religião"
+
+msgid "Checks for errors on religious objects"
+msgstr "Verifica se existem erros em objetos com etiquetas sobre religião"
+
+msgid "Relations"
+msgstr "Relações"
+
+msgid "Checks for errors on relations"
+msgstr "Verifica se existem errros em relações"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Etiquetas desnecessárias"
+
+msgid "Checks for unnecessary tags"
+msgstr "Verifica se existem etiquetas que não são necessárias"
+
+msgid "Wikipedia"
+msgstr "Wikipédia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Verifica se existem erros em etiquetas da Wikipédia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "A projeção UTM (''+proj=utm'') requer o parâmetro ''+zone=...''"
 
@@ -4121,9 +4187,6 @@ msgstr "O URL contém um fragmento inválido: {0}"
 msgid "URL validator"
 msgstr "Verificação de URL"
 
-msgid "Addresses"
-msgstr "Endereços"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Verifica se existem erros em endereços e relações de estrada associada "
@@ -4321,9 +4384,6 @@ msgstr "Nós em linhas duplicados"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Verifica se existem linhas com nós consecutivos idênticos."
 
-msgid "Highways"
-msgstr "Vias"
-
 msgid "Performs semantic checks on highways."
 msgstr "Faz a validação semântica das vias."
 
@@ -4906,9 +4966,6 @@ msgstr "tipo de curso de água {0}"
 msgid "boundary type {0}"
 msgstr "tipo de fronteira {0}"
 
-msgid "building"
-msgstr "edifício"
-
 msgid "area"
 msgstr "área"
 
@@ -5034,45 +5091,14 @@ msgstr "Não mostrar de novo (nesta sessão)"
 msgid "Do not show again (remembers choice)"
 msgstr "Não mostrar de novo este aviso"
 
-msgid "incomplete"
-msgstr "incompleto"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Nº porta {0} em {1}"
-
-msgid "House number {0}"
-msgstr "Número de porta {0}"
-
-msgid "highway"
-msgstr "via"
-
-msgid "railway"
-msgstr "ferrovia"
-
-msgid "waterway"
-msgstr "curso de água"
-
-msgid "landuse"
-msgstr "uso do solo"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nó"
-msgstr[1] "{0} nós"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membro"
-msgstr[1] "{0} membros"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "A ignorar o endereço web inválido: \"{0}\""
 
-msgid "public transport"
-msgstr "transporte público"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "O endereço web do ficheiro não é válido e será ignorado: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conjunto de alterações {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "O parâmetro \"downloadgps\" não aceita nomes nem URLs de ficheiros"
 
 msgid "Precondition violation"
 msgstr "Violação de pré-condição"
@@ -5162,6 +5188,70 @@ msgstr "Alinhamento"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Esperado um valor não-vazio para o parâmetro ''{0}'', obtido ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Versão do JAVA desatualizada"
+
+msgid "Update Java"
+msgstr "Atualizar o JAVA"
+
+msgid "You are running version {0} of Java."
+msgstr "Está a usar a versão do JAVA {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Esta versão já não é suportada por {0} desde {1} e não é recomendável a sua "
+"utilização."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"Brevemente o JOSM não funcionará com esta versão do Java; é recomendável "
+"atualizar para a versão do Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Quer atualizar agora?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "A executar arranque da plataforma"
+
+msgid "Building main menu"
+msgstr "A construir o menu inicial"
+
+msgid "Updating user interface"
+msgstr "A atualizar a interface"
+
+msgid "Initializing internal boundaries data"
+msgstr "A inicializar os dados de fronteiras internas"
+
+msgid "Initializing OSM API"
+msgstr "A inicializar a API do OpenStreetMap"
+
+msgid "Initializing internal traffic data"
+msgstr "A inicializar os dados de tráfego interno"
+
+msgid "Initializing validator"
+msgstr "A inicializar o mecanismo de validação"
+
+msgid "Initializing presets"
+msgstr "A inicializar modelos de etiquetas"
+
+msgid "Initializing map styles"
+msgstr "A inicializar os estilos de mapa"
+
+msgid "Loading imagery preferences"
+msgstr "A carregar preferências de imagens de fundo"
+
 msgid "usage"
 msgstr "utilização"
 
@@ -5665,6 +5755,88 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "O valor atual não é uma tela válida no nível de enquadramento (zoom) indicado"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Encontrou um bug no JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Ocorreu uma exceção inesperada.\n"
+"Isto é normalmente um erro de programação. Se estiver a usar a última versão "
+"do JOSM por favor considere reportar este erro aos programadores."
+
+msgid "Debug information"
+msgstr "Informações de depuração"
+
+msgid "Manually report at:"
+msgstr "Reportar manualmente em:"
+
+msgid "Is JOSM up to date?"
+msgstr "O JOSM está atualizado?"
+
+msgid "Send bug report"
+msgstr "Enviar relatório de erro"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Comunicar um Erro"
+
+msgid "Suppress this error for this session."
+msgstr "Suprimir este erro para esta sessão"
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Não mostrar mais avisos de erros nesta sessão."
+
+msgid "Ignore this error."
+msgstr "Ignorar este erro."
+
+msgid "Include the system status report."
+msgstr "Incluir o relatório do estado do sistema operativo."
+
+msgid "Include information about the data you were working on."
+msgstr "Incluir informações sobre os dados em que estava a trabalhar."
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr "A versão atual do JOSM que está a usar é {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "O JOSM está à procura de atualizações..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+"Ocorreu um erro ao tentar verificar se o JOSM que está a usar está "
+"atualizado."
+
+msgid "JOSM is up to date."
+msgstr "O JOSM está atualizado."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"O JOSM que está a usar está desatualizado, A versão atual é {0}. Tente "
+"atualizar o JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Antes de submeter um relatório de erro certifique-se que tem a última versão "
+"do JOSM disponível em:"
+
+msgid "Update JOSM"
+msgstr "Atualizar o JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflito em segundo plano: sem conflito"
 
@@ -6427,6 +6599,22 @@ msgstr ""
 "Os dados copiados contêm objetos incompletos. Ao colar, os objetos "
 "incompletos não são colados. Quer colar sem os objetos incompletos?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Quer colar estas etiquetas?"
+
+msgid "Clear buffer"
+msgstr "Limpar memória"
+
+msgid "Ignore warnings"
+msgstr "Ignorar avisos"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Desculpe, mas não é possível colar etiquetas da memória porque não "
+"contém nenhum elemento do JOSM ou texto adequado. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Apenas dos objetos selecionados"
 
@@ -7034,9 +7222,6 @@ msgstr "Fonte"
 msgid "Title:"
 msgstr "Título:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Estilo de origem, diretório interno:"
 
@@ -7154,9 +7339,6 @@ msgstr ""
 "O identificador de lista especificado é inválido\n"
 "Não é possível continuar."
 
-msgid "Relations"
-msgstr "Relações"
-
 msgid "Open a list of all relations."
 msgstr ""
 "Mostra o painel lateral com todas as relações existentes no conjunto de "
@@ -8699,29 +8881,6 @@ msgstr "O valor de latitude tem de ser no intervalo [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "O valor de longitude tem de ser no intervalo [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Fonte e tipo de dados:"
-
-msgid "OpenStreetMap data"
-msgstr "Mapas do OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Selecionar para descarregar dados de mapas do OpenStreetMap na área "
-"selecionada"
-
-msgid "Raw GPS data"
-msgstr "Trilhos GPS do OpenStreetMap"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Selecionar para descarregar trilhos GPS do OpenStreetMap na área selecionada "
-"(será criada uma camada GPX)"
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-"Selecione para descarregar erros reportados no mapa na área selecionada."
-
 msgid "Download as new layer"
 msgstr "Descarregar numa camada nova"
 
@@ -8758,34 +8917,12 @@ msgstr ""
 "visualização. Usar botão rotativo do meio do rato ou as teclas +/- para "
 "aumentar ou diminuir o enquadramento."
 
-msgid "No area selected yet"
-msgstr "Nenhuma área selecionada"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Tamanho da área demasiado grande; provavelmente o servidor recusará "
-"descarregar esta área"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Tamanho da área válido, provavelmente o servidor permitirá descarregar esta "
-"área"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Clique para fechar a janela e cancelar o descarregamento"
 
 msgid "Click to download the currently selected area"
 msgstr "Clique para descarregar a área selecionada"
 
-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>Não está selecionado<strong>{0}</strong> nem <strong>{1}</strong> nem "
-"<strong>{2}</strong>.<br>Por favor escolha o que quer descarregar: mapa do "
-"OpenStreetMap, trilhos GPS e/ou erros reportados no mapa.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Descarregar referentes (relações-pai)"
 
@@ -8808,6 +8945,100 @@ msgstr "Selecione se os membros da relação devem ser também descarregados"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Descarregar referentes (relações pai e linhas)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Fonte e tipo de dados:"
+
+msgid "OpenStreetMap data"
+msgstr "Mapas do OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Selecionar para descarregar dados de mapas do OpenStreetMap na área "
+"selecionada"
+
+msgid "Raw GPS data"
+msgstr "Trilhos GPS do OpenStreetMap"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Selecionar para descarregar trilhos GPS do OpenStreetMap na área selecionada "
+"(será criada uma camada GPX)"
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+"Selecione para descarregar erros reportados no mapa na área selecionada."
+
+msgid "Please select a download area first."
+msgstr "Por favor selecione primeiro uma área a descarregar."
+
+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>Não está selecionado<strong>{0}</strong> nem <strong>{1}</strong> nem "
+"<strong>{2}</strong>.<br>Por favor escolha o que quer descarregar: mapa do "
+"OpenStreetMap, trilhos GPS e/ou erros reportados no mapa.</html>"
+
+msgid "No area selected yet"
+msgstr "Nenhuma área selecionada"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Tamanho da área demasiado grande; provavelmente o servidor recusará "
+"descarregar esta área"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Tamanho da área válido, provavelmente o servidor permitirá descarregar esta "
+"área"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "história"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8850,9 +9081,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Erro de processamento"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9464,6 +9692,18 @@ msgstr "Autenticar com o nome de utilizador e palavra-passe fornecidos"
 msgid "Cancel authentication"
 msgstr "Cancelar autenticação"
 
+msgid "Question"
+msgstr "Questão"
+
+msgid "Message"
+msgstr "Mensagem"
+
+msgid "Enter text"
+msgstr "Inserir texto"
+
+msgid "Installing plugins"
+msgstr "A instalar módulos"
+
 msgid "Downloading file"
 msgstr "A descarregar ficheiro"
 
@@ -10038,9 +10278,6 @@ msgstr "Selecione os objetos a enviar"
 msgid "Cancel uploading"
 msgstr "Cancelar envio"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Valor inesperado da chave ''{0}'' nas preferências. Obtido ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Encher um conjunto de alterações e voltar à Janela de Envios"
 
@@ -10124,6 +10361,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objeto a eliminar:"
 msgstr[1] "{0} objetos a eliminar:"
 
+msgid "All Formats"
+msgstr "Todos os formatos"
+
+msgid "Could not export ''{0}''."
+msgstr "Não foi possível exportar ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Não foi possível importar ''{0}''."
+
+msgid "Could not import files."
+msgstr "Não foi possível importar os ficheiros."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Não foi possível ler o ficheiro ''{0}''.<br>O erro é:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Não foi possível ler os ficheiros.<br>O erro é:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Ficheiros GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Camada ''{0}'' não suportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: A licença GPL não é compatível com a licença do OSM. Não carregue "
+"trilhos GPS sob a licença GPL para o OSM."
+
+msgid "GPS track description"
+msgstr "Descrição do trilho GPS"
+
+msgid "Add author information"
+msgstr "Adicionar informação sobre o autor"
+
+msgid "Real name"
+msgstr "Nome verdadeiro"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Direitos de autor (URL)"
+
+msgid "Predefined"
+msgstr "Pré-definido"
+
+msgid "Copyright year"
+msgstr "Ano do direito de autor"
+
+msgid "Keywords"
+msgstr "Palavras-chave"
+
+msgid "Export options"
+msgstr "Opções de exportação"
+
+msgid "Export and Save"
+msgstr "Exportar e gravar"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Ocorreu um erro ao exportar {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escolher licença"
+
+msgid "GPX Files"
+msgstr "Ficheiros GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Ocorreu um erro ao processar os dados para a camada ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Ocorreu um erro ao processar os dados GPX para a camada ''{0}''. Estará "
+"disponível apenas uma parte do ficheiro."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Ocorreu um erro ao processar o ficheiro GPX ''{0}''. Estará disponível "
+"apenas uma parte do ficheiro."
+
+msgid "Image Files"
+msgstr "Ficheiros de Imagem"
+
+msgid "folder"
+msgstr "pasta"
+
+msgid "Looking for image files"
+msgstr "A procurar por ficheiros de imagem"
+
+msgid "No image files found."
+msgstr "Nenhum ficheiro de imagem encontrado."
+
+msgid "NMEA-0183 Files"
+msgstr "Ficheiros NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenadas importadas: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Expressões mal formadas: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Erros de checksum: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Expressões desconhecidas: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Coordenadas nulas: {0}"
+
+msgid "NMEA import success:"
+msgstr "Sucesso na importação de NMEA:"
+
+msgid "NMEA import failure!"
+msgstr "Falhou a importação de ficheiro NMEA-0183!"
+
+msgid "Note Files"
+msgstr "Ficheiros de Erros nos Mapas Reportados"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Ficheiros de Servidor OSM comprimidos em bzip2"
+
+msgid "OsmChange File"
+msgstr "Ficheiros OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "O ficheiro ''{0}'' não existe."
+
+msgid "No data found in file {0}."
+msgstr "Nenhuns dados encontrados no ficheiro {0}."
+
+msgid "Open OsmChange file"
+msgstr "Abrir ficheiro OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Ficheiros de Servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ocorreu um erro ao gravar.<br>O erro é:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Ocorreu um erro ao restaurar a cópia de "
+"segurança.<br>Erro:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Ficheiros de Servidor OSM comprimidos em gzip"
+
+msgid "Invalid dataset"
+msgstr "Conjunto de dados não válido"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Dados não encontrados na camada ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nenhuns dados encontrados no ficheiro ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Abrir ficheiro OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Ficheiros WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versão de ficheiro WMS não suportada; encontrada {0}, esperada {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -10235,6 +10655,39 @@ msgstr "Não mostrar mais esta mensagem"
 msgid "Hide this message and never show it again"
 msgstr "Esconder esta mensagem e não a mostrar novamente"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Não foi possível criar o diretório {0}, a gravação automática será desativada"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+"Não foi possível criar o ficheiro {0}, será usado outro nome de ficheiro"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Erro IO ao criar o ficheiro. Não será feita a gravação automática da cópia "
+"de segurança: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+"Não foi possível eliminar o ficheiro da cópia de segurança antigo {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Foi feita uma cópia de segurança"
+
+msgid "Restoring files"
+msgstr "A restaurar ficheiros"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Não foi possível eliminar o ficheiro da cópia de segurança {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Não foi possível eliminar o ficheiro PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+"Não foi possível eliminar o ficheiro guardado da cópia de segurança {0}"
+
 msgid "Customize Color"
 msgstr "Alterar Cor"
 
@@ -10338,6 +10791,9 @@ msgstr "Total de erros reportados:"
 msgid "Changes need uploading?"
 msgstr "As alterações necessitam de ser enviadas?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fora da área descarregada"
 
@@ -10413,6 +10869,9 @@ msgstr "Erros de validação"
 msgid "No validation errors"
 msgstr "Nenhum erro de validação"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Criar favorito da imagem de fundo WMS"
 
@@ -11035,9 +11494,6 @@ msgstr "(o URL era: "
 msgid "Select the map painting styles"
 msgstr "Selecione os estilos de visualização do mapa"
 
-msgid "loading style ''{0}''..."
-msgstr "a carregar estilo ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11053,6 +11509,9 @@ msgstr[1] ""
 "\"info\" no menu que aparece ao clicar com o botão direito do rato sobre o "
 "estilo."
 
+msgid "loading style ''{0}''..."
+msgstr "a carregar estilo ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Ocorreu um erro ao carregar os estilos de visualização do mapa ''{0}''. Erro "
@@ -11601,27 +12060,6 @@ msgstr "Descarregar módulos"
 msgid "Icon paths:"
 msgstr "Diretório de ícones:"
 
-msgid "Short Description:"
-msgstr "Descrição Resumida:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Página web:"
-
-msgid "Description:"
-msgstr "Descrição"
-
-msgid "Version:"
-msgstr "Versão :"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versão mínima do JOSM:"
-
-msgid "by {0}"
-msgstr "por {0}"
-
 msgid "Name (optional):"
 msgstr "Nome (opcional):"
 
@@ -12828,21 +13266,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "Aviso: formato errado na lista de estilos ''{0}''. Obteve-se ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "Padrão do JOSM (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estilo do JOSM de origem para ser utilizado como base para estilos de "
-"cobertura intercambiáveis em tempo de execução"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "estilo principal do Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Definições de Mapas"
 
@@ -12943,12 +13366,6 @@ msgstr ""
 "Aviso: formato ilegal de entrada na lista de modelos de etiquetas ''{0}''. "
 "Obteve-se ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Modelo de Etiquetas JOSM"
-
-msgid "The default preset for JOSM"
-msgstr "Os modelos de etiquetas originais do JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "O módulo {0} é utilizado pelo módulo:"
@@ -13458,9 +13875,6 @@ msgstr ""
 "Não foi possível obter as credenciais do OpenStreetMap do gestor de "
 "credenciais."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "O gestor de credenciais atual é do tipo ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Não foi possível gravar as credenciais do OpenStreetMap no gestor de "
@@ -13482,14 +13896,6 @@ msgstr ""
 "Especifique o número de dias máximo desde que um erro reportado que tenha "
 "sido fechado não seja descarregado"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Não foi possível obter o Token de Acesso OAuth do gestor de credenciais."
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Não foi possível gravar o Token de Acesso OAuth no gestor de credenciais."
-
 msgid "Save to preferences"
 msgstr "Gravar nas preferências"
 
@@ -13695,71 +14101,6 @@ msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 "Aviso: formato inválido de entrada na lista de regras ''{0}''. Erro ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Verifica se existem erros nos endereços"
-
-msgid "Tag combinations"
-msgstr "Conbinações de etiquetas"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Verifica se faltam etiquetas adicionais ou mal aplicadas"
-
-msgid "Deprecated features"
-msgstr "Etiquetas em desuso"
-
-msgid "Checks for deprecated features"
-msgstr ""
-"Verifica se existem etiquetas que deixaram de ser utilizadas ou foram "
-"substituídas por outras"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Verifica se existem erros de geometria"
-
-msgid "Checks for errors on highways"
-msgstr "Verifica se existem erros em vias"
-
-msgid "Multiple values"
-msgstr "Vários valores"
-
-msgid "Checks for wrong multiple values"
-msgstr "Verifica se existem etiquetas com vários valores"
-
-msgid "Numeric values"
-msgstr "Valores numéricos"
-
-msgid "Checks for wrong numeric values"
-msgstr "Verifica se existem erros em valores numéricos"
-
-msgid "Religion"
-msgstr "Religião"
-
-msgid "Checks for errors on religious objects"
-msgstr "Verifica se existem erros em objetos com etiquetas sobre religião"
-
-msgid "Checks for errors on relations"
-msgstr "Verifica se existem errros em relações"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Etiquetas desnecessárias"
-
-msgid "Checks for unnecessary tags"
-msgstr "Verifica se existem etiquetas que não são necessárias"
-
-msgid "Wikipedia"
-msgstr "Wikipédia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Verifica se existem erros em etiquetas da Wikipédia"
-
 msgid "Tag checker rules"
 msgstr "Regras do verificador de etiquetas"
 
@@ -14027,6 +14368,39 @@ msgstr "Todos os ficheiros (*.*)"
 msgid "Received error page:"
 msgstr "Página de erro obtida:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"A preferência com a chave ''{0}'' não inclui ''{1}''. Não é possível "
+"restaurar a geometria da janela das preferências."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"A preferência com a chave ''{0}'' não fornece um valor int para ''{1}''. "
+"Atualmente é {2}. Não é possível restaurar a geometria da janela das "
+"preferências."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Não foi possível processar o campo ''{1}'' na preferência com a chave "
+"''{0}''. A exceção é: {2}. Não é possível restaurar a geometria da janela "
+"das preferências."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"A preferência com a chave ''{0}'' não existe. Não é possível restaurar a "
+"geometria da janela das preferências."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "A ignorar a geometria mal formada: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitude mín."
 
@@ -14163,9 +14537,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "O membro {0} eliminado é utilizado pela relação {1}"
 
-msgid "All Formats"
-msgstr "Todos os formatos"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "A descarregar pontos GPS {0} a {1}..."
 
@@ -14293,95 +14664,6 @@ msgstr "A analisar a resposta do servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Elemento XML inesperado com o nome ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Não foi possível exportar ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Não foi possível importar ''{0}''."
-
-msgid "Could not import files."
-msgstr "Não foi possível importar os ficheiros."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Não foi possível ler o ficheiro ''{0}''.<br>O erro é:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Não foi possível ler os ficheiros.<br>O erro é:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Ficheiros GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Camada ''{0}'' não suportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: A licença GPL não é compatível com a licença do OSM. Não carregue "
-"trilhos GPS sob a licença GPL para o OSM."
-
-msgid "GPS track description"
-msgstr "Descrição do trilho GPS"
-
-msgid "Add author information"
-msgstr "Adicionar informação sobre o autor"
-
-msgid "Real name"
-msgstr "Nome verdadeiro"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Direitos de autor (URL)"
-
-msgid "Predefined"
-msgstr "Pré-definido"
-
-msgid "Copyright year"
-msgstr "Ano do direito de autor"
-
-msgid "Keywords"
-msgstr "Palavras-chave"
-
-msgid "Export options"
-msgstr "Opções de exportação"
-
-msgid "Export and Save"
-msgstr "Exportar e gravar"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Ocorreu um erro ao exportar {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escolher licença"
-
-msgid "GPX Files"
-msgstr "Ficheiros GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Ocorreu um erro ao processar os dados para a camada ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Ocorreu um erro ao processar os dados GPX para a camada ''{0}''. Estará "
-"disponível apenas uma parte do ficheiro."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Ocorreu um erro ao processar o ficheiro GPX ''{0}''. Estará disponível "
-"apenas uma parte do ficheiro."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Erro de processamento: estrutura de documento GPX inválida"
 
@@ -14391,18 +14673,6 @@ msgstr "(na linha {0}, coluna {1})"
 msgid "Unknown mode {0}."
 msgstr "Modo desconhecido: {0}."
 
-msgid "Image Files"
-msgstr "Ficheiros de Imagem"
-
-msgid "folder"
-msgstr "pasta"
-
-msgid "Looking for image files"
-msgstr "A procurar por ficheiros de imagem"
-
-msgid "No image files found."
-msgstr "Nenhum ficheiro de imagem encontrado."
-
 msgid "get number of unread messages"
 msgstr "obter número de mensagens por ler"
 
@@ -14458,36 +14728,9 @@ msgstr ""
 "O servidor respondeu com o código de resposta 404 para o identificador {0}. "
 "A ignorar."
 
-msgid "NMEA-0183 Files"
-msgstr "Ficheiros NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenadas importadas: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Expressões mal formadas: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Erros de checksum: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Expressões desconhecidas: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Coordenadas nulas: {0}"
-
-msgid "NMEA import success:"
-msgstr "Sucesso na importação de NMEA:"
-
-msgid "NMEA import failure!"
-msgstr "Falhou a importação de ficheiro NMEA-0183!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Erro Null pointer exception provavelmente por faltarem tags."
 
-msgid "Note Files"
-msgstr "Ficheiros de Erros nos Mapas Reportados"
-
 msgid "OSM API"
 msgstr "API do OSM"
 
@@ -14586,9 +14829,6 @@ msgstr "(Código={0})"
 msgid "The server replied an error with code {0}."
 msgstr "O servidor retornou um erro com o código {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Ficheiros de Servidor OSM comprimidos em bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "O Prolog do documento OsmChange já foi gravado. Por favor grave apenas uma "
@@ -14599,18 +14839,6 @@ msgstr ""
 "O Prolog do documento OsmChange ainda não foi gravado. Por favor grave "
 "primeiro."
 
-msgid "OsmChange File"
-msgstr "Ficheiros OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "O ficheiro ''{0}'' não existe."
-
-msgid "No data found in file {0}."
-msgstr "Nenhuns dados encontrados no ficheiro {0}."
-
-msgid "Open OsmChange file"
-msgstr "Abrir ficheiro OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Versão não suportada: {0}"
 
@@ -14664,37 +14892,9 @@ msgstr "A autenticação da ligação HTTP com uma assinatura de OAuth falhou"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor não esperado na preferência ''{0}''. Obtido ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Ficheiros de Servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ocorreu um erro ao gravar.<br>O erro é:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Ocorreu um erro ao restaurar a cópia de "
-"segurança.<br>Erro:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Ficheiros de Servidor OSM comprimidos em gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "A processar dados do histórico OSM..."
 
-msgid "Invalid dataset"
-msgstr "Conjunto de dados não válido"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Dados não encontrados na camada ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nenhuns dados encontrados no ficheiro ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Abrir ficheiro OSM"
-
 msgid "Reading was canceled"
 msgstr "A leitura foi cancelada"
 
@@ -14840,6 +15040,9 @@ msgstr "A contactar o servidor..."
 msgid "Downloading OSM notes..."
 msgstr "A descarregar errros reportados no OSM..."
 
+msgid "Downloading data..."
+msgstr "A descarregar os dados"
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14899,14 +15102,8 @@ msgstr "Foi encontrado um identificador 0 inesperado para o objeto OSM"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "A descarregar os dados"
-
-msgid "WMS Files (*.wms)"
-msgstr "Ficheiros WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versão de ficheiro WMS não suportada; encontrada {0}, esperada {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Valor inesperado da chave ''{0}'' nas preferências. Obtido ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "foram lidos {0} bytes"
@@ -16062,37 +16259,6 @@ msgstr "A abrir o URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "O URL não contém {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versão do JAVA desatualizada"
-
-msgid "Update Java"
-msgstr "Atualizar o JAVA"
-
-msgid "You are running version {0} of Java."
-msgstr "Está a usar a versão do JAVA {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Esta versão já não é suportada por {0} desde {1} e não é recomendável a sua "
-"utilização."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"Brevemente o JOSM não funcionará com esta versão do Java; é recomendável "
-"atualizar para a versão do Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Quer atualizar agora?"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -16177,22 +16343,6 @@ msgstr "Caractere suspeito na chave:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Valor demasiado longo (máximo {0} caracteres):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Quer colar estas etiquetas?"
-
-msgid "Clear buffer"
-msgstr "Limpar memória"
-
-msgid "Ignore warnings"
-msgstr "Ignorar avisos"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Desculpe, mas não é possível colar etiquetas da memória porque não "
-"contém nenhum elemento do JOSM ou texto adequado. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Não foi possível eliminar o ficheiro {0}"
 
@@ -16216,130 +16366,15 @@ msgid_plural "days"
 msgstr[0] "dias"
 msgstr[1] "dias"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"A preferência com a chave ''{0}'' não inclui ''{1}''. Não é possível "
-"restaurar a geometria da janela das preferências."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"A preferência com a chave ''{0}'' não fornece um valor int para ''{1}''. "
-"Atualmente é {2}. Não é possível restaurar a geometria da janela das "
-"preferências."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Não foi possível processar o campo ''{1}'' na preferência com a chave "
-"''{0}''. A exceção é: {2}. Não é possível restaurar a geometria da janela "
-"das preferências."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"A preferência com a chave ''{0}'' não existe. Não é possível restaurar a "
-"geometria da janela das preferências."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "A ignorar a geometria mal formada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Não foi possível carregar o esquema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Encontrou um bug no JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Ocorreu uma exceção inesperada.\n"
-"Isto é normalmente um erro de programação. Se estiver a usar a última versão "
-"do JOSM por favor considere reportar este erro aos programadores."
-
-msgid "Debug information"
-msgstr "Informações de depuração"
-
-msgid "Manually report at:"
-msgstr "Reportar manualmente em:"
-
-msgid "Is JOSM up to date?"
-msgstr "O JOSM está atualizado?"
-
-msgid "Send bug report"
-msgstr "Enviar relatório de erro"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Comunicar um Erro"
-
-msgid "Suppress this error for this session."
-msgstr "Suprimir este erro para esta sessão"
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Não mostrar mais avisos de erros nesta sessão."
-
-msgid "Ignore this error."
-msgstr "Ignorar este erro."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Não foi possível abrir a página para relatar um erro. Por favor relate um "
 "erro acedendo ao site:"
 
-msgid "Include the system status report."
-msgstr "Incluir o relatório do estado do sistema operativo."
-
-msgid "Include information about the data you were working on."
-msgstr "Incluir informações sobre os dados em que estava a trabalhar."
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr "A versão atual do JOSM que está a usar é {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "O JOSM está à procura de atualizações..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-"Ocorreu um erro ao tentar verificar se o JOSM que está a usar está "
-"atualizado."
-
-msgid "JOSM is up to date."
-msgstr "O JOSM está atualizado."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"O JOSM que está a usar está desatualizado, A versão atual é {0}. Tente "
-"atualizar o JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Antes de submeter um relatório de erro certifique-se que tem a última versão "
-"do JOSM disponível em:"
-
-msgid "Update JOSM"
-msgstr "Atualizar o JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20089,9 +20124,6 @@ msgstr "Informação Mostrada"
 msgid "notice"
 msgstr "aviso"
 
-msgid "history"
-msgstr "história"
-
 msgid "nature"
 msgstr "natureza"
 
@@ -20672,6 +20704,9 @@ msgstr "Instalação Sociais"
 msgid "Nursing Home"
 msgstr "Lar de Terceira Idade (com cuidado médico permanenete)"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -23115,6 +23150,9 @@ msgstr "Lembranças"
 msgid "Variety Store"
 msgstr "Loja de Descontos (Lojas 1,99; preço único)"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Casa de Apostas"
 
@@ -23989,6 +24027,78 @@ msgstr "Escritórios"
 msgid "Industrial"
 msgstr "Área Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Área de Garagens"
 
@@ -24692,6 +24802,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25444,6 +25557,9 @@ msgstr "Cadastro"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvérnia 2013 - 25 cm"
 
@@ -25557,15 +25673,6 @@ msgstr "Mapa antigo Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Carta Topográfica 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -34046,15 +34153,21 @@ msgstr "para o valor anterior (mtime não alterado)"
 msgid "Photo Geotagging Plugin"
 msgstr "Módulo de Geo-localização de Imagens"
 
-msgid "Writing position information to image files..."
-msgstr "A gravar a informação de geo-localização nas imagens..."
-
 msgid "Could not read mtime."
 msgstr "Não foi possível ler a hora de modificação (mtime)"
 
 msgid "Could not write mtime."
 msgstr "Não foi possível gravar a hora de modificação (mtime)"
 
+msgid "Writing position information to image files..."
+msgstr "A gravar a informação de geo-localização nas imagens..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Não foi possível eliminar o ficheiro!"
 
@@ -34562,6 +34675,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34570,6 +34686,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/pt_BR.po b/i18n/po/pt_BR.po
index 6e58d8b..a8ebd27 100644
--- a/i18n/po/pt_BR.po
+++ b/i18n/po/pt_BR.po
@@ -8,15 +8,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-08 05:02+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-09-03 01:47+0000\n"
 "Last-Translator: Nelson A. de Oliveira <naoliv at debian.org>\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-08-13 05:05+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:05+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: pt_BR\n"
 
@@ -56,55 +56,9 @@ msgstr "Termos de Uso do Plano de Fundo"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Sem suporte para abertura de link na plataforma atual (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Executando o gancho de inicialização da plataforma"
-
-msgid "Building main menu"
-msgstr "Criando o menu principal"
-
-msgid "Help"
-msgstr "Ajuda"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicializando dados internos de limites"
-
-msgid "Initializing OSM API"
-msgstr "Inicializando a API do OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicializando dados internos de tráfego"
-
-msgid "Initializing validator"
-msgstr "Inicializando validador"
-
-msgid "Initializing presets"
-msgstr "Inicializando predefinições"
-
-msgid "Initializing map styles"
-msgstr "Inicializando estilos de mapas"
-
-msgid "Loading imagery preferences"
-msgstr "Carregando preferências de imagens"
-
-msgid "Updating user interface"
-msgstr "Atualizando interface do usuário"
-
 msgid "Failed to save default preferences."
 msgstr "Falha ao salvar as preferências padrão."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorando URL mal formada: \"{0}\""
-
-msgid "Warning"
-msgstr "Aviso"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorando URL de arquivo mal formada: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"O parâmetro \"downloadgps\" não aceita nomes de arquivos ou URLs de arquivos"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -188,6 +142,9 @@ msgstr "Cancelar"
 msgid "Click to abort launching external browsers"
 msgstr "Clique para abortar o lançamento de navegadores externos"
 
+msgid "Warning"
+msgstr "Aviso"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Por favor, selecione pelo menos um nó, caminho ou relação."
 
@@ -478,14 +435,11 @@ msgstr ""
 "* Uma via que não se cruze com pelo menos dois de seus nós;\n"
 "* Três nós."
 
-msgid "Download from OSM..."
-msgstr "Baixar do OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Baixar mapa do servidor OSM."
+msgid "Download data"
+msgstr "Baixar dados"
 
-msgid "Please select a download area first."
-msgstr "Por favor, selecione uma área para baixar primeiro."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -494,14 +448,11 @@ msgstr ""
 "<html>Esta ação irá requerir {0} pedidos<br>individuais para baixar. Você "
 "deseja<br>continuar?</html>"
 
-msgid "Download data"
-msgstr "Dados baixados"
-
 msgid "Download notes in current view"
 msgstr "Baixar notas na vista atual"
 
 msgid "Download in current view"
-msgstr "Download na visualização atual"
+msgstr "Baixar na visualização atual"
 
 msgid "Download map data from the OSM server in current view"
 msgstr ""
@@ -564,6 +515,9 @@ msgstr "Nada a exportar. Escolha alguns dados antes."
 msgid "Export GPX file"
 msgstr "Exportar arquivo GPX"
 
+msgid "Help"
+msgstr "Ajuda"
+
 msgid "History"
 msgstr "Histórico"
 
@@ -1131,23 +1085,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Por favor selecione caminhos com ângulos de aproximadamente 90 ou 180 graus."
 
-msgid "Download from Overpass API ..."
-msgstr "Baixar do Overpass API..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Baixar mapa do servidor Overpass API"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Colar"
 
@@ -2519,36 +2456,6 @@ msgstr "Selecionar relação (adicionar)"
 msgid "Select relation"
 msgstr "Selecionar relação"
 
-msgid "<not>"
-msgstr "<não>"
-
-msgid "<or>"
-msgstr "<ou>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<pai a esquerda>"
-
-msgid "<right parent>"
-msgstr "<pai a direita>"
-
-msgid "<colon>"
-msgstr "<vírgula>"
-
-msgid "<equals>"
-msgstr "<igual>"
-
-msgid "<key>"
-msgstr "<chave>"
-
-msgid "<question mark>"
-msgstr "<ponto de interrogação>"
-
-msgid "<end-of-file>"
-msgstr "<fim-de-arquivo>"
-
 msgid "Search..."
 msgstr "Pesquisar..."
 
@@ -2846,97 +2753,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Pesquisando em {0} objeto"
 msgstr[1] "Pesquisando em {0} objetos"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"A expressão regular \"{0}\" teve um erro de interpretação na posição {1}, "
-"erro completo:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"A expressão regular \"{0}\" tem um erro. Erro completo:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Não é possível analisar a marca temporal ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Esperando {0} após {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Variação de ids primitivos esperada"
-
-msgid "Range of changeset ids expected"
-msgstr "Variação de ids de changeset esperada"
-
-msgid "Range of versions expected"
-msgstr "Variação de versões esperada"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Chave não pode ser apagada quando o operador está sendo usado. Exemplo: "
-"chave=valor"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Tipo de primitiva desconhecida: {0}. Os valores permitidos são node, way ou "
-"relation (nó, caminho ou relação)."
-
-msgid "Positive integer expected"
-msgstr "É esperado valor Inteiro positivo"
-
-msgid "Range of numbers expected"
-msgstr "Intervalo de números esperado"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Token não esperado. Esperava {0}, mas {1} foi encontrado"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Falha ao analisar o Selector MapCSS"
-
-msgid "Unexpected token: {0}"
-msgstr "Credencial de autenticação inesperada: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parâmetro faltando para OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Faltando parâmetro para XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Operador faltando para NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Reduzindo automaticamente o valor da tag ''{0}'' no objeto deletado {1}"
@@ -2958,9 +2774,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Violação de Capacidades da API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Dependência cíclica entre as relações:"
-
 msgid "Removed obsolete tags"
 msgstr "Tags obsoletas removidas"
 
@@ -3340,64 +3153,12 @@ msgstr "Regras em relações referentes a"
 msgid "Automatic tag correction"
 msgstr "Correção automática de tags"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-"Impossível criar o diretório {0}, a gravação automática será desabilitada"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Impossível criar o arquivo {0}, outro nome de arquivo será usado"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Erro de entrada e saída ao criar o arquivo, o salvamento automático será "
-"ignorado: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Impossível remover o arquivo de backup antigo {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Suas modificações foram salvas automaticamente."
-
-msgid "Restoring files"
-msgstr "Restaurando arquivos"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Não é possível excluir arquivo de backup {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Não é possível excluir arquivo PID {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Não é possível excluir o arquivo de backup arquivado {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Valor de latitude ilegal ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Valor de longitude ilegal ''{0}''"
 
-msgid "Question"
-msgstr "Pergunta"
-
-msgid "Message"
-msgstr "Mensagem"
-
-msgid "Enter text"
-msgstr "Digite o texto"
-
-msgid "Installing plugins"
-msgstr "Instalando plugins"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Arquivo de configurações pede para acrescentar preferências a "
-"<b>{0}</b>,<br/> mas o seu valor padrão é desconhecido neste momento.</br> "
-"Por favor, ativar a função correspondente manualmente e tente importar "
-"novamente."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Falha ao criar diretório de cache ausente: {0}"
 
@@ -3509,6 +3270,16 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "Configuração {0} das preferências foi removida pois não é mais usada."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Arquivo de configurações pede para acrescentar preferências a "
+"<b>{0}</b>,<br/> mas o seu valor padrão é desconhecido neste momento.</br> "
+"Por favor, ativar a função correspondente manualmente e tente importar "
+"novamente."
+
 msgid "Metric"
 msgstr "Métrico"
 
@@ -3648,6 +3419,17 @@ msgstr ""
 msgid "Note"
 msgstr "Nota"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Falha ao recuperar o token de acesso do OAuth do Gerenciador de Credenciais"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "O gerenciador de credenciais é do tipo ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Falha ao armazenar OAuth token de acesso no gerenciador de credenciais"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID > 0 esperada. Obtida {0}."
 
@@ -3664,6 +3446,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Uma primitiva com ID = 0 não pode ser invisível."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Dependência cíclica entre as relações:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3707,6 +3492,59 @@ msgstr "Mesclando dados..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Teste ''{0}'' completado em {1}"
 
+msgid "incomplete"
+msgstr "incompleto"
+
+msgid "House {0}"
+msgstr "Casa {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Casa {0} no(a) {1}"
+
+msgid "House number {0}"
+msgstr "Casa de número {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nó"
+msgstr[1] "nós"
+
+msgid "highway"
+msgstr "rodovia"
+
+msgid "railway"
+msgstr "ferrovia"
+
+msgid "waterway"
+msgstr "hidrovia"
+
+msgid "landuse"
+msgstr "uso da terra"
+
+msgid "building"
+msgstr "prédio"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nó"
+msgstr[1] "{0} nós"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} membro"
+msgstr[1] "{0} membros"
+
+msgid "public transport"
+msgstr "transporte public"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relação"
+msgstr[1] "relações"
+
+msgid "Changeset {0}"
+msgstr "Conjunto de mudanças {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Erro no filtro <code>{0}</code>:<br>{1}"
 
@@ -3745,21 +3583,11 @@ msgstr ""
 "Não é possível fazer merge com primitivas de ids diferentes. Esse id é {0}, "
 "o outro é {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nó"
-msgstr[1] "nós"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "caminho"
 msgstr[1] "caminhos"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relação"
-msgstr[1] "relações"
-
 msgid "closedway"
 msgstr "caminho fechado"
 
@@ -3797,6 +3625,127 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parâmetro {0} fora do intervalo de 0..{1}. Obtido ''{2}''."
 
+msgid "<not>"
+msgstr "<não>"
+
+msgid "<or>"
+msgstr "<ou>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<pai a esquerda>"
+
+msgid "<right parent>"
+msgstr "<pai a direita>"
+
+msgid "<colon>"
+msgstr "<vírgula>"
+
+msgid "<equals>"
+msgstr "<igual>"
+
+msgid "<key>"
+msgstr "<chave>"
+
+msgid "<question mark>"
+msgstr "<ponto de interrogação>"
+
+msgid "<end-of-file>"
+msgstr "<fim-de-arquivo>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"A expressão regular \"{0}\" teve um erro de interpretação na posição {1}, "
+"erro completo:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"A expressão regular \"{0}\" tem um erro. Erro completo:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Não é possível analisar a marca temporal ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Esperando {0} após {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Variação de ids primitivos esperada"
+
+msgid "Range of changeset ids expected"
+msgstr "Variação de ids de changeset esperada"
+
+msgid "Range of versions expected"
+msgstr "Variação de versões esperada"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Chave não pode ser apagada quando o operador está sendo usado. Exemplo: "
+"chave=valor"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Tipo de primitiva desconhecida: {0}. Os valores permitidos são node, way ou "
+"relation (nó, caminho ou relação)."
+
+msgid "Positive integer expected"
+msgstr "É esperado valor Inteiro positivo"
+
+msgid "Range of numbers expected"
+msgstr "Intervalo de números esperado"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Falha ao analisar o Selector MapCSS"
+
+msgid "Unexpected token: {0}"
+msgstr "Credencial de autenticação inesperada: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parâmetro faltando para OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Faltando parâmetro para XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Operador faltando para NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Token não esperado. Esperava {0}, mas {1} foi encontrado"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Falha ao carregar o mapa da classe de renderização ''{0}''. A classe não foi "
@@ -3884,6 +3833,123 @@ msgstr "Elemento esperado ''{0}'', mas obteve ''{1}''"
 msgid "value expected"
 msgstr "valor esperado"
 
+msgid "Short Description:"
+msgstr "Descrição curta:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "Webpage:"
+
+msgid "Description:"
+msgstr "Descrição:"
+
+msgid "Version:"
+msgstr "Versão:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Versão mínima do JOSM:"
+
+msgid "by {0}"
+msgstr "por {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM Padrão (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Estilo interno para ser usado como base para camada de tempo de execução ao "
+"alternar estilos"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "O estilo principal Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Predefinição interna"
+
+msgid "The default preset for JOSM"
+msgstr "A predefinição padrão do JOSM"
+
+msgid "Addresses"
+msgstr "Endereços"
+
+msgid "Checks for errors on addresses"
+msgstr "Verifica se há erros em endereços"
+
+msgid "Tag combinations"
+msgstr "Combinações de tags"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Verifica se há falta de tag ou combinações suspeitas"
+
+msgid "Deprecated features"
+msgstr "Funções depreciadas"
+
+msgid "Checks for deprecated features"
+msgstr "Verifica a existência de recursos obsoletos"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Verifica se há erros de geometria"
+
+msgid "Highways"
+msgstr "Estradas"
+
+msgid "Checks for errors on highways"
+msgstr "Verifica se há erros nas rodovias"
+
+msgid "Multiple values"
+msgstr "Vários valores"
+
+msgid "Checks for wrong multiple values"
+msgstr "Verifica a existência de vários valores errados"
+
+msgid "Numeric values"
+msgstr "Valores númericos"
+
+msgid "Checks for wrong numeric values"
+msgstr "Verifica a existência de valores numéricos errados"
+
+msgid "Religion"
+msgstr "Religião"
+
+msgid "Checks for errors on religious objects"
+msgstr "Verifica se há erros em objetos religiosos"
+
+msgid "Relations"
+msgstr "Relações"
+
+msgid "Checks for errors on relations"
+msgstr "Verifica se há erros em relações"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Tags desnecessárias"
+
+msgid "Checks for unnecessary tags"
+msgstr "Verifica a existência de tags desnecessárias"
+
+msgid "Wikipedia"
+msgstr "Wikipédia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Verifica etiquetas wikipedia erradas"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Projeção UTM (\"+proj=utm\") requer parâmetro \"+zone=...\"."
 
@@ -4078,9 +4144,6 @@ msgstr "AURL contém um fragmento inválido: {0}"
 msgid "URL validator"
 msgstr "Validador da URL"
 
-msgid "Addresses"
-msgstr "Endereços"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 "Verifica se há erros nos endereços e nas relações de associação de ruas."
@@ -4273,9 +4336,6 @@ msgstr "Nós de via duplicados"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Verificar vias para nós consecutivos idênticos."
 
-msgid "Highways"
-msgstr "Estradas"
-
 msgid "Performs semantic checks on highways."
 msgstr "Executa verificações semânticas nas rodovias."
 
@@ -4842,9 +4902,6 @@ msgstr "hidrovia do tipo {0}"
 msgid "boundary type {0}"
 msgstr "tipo de fronteira {0}"
 
-msgid "building"
-msgstr "prédio"
-
 msgid "area"
 msgstr "área"
 
@@ -4962,45 +5019,15 @@ msgstr "Não mostrar novamente (esta seção)"
 msgid "Do not show again (remembers choice)"
 msgstr "Não mostrar novamente (lembrar escolha)"
 
-msgid "incomplete"
-msgstr "incompleto"
-
-msgid "House {0}"
-msgstr "Casa {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Casa {0} no(a) {1}"
-
-msgid "House number {0}"
-msgstr "Casa de número {0}"
-
-msgid "highway"
-msgstr "rodovia"
-
-msgid "railway"
-msgstr "ferrovia"
-
-msgid "waterway"
-msgstr "hidrovia"
-
-msgid "landuse"
-msgstr "uso da terra"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nó"
-msgstr[1] "{0} nós"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} membro"
-msgstr[1] "{0} membros"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorando URL mal formada: \"{0}\""
 
-msgid "public transport"
-msgstr "transporte public"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorando URL de arquivo mal formada: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Conjunto de mudanças {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"O parâmetro \"downloadgps\" não aceita nomes de arquivos ou URLs de arquivos"
 
 msgid "Precondition violation"
 msgstr "Violação de Pré-condição"
@@ -5091,6 +5118,70 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "Era esperado um valor não-vazio para o parâmetro ''{0}'', mas recebi ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Versão desatualizada do Java"
+
+msgid "Update Java"
+msgstr "Atualize o Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Você está executando a versão {0} do Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Esta versão não é mais suportada pelo {0} desde {1} e não é recomendada para "
+"uso."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"Em breve o JOSM irá parar de trabalhar com esta versão; recomendamos que "
+"você atualize para o Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Deseja atualizar agora?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Executando o gancho de inicialização da plataforma"
+
+msgid "Building main menu"
+msgstr "Criando o menu principal"
+
+msgid "Updating user interface"
+msgstr "Atualizando interface do usuário"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicializando dados internos de limites"
+
+msgid "Initializing OSM API"
+msgstr "Inicializando a API do OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicializando dados internos de tráfego"
+
+msgid "Initializing validator"
+msgstr "Inicializando validador"
+
+msgid "Initializing presets"
+msgstr "Inicializando predefinições"
+
+msgid "Initializing map styles"
+msgstr "Inicializando estilos de mapas"
+
+msgid "Loading imagery preferences"
+msgstr "Carregando preferências de imagens"
+
 msgid "usage"
 msgstr "uso"
 
@@ -5593,6 +5684,83 @@ msgstr "Por favor digite o índice do tile"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "O valor atual não é um índice de tile válido para este nível de zoom"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Você encontrou um bug no JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Uma exceção inesperada ocorreu.\n"
+"Isso é sempre um erro de programação. Se você estiver utilizando a última "
+"versão do JOSM, por favor, considere a gentileza de reportar o problema."
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr "Enviar relatório de erro"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Relatar um Erro"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Suprimir novos diálogos de erro para esta sessão."
+
+msgid "Ignore this error."
+msgstr "Ignorar este erro"
+
+msgid "Include the system status report."
+msgstr "Incluir o relatório de status do sistema"
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Sua versão atual do JOSM é {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "O JOSM está procurando por atualizações..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr "O JOSM está atualizado"
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+"O JOSM está desatualizado. A versão atual é {0}. Tente atualizar o JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Atualize o JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Conflito segundo plano: sem conflito"
 
@@ -6364,6 +6532,22 @@ msgstr ""
 "colados estes são removidos. Você quer colar os dados sem os objetos "
 "incompletos?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Você quer colar essas tags?"
+
+msgid "Clear buffer"
+msgstr "Limpar buffer"
+
+msgid "Ignore warnings"
+msgstr "Ignorar aviso"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Desculpe, é impossível colar etiquetas do buffer. Ele não contém "
+"qualquer objeto JOSM ou texto adequado. </ p></html>"
+
 msgid "For selected objects only"
 msgstr "Apenas para objetos selecionados"
 
@@ -6968,9 +7152,6 @@ msgstr "Fonte"
 msgid "Title:"
 msgstr "Título:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Built-in Style, caminho interno:"
 
@@ -7087,9 +7268,6 @@ msgstr ""
 "Lista de ID inválida especificada\n"
 "Não é possível continuar."
 
-msgid "Relations"
-msgstr "Relações"
-
 msgid "Open a list of all relations."
 msgstr "Abrir uma lista de todas as relações."
 
@@ -8612,26 +8790,6 @@ msgstr "Requerido valor de latitude no intervalo [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Requerido valor de longitude no intervalo [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Tipos e fontes de dados:"
-
-msgid "OpenStreetMap data"
-msgstr "Dados do OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-"Selecione para baixar dados do OSM para a área de download selecionada."
-
-msgid "Raw GPS data"
-msgstr "Dados GPS brutos"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-"Selecione para baixar trilhas GPS do OSM para a área de download selecionada."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Selecione para baixar notas na área de download selecionada."
-
 msgid "Download as new layer"
 msgstr "Baixar como nova camada"
 
@@ -8667,32 +8825,12 @@ msgstr ""
 "com o botão direito do mouse; gire o scroll do mouse para aumentar ou "
 "diminuir o zoom."
 
-msgid "No area selected yet"
-msgstr "Não há área selecionada ainda"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Área para baixar é muito grande; pedido provavelmente será rejeitado pelo "
-"servidor"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Área para baixar ok, possivelmente será aceito pelo servidor"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Clique para fechar o diálogo e para abortar o download"
 
 msgid "Click to download the currently selected area"
 msgstr "Clique para baixar a área selecionada atualmente"
 
-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>Nem <strong>{0}</strong> nem <strong>{1}</strong> nem "
-"<strong>{2}</strong> está ativo.<br>Por favor escolha baixar apenas dados "
-"OSM, ou dados GPX, ou Notas, ou tudo.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Baixar referentes (relações mães)"
 
@@ -8715,6 +8853,95 @@ msgstr "Selecione se os integrantes de uma relação devem ser baixados também"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Baixar referentes (relações e caminhos pais)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Tipos e fontes de dados:"
+
+msgid "OpenStreetMap data"
+msgstr "Dados do OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+"Selecione para baixar dados do OSM para a área de download selecionada."
+
+msgid "Raw GPS data"
+msgstr "Dados GPS brutos"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+"Selecione para baixar trilhas GPS do OSM para a área de download selecionada."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Selecione para baixar notas na área de download selecionada."
+
+msgid "Please select a download area first."
+msgstr "Por favor, selecione uma área para baixar primeiro."
+
+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>Nem <strong>{0}</strong> nem <strong>{1}</strong> nem "
+"<strong>{2}</strong> está ativo.<br>Por favor escolha baixar apenas dados "
+"OSM, ou dados GPX, ou Notas, ou tudo.</html>"
+
+msgid "No area selected yet"
+msgstr "Não há área selecionada ainda"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Área para baixar é muito grande; pedido provavelmente será rejeitado pelo "
+"servidor"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Área para baixar ok, possivelmente será aceito pelo servidor"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "história"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8757,9 +8984,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Erro na análise"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9361,6 +9585,18 @@ msgstr "Autenticar com nome de usuário e senha providos"
 msgid "Cancel authentication"
 msgstr "Cancelar autenticação"
 
+msgid "Question"
+msgstr "Pergunta"
+
+msgid "Message"
+msgstr "Mensagem"
+
+msgid "Enter text"
+msgstr "Digite o texto"
+
+msgid "Installing plugins"
+msgstr "Instalando plugins"
+
 msgid "Downloading file"
 msgstr "Baixando arquivo"
 
@@ -9933,9 +10169,6 @@ msgstr "Selecionar objetos para enviar"
 msgid "Cancel uploading"
 msgstr "Cancelar envio"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Valor inesperado para a chave ''{0}'' nas preferências, tem ''{1} ''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Encher um conjunto de dados e retornar para o Diálogo de Envio"
 
@@ -10023,6 +10256,189 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objeto a remover:"
 msgstr[1] "{0} objetos a remover:"
 
+msgid "All Formats"
+msgstr "Todos os formatos"
+
+msgid "Could not export ''{0}''."
+msgstr "Não é possível exportar ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Não é possível importar ''{0}''."
+
+msgid "Could not import files."
+msgstr "Não é possível importar arquivos."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html>Não foi possível ler o arquivo ''{0}''. <br> O erro é:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Não foi possível ler o arquivo. <br> O erro é:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Arquivos GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Camada ''{0}'' não é suportada"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Nota: A licença GPL não é compatível com o OSM. Não carregue trilhas "
+"licenciadas pela GPL."
+
+msgid "GPS track description"
+msgstr "Descrição da trilha do GPS"
+
+msgid "Add author information"
+msgstr "Adicionar informação do autor"
+
+msgid "Real name"
+msgstr "Nome Real"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Direitos autorais (URL)"
+
+msgid "Predefined"
+msgstr "Pré-definido"
+
+msgid "Copyright year"
+msgstr "Ano dos direitos autorais"
+
+msgid "Keywords"
+msgstr "Palavras-chave"
+
+msgid "Export options"
+msgstr "Opções de exportação"
+
+msgid "Export and Save"
+msgstr "Exportar e Salvar"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Erro durante exportação {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Escolha uma licença pré-definida"
+
+msgid "GPX Files"
+msgstr "Arquivos GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "A analisa dos dados para a camada ''{0}'' falhou"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Ocorreu um erro durante a análise de dados GPX para a camada ''{0}''. Apenas "
+"uma parte do arquivo estará disponível."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Ocorreu um erro ao analisar o arquivo gpx ''{0}''. Apenas uma parte do "
+"arquivo estará disponível."
+
+msgid "Image Files"
+msgstr "Arquivos de Imagem"
+
+msgid "folder"
+msgstr "pasta"
+
+msgid "Looking for image files"
+msgstr "Procurando por arquivos de imagem"
+
+msgid "No image files found."
+msgstr "Nenhum arquivo de imagem encontrado."
+
+msgid "NMEA-0183 Files"
+msgstr "Arquivos NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Coordenadas importadas: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Sentenças malformadas: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Erros de checksum: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Sentenças desconhecidas: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Zero coordenadas: {0}"
+
+msgid "NMEA import success:"
+msgstr "Sucesso naimportação NMEA:"
+
+msgid "NMEA import failure!"
+msgstr "Falha na importação NMEA!"
+
+msgid "Note Files"
+msgstr "Arquivos de nota"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Arquivos do Servidor OSM compactados com bzip2"
+
+msgid "OsmChange File"
+msgstr "Arquivo OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Arquivo ''{0}'' não existe."
+
+msgid "No data found in file {0}."
+msgstr "Não foram encontrados dados no arquivo {0}."
+
+msgid "Open OsmChange file"
+msgstr "Open OsmChange file"
+
+msgid "OSM Server Files"
+msgstr "Arquivos do servidor OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Ocorreu um erro ao salvar. <br>O erro é:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Ocorreu um erro durante a restauração de arquivo de backup <br>O erro "
+"é:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Arquivos do Servidor OSM compactados com gzip"
+
+msgid "Invalid dataset"
+msgstr "Dataset inválido"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nenhum dado encontrado para a camada ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Não foram encontrados dados no arquivo ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Abrir arquivo OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Arquivos WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Versão do arquivo WMS sem suporte; encontrado {0}, esperado {1}"
+
 msgid "Native projections"
 msgstr "Projeções nativas"
 
@@ -10132,6 +10548,36 @@ msgstr "Não exibir esta mensagem novamente"
 msgid "Hide this message and never show it again"
 msgstr "Ocultar esta mensagem e não mostrá-la novamente"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+"Impossível criar o diretório {0}, a gravação automática será desabilitada"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Impossível criar o arquivo {0}, outro nome de arquivo será usado"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Erro de entrada e saída ao criar o arquivo, o salvamento automático será "
+"ignorado: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Impossível remover o arquivo de backup antigo {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Suas modificações foram salvas automaticamente."
+
+msgid "Restoring files"
+msgstr "Restaurando arquivos"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Não é possível excluir arquivo de backup {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Não é possível excluir arquivo PID {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Não é possível excluir o arquivo de backup arquivado {0}"
+
 msgid "Customize Color"
 msgstr "Personalizar cores"
 
@@ -10235,6 +10681,9 @@ msgstr "Total de notas:"
 msgid "Changes need uploading?"
 msgstr "As mudanças precisam de atualização?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "fora da área baixada"
 
@@ -10310,6 +10759,9 @@ msgstr "Erros de validação"
 msgid "No validation errors"
 msgstr "Sem erros de validação"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Adicionar marcador para esta camada WMS"
 
@@ -10693,7 +11145,7 @@ msgstr ""
 "aqui:</html>"
 
 msgid "Customize track drawing"
-msgstr "Personaliza o desenho da pista"
+msgstr "Personalizar o desenho da trilha"
 
 msgid "From"
 msgstr "De"
@@ -10933,9 +11385,6 @@ msgstr "(A URL era: "
 msgid "Select the map painting styles"
 msgstr "Selecione os estilos de pintura do mapa"
 
-msgid "loading style ''{0}''..."
-msgstr "carregando estilo ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10949,6 +11398,9 @@ msgstr[1] ""
 "Ocorreram {0} erros ao carregar este estilo. Para mais detalhes, clique com "
 "o botão direito e selecione \"Informações\""
 
+msgid "loading style ''{0}''..."
+msgstr "carregando estilo ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Falha ao carregar estilos Mappaint de ''{0}''. A exceção foi: {1}"
 
@@ -11491,27 +11943,6 @@ msgstr "Baixar plugins"
 msgid "Icon paths:"
 msgstr "Caminho dos ícones:"
 
-msgid "Short Description:"
-msgstr "Descrição curta:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "Webpage:"
-
-msgid "Description:"
-msgstr "Descrição:"
-
-msgid "Version:"
-msgstr "Versão:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Versão mínima do JOSM:"
-
-msgid "by {0}"
-msgstr "por {0}"
-
 msgid "Name (optional):"
 msgstr "Nome (opcional):"
 
@@ -12689,21 +13120,6 @@ msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 "Aviso: formato de entrada na lista estilos ilegal ''{0}''. Tem ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM Padrão (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Estilo interno para ser usado como base para camada de tempo de execução ao "
-"alternar estilos"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "O estilo principal Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Configurações do Mapa"
 
@@ -12803,12 +13219,6 @@ msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 "Aviso: formato de entrada na lista predefinições ilegal ''{0}''. Tem ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Predefinição interna"
-
-msgid "The default preset for JOSM"
-msgstr "A predefinição padrão do JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "O plugin {0} ainda é exigido por este plugin:"
@@ -13307,9 +13717,6 @@ msgstr "Senha do OSM:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Falha ao obter credenciais OSM de gerente de credencial."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "O gerenciador de credenciais é do tipo ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Falha ao salvar as credenciais OSM no gerenciador de credecniais."
 
@@ -13329,14 +13736,6 @@ msgstr ""
 "Especifica o número de dias que uma nota necessita estar fechada para não "
 "ser mais baixada"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Falha ao recuperar o token de acesso do OAuth do Gerenciador de Credenciais"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Falha ao armazenar OAuth token de acesso no gerenciador de credenciais"
-
 msgid "Save to preferences"
 msgstr "Salvar para Preferências"
 
@@ -13539,69 +13938,6 @@ msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 "Aviso: formato de entrada na lista estilos ilegal ''{0}''. Tem ''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Verifica se há erros em endereços"
-
-msgid "Tag combinations"
-msgstr "Combinações de tags"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Verifica se há falta de tag ou combinações suspeitas"
-
-msgid "Deprecated features"
-msgstr "Funções depreciadas"
-
-msgid "Checks for deprecated features"
-msgstr "Verifica a existência de recursos obsoletos"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Verifica se há erros de geometria"
-
-msgid "Checks for errors on highways"
-msgstr "Verifica se há erros nas rodovias"
-
-msgid "Multiple values"
-msgstr "Vários valores"
-
-msgid "Checks for wrong multiple values"
-msgstr "Verifica a existência de vários valores errados"
-
-msgid "Numeric values"
-msgstr "Valores númericos"
-
-msgid "Checks for wrong numeric values"
-msgstr "Verifica a existência de valores numéricos errados"
-
-msgid "Religion"
-msgstr "Religião"
-
-msgid "Checks for errors on religious objects"
-msgstr "Verifica se há erros em objetos religiosos"
-
-msgid "Checks for errors on relations"
-msgstr "Verifica se há erros em relações"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Tags desnecessárias"
-
-msgid "Checks for unnecessary tags"
-msgstr "Verifica a existência de tags desnecessárias"
-
-msgid "Wikipedia"
-msgstr "Wikipédia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Verifica etiquetas wikipedia erradas"
-
 msgid "Tag checker rules"
 msgstr "Regras de verificação tag"
 
@@ -13861,6 +14197,39 @@ msgstr "Todos os arquivos (*.*)"
 msgid "Received error page:"
 msgstr "Recebido erro da página:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Preferência com a chave ''{0}'' não enclui ''{1}''. Não é possível restaurar "
+"a geometria da janela de preferências."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Preferência com a chave ''{0}'' não fornece um valor int para ''{1}''. "
+"Recuperado {2}. Não é possível restaurar a geometria da janela de "
+"preferências."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Falha ao analisar o campo ''{1}'' das preferências, com chave ''{0}''. A "
+"exceção foi: {2}. Não foi possível restaurar a geometria das janela a partir "
+"das preferências."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Preferência com a chave ''{0}'' não existe. Não é possível restaurar a "
+"geometria da janela de preferências."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorando geometria mal formada: {0}"
+
 msgid "Min. latitude"
 msgstr "Latitude mínima"
 
@@ -13996,9 +14365,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Membro excluido {0} é usado pela relação {1}"
 
-msgid "All Formats"
-msgstr "Todos os formatos"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Baixando pontos {0} a {1}..."
 
@@ -14124,95 +14490,6 @@ msgstr "Analisando resposta do servidor..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Elemento XML inesperado com o nome ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Não é possível exportar ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Não é possível importar ''{0}''."
-
-msgid "Could not import files."
-msgstr "Não é possível importar arquivos."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Não foi possível ler o arquivo ''{0}''. <br> O erro é:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Não foi possível ler o arquivo. <br> O erro é:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Arquivos GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Camada ''{0}'' não é suportada"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Nota: A licença GPL não é compatível com o OSM. Não carregue trilhas "
-"licenciadas pela GPL."
-
-msgid "GPS track description"
-msgstr "Descrição da trilha do GPS"
-
-msgid "Add author information"
-msgstr "Adicionar informação do autor"
-
-msgid "Real name"
-msgstr "Nome Real"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Direitos autorais (URL)"
-
-msgid "Predefined"
-msgstr "Pré-definido"
-
-msgid "Copyright year"
-msgstr "Ano dos direitos autorais"
-
-msgid "Keywords"
-msgstr "Palavras-chave"
-
-msgid "Export options"
-msgstr "Opções de exportação"
-
-msgid "Export and Save"
-msgstr "Exportar e Salvar"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Erro durante exportação {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Escolha uma licença pré-definida"
-
-msgid "GPX Files"
-msgstr "Arquivos GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "A analisa dos dados para a camada ''{0}'' falhou"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Ocorreu um erro durante a análise de dados GPX para a camada ''{0}''. Apenas "
-"uma parte do arquivo estará disponível."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Ocorreu um erro ao analisar o arquivo gpx ''{0}''. Apenas uma parte do "
-"arquivo estará disponível."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Erro de interpretação: estrutura inválida para documento gpx."
 
@@ -14222,18 +14499,6 @@ msgstr "(na linha{0}, coluna {1})"
 msgid "Unknown mode {0}."
 msgstr "O modo {0} é desconhecido."
 
-msgid "Image Files"
-msgstr "Arquivos de Imagem"
-
-msgid "folder"
-msgstr "pasta"
-
-msgid "Looking for image files"
-msgstr "Procurando por arquivos de imagem"
-
-msgid "No image files found."
-msgstr "Nenhum arquivo de imagem encontrado."
-
 msgid "get number of unread messages"
 msgstr "obter o número de mensagens não lidas"
 
@@ -14288,36 +14553,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "O servidor respondeu com um código de resposta 404 para o id {0}. Pulando."
 
-msgid "NMEA-0183 Files"
-msgstr "Arquivos NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Coordenadas importadas: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Sentenças malformadas: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Erros de checksum: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Sentenças desconhecidas: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Zero coordenadas: {0}"
-
-msgid "NMEA import success:"
-msgstr "Sucesso naimportação NMEA:"
-
-msgid "NMEA import failure!"
-msgstr "Falha na importação NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer exception, provavelmente faltam algumas tags."
 
-msgid "Note Files"
-msgstr "Arquivos de nota"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14409,9 +14647,6 @@ msgstr "(Código={0})"
 msgid "The server replied an error with code {0}."
 msgstr "O servidor respondeu um erro com o código {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Arquivos do Servidor OSM compactados com bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Prolog do documento OsmChange já escrito. Por favor, escreva apenas uma vez."
@@ -14421,18 +14656,6 @@ msgstr ""
 "Prolog do ​​documento OsmChange não está escrito ainda. Por favor, escreva "
 "primeiro."
 
-msgid "OsmChange File"
-msgstr "Arquivo OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Arquivo ''{0}'' não existe."
-
-msgid "No data found in file {0}."
-msgstr "Não foram encontrados dados no arquivo {0}."
-
-msgid "Open OsmChange file"
-msgstr "Open OsmChange file"
-
 msgid "Unsupported version: {0}"
 msgstr "Versão não suportada: {0}"
 
@@ -14486,37 +14709,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Valor de preferência inesperado para ''{0}''. Recuperado ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Arquivos do servidor OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Ocorreu um erro ao salvar. <br>O erro é:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Ocorreu um erro durante a restauração de arquivo de backup <br>O erro "
-"é:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Arquivos do Servidor OSM compactados com gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Analisando dados de histórico do OSM..."
 
-msgid "Invalid dataset"
-msgstr "Dataset inválido"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nenhum dado encontrado para a camada ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Não foram encontrados dados no arquivo ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Abrir arquivo OSM"
-
 msgid "Reading was canceled"
 msgstr "A leitura foi cancelada"
 
@@ -14659,6 +14854,9 @@ msgstr "Acessando Servidor..."
 msgid "Downloading OSM notes..."
 msgstr "Baixando notas OSM..."
 
+msgid "Downloading data..."
+msgstr "Baixando dados..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14719,14 +14917,8 @@ msgstr "ID 0 inesperado para o primitivo osm encontrado"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Baixando dados..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Arquivos WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Versão do arquivo WMS sem suporte; encontrado {0}, esperado {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Valor inesperado para a chave ''{0}'' nas preferências, tem ''{1} ''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} bytes lidos"
@@ -15874,37 +16066,6 @@ msgstr "Abrindo URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL não contem {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Versão desatualizada do Java"
-
-msgid "Update Java"
-msgstr "Atualize o Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Você está executando a versão {0} do Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Esta versão não é mais suportada pelo {0} desde {1} e não é recomendada para "
-"uso."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"Em breve o JOSM irá parar de trabalhar com esta versão; recomendamos que "
-"você atualize para o Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Deseja atualizar agora?"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -15980,22 +16141,6 @@ msgstr "Caracteres suspeitos na chave:"
 msgid "Value is too long (max {0} characters):"
 msgstr "O valor é muito longo (max {0} caracteres):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Você quer colar essas tags?"
-
-msgid "Clear buffer"
-msgstr "Limpar buffer"
-
-msgid "Ignore warnings"
-msgstr "Ignorar aviso"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Desculpe, é impossível colar etiquetas do buffer. Ele não contém "
-"qualquer objeto JOSM ou texto adequado. </ p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Não é possível excluir o arquivo {0}"
 
@@ -16019,123 +16164,13 @@ msgid_plural "days"
 msgstr[0] "dia"
 msgstr[1] "dias"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Preferência com a chave ''{0}'' não enclui ''{1}''. Não é possível restaurar "
-"a geometria da janela de preferências."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Preferência com a chave ''{0}'' não fornece um valor int para ''{1}''. "
-"Recuperado {2}. Não é possível restaurar a geometria da janela de "
-"preferências."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Falha ao analisar o campo ''{1}'' das preferências, com chave ''{0}''. A "
-"exceção foi: {2}. Não foi possível restaurar a geometria das janela a partir "
-"das preferências."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Preferência com a chave ''{0}'' não existe. Não é possível restaurar a "
-"geometria da janela de preferências."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorando geometria mal formada: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Falhou ao carregar esquema XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Você encontrou um bug no JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Uma exceção inesperada ocorreu.\n"
-"Isso é sempre um erro de programação. Se você estiver utilizando a última "
-"versão do JOSM, por favor, considere a gentileza de reportar o problema."
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr "Enviar relatório de erro"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Relatar um Erro"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Suprimir novos diálogos de erro para esta sessão."
-
-msgid "Ignore this error."
-msgstr "Ignorar este erro"
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr "Incluir o relatório de status do sistema"
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Sua versão atual do JOSM é {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "O JOSM está procurando por atualizações..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr "O JOSM está atualizado"
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-"O JOSM está desatualizado. A versão atual é {0}. Tente atualizar o JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Atualize o JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19896,9 +19931,6 @@ msgstr "Conteúdo"
 msgid "notice"
 msgstr "comunicado"
 
-msgid "history"
-msgstr "história"
-
 msgid "nature"
 msgstr "natureza"
 
@@ -20480,6 +20512,9 @@ msgstr "Serviço Social"
 msgid "Nursing Home"
 msgstr "Lar de idosos"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Centro de Cuidados"
 
@@ -22922,6 +22957,9 @@ msgstr "Presente/Lembrança"
 msgid "Variety Store"
 msgstr "Loja de variedades"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Casa de apostas"
 
@@ -23801,6 +23839,78 @@ msgstr "Escritórios e negócios"
 msgid "Industrial"
 msgstr "Industrial"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garagens"
 
@@ -24501,6 +24611,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25253,6 +25366,9 @@ msgstr "Cadastro"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25366,15 +25482,6 @@ msgstr "Antigo mapa de Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -33783,15 +33890,21 @@ msgstr "para valor antigo (mtime não modificado)"
 msgid "Photo Geotagging Plugin"
 msgstr "Plug-in de Geotagging de Foto"
 
-msgid "Writing position information to image files..."
-msgstr "Escrevendo informação de posicionamento no arquivo de imagem..."
-
 msgid "Could not read mtime."
 msgstr "Não dá pra ler mtime."
 
 msgid "Could not write mtime."
 msgstr "Não dá pra escrever mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Escrevendo informação de posicionamento no arquivo de imagem..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "O arquivo não pôde ser removido!"
 
@@ -34299,6 +34412,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -34307,6 +34423,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/rm.po b/i18n/po/rm.po
index 9a3c12f..d50ff30 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 04:58+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:57+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ro.po b/i18n/po/ro.po
index 896240d..b1e88bf 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 04:58+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:57+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "X-Poedit-Country: ROMANIA\n"
 "Language: ro\n"
@@ -61,54 +61,9 @@ msgstr "Termeni de utilizare ai fundalului"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Deschiderea link-ului nu e suportată pe platforma curentă (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Ajutor"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Inițializare API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Inițializare validator"
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr "Inițializare stiluri hartă"
-
-msgid "Loading imagery preferences"
-msgstr "Încărcarea preferințelor pentru fundal"
-
-msgid "Updating user interface"
-msgstr "Actualizare interfață utilizator"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignoră URL greșit: \"{0}\""
-
-msgid "Warning"
-msgstr "Avertisment"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Se ingoră fişierul URL prost format: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametrul \"downloadgps\" nu acceptă nume de fișiere sau URL-uri"
-
 msgid "About"
 msgstr "Despre"
 
@@ -192,6 +147,9 @@ msgstr "Anulează"
 msgid "Click to abort launching external browsers"
 msgstr "Click pentru a anula lansarea în execuție a navigatoarelor externe"
 
+msgid "Warning"
+msgstr "Avertisment"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Vă rog selectați cel puțin un nod, o cale sau relație care sunt deja "
@@ -485,13 +443,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Descarc datele OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Descarcă hărţi de la serverul OSM."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -499,9 +454,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -568,6 +520,9 @@ msgstr "Nimic de exportat. Obţineţi mai întâi nişte date."
 msgid "Export GPX file"
 msgstr "Exportă fișier GPX"
 
+msgid "Help"
+msgstr "Ajutor"
+
 msgid "History"
 msgstr "Istoric"
 
@@ -1088,23 +1043,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2359,36 +2297,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Caută..."
 
@@ -2675,86 +2583,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2772,9 +2600,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3123,57 +2948,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3263,6 +3043,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3391,6 +3177,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3405,6 +3200,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3441,10 +3239,64 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
+msgid "incomplete"
+msgstr "incomplet"
 
-msgid "Error in filter"
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nod"
+msgstr[1] "noduri"
+msgstr[2] "de noduri"
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
 msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
@@ -3475,23 +3327,12 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nod"
-msgstr[1] "noduri"
-msgstr[2] "de noduri"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "cale"
 msgstr[1] "căi"
 msgstr[2] "de căi"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3525,6 +3366,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3602,6 +3553,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3786,9 +3852,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3973,9 +4036,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4514,9 +4574,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4631,45 +4688,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "incomplet"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "public transport"
-msgstr ""
-
-msgid "Changeset {0}"
-msgstr ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignoră URL greșit: \"{0}\""
+
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Se ingoră fişierul URL prost format: \"{0}\""
+
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametrul \"downloadgps\" nu acceptă nume de fișiere sau URL-uri"
 
 msgid "Precondition violation"
 msgstr ""
@@ -4759,6 +4785,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr "Actualizare interfață utilizator"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Inițializare API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Inițializare validator"
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr "Inițializare stiluri hartă"
+
+msgid "Loading imagery preferences"
+msgstr "Încărcarea preferințelor pentru fundal"
+
 msgid "usage"
 msgstr "utilizare"
 
@@ -5220,6 +5306,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Raportează eroarea"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5914,6 +6073,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6472,9 +6645,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6585,9 +6755,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7980,6 +8147,62 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
+msgid "Download as new layer"
+msgstr ""
+
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
+msgstr ""
+
+msgid "Open this dialog on startup"
+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 ""
+
+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."
+msgstr ""
+
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr "Descărcaţi obiect"
+
+msgid "Start downloading"
+msgstr "Începe descărcarea"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
 msgid "Data Sources and Types:"
 msgstr ""
 
@@ -7998,72 +8221,65 @@ msgstr ""
 msgid "Select to download notes in the selected download area."
 msgstr ""
 
-msgid "Download as new layer"
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+"<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 ""
 
-msgid "Open this dialog on startup"
+msgid "No area selected yet"
 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>"
+msgid "Download area too large; will probably be rejected by server"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
 msgstr ""
 
-msgid "No area selected yet"
+msgid "Query Wizard"
 msgstr ""
 
-msgid "Download area too large; will probably be rejected by server"
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download area ok, size probably acceptable to server"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Overpass query:"
 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>"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Download all data?"
 msgstr ""
 
-msgid "Download object"
-msgstr "Descărcaţi obiect"
-
-msgid "Start downloading"
-msgstr "Începe descărcarea"
+msgid "Add new snippet"
+msgstr ""
 
-msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Edit selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8108,9 +8324,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8648,6 +8861,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9125,9 +9350,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9206,6 +9428,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Toate Formatele"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr "descrierea pistei gps"
+
+msgid "Add author information"
+msgstr "Adaugă informaţii despre autor"
+
+msgid "Real name"
+msgstr "Nume real"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "Drepturi de autor (adresă)"
+
+msgid "Predefined"
+msgstr "Predefinit"
+
+msgid "Copyright year"
+msgstr "An drepturi de autor"
+
+msgid "Keywords"
+msgstr "Cuvinte cheie"
+
+msgid "Export options"
+msgstr "Opţiuni exportare"
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr "Alegeţi o licenţă predefinită"
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9313,6 +9707,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Personalizează culoarea"
 
@@ -9416,6 +9837,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9491,6 +9915,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10060,9 +10487,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10072,6 +10496,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10487,53 +10914,32 @@ msgstr ""
 
 msgid ""
 "<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "Trebui să reponiţi JOSM pentru ca anumite opţiuni să aibă efect."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "Trebui să reponiţi JOSM pentru ca anumite opţiuni să aibă efect."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11623,19 +12029,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Opţiuni hartă"
 
@@ -11715,12 +12108,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12186,9 +12573,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12206,12 +12590,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12392,69 +12770,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12699,6 +13014,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12811,9 +13149,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Toate Formatele"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Descarc punctele {0} până la {1}..."
 
@@ -12916,86 +13251,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr "descrierea pistei gps"
-
-msgid "Add author information"
-msgstr "Adaugă informaţii despre autor"
-
-msgid "Real name"
-msgstr "Nume real"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "Drepturi de autor (adresă)"
-
-msgid "Predefined"
-msgstr "Predefinit"
-
-msgid "Copyright year"
-msgstr "An drepturi de autor"
-
-msgid "Keywords"
-msgstr "Cuvinte cheie"
-
-msgid "Export options"
-msgstr "Opţiuni exportare"
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr "Alegeţi o licenţă predefinită"
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13005,18 +13260,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13068,36 +13311,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13185,27 +13401,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13251,35 +13452,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13411,6 +13586,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13468,13 +13646,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14410,33 +14582,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14495,20 +14640,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14532,109 +14663,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Raportează eroarea"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18347,9 +18382,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18929,6 +18961,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21369,6 +21404,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22229,6 +22267,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22924,6 +23034,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23676,6 +23789,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23786,15 +23902,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31646,13 +31753,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32150,6 +32263,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32158,6 +32274,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ru.po b/i18n/po/ru.po
index 32d06ae..5311b02 100644
--- a/i18n/po/ru.po
+++ b/i18n/po/ru.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-10 12:18+0000\n"
-"Last-Translator: Aleksey Kabanov <Unknown>\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-09-01 12:04+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-08-13 04:58+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:58+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ru_RU\n"
 
@@ -65,55 +65,9 @@ msgstr "Условия использования подложки"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Открытие ссылки не поддерживается на текущей платформе (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Исполнение стартовых процедур"
-
-msgid "Building main menu"
-msgstr "Создание основного меню"
-
-msgid "Help"
-msgstr "Справка"
-
-msgid "Initializing internal boundaries data"
-msgstr "Инициализация внутренних данных о границах"
-
-msgid "Initializing OSM API"
-msgstr "Инициализация API OSM"
-
-msgid "Initializing internal traffic data"
-msgstr "Инициализация внутренних данных о дорожном движении"
-
-msgid "Initializing validator"
-msgstr "Инициализация валидатора"
-
-msgid "Initializing presets"
-msgstr "Инициализация заготовок"
-
-msgid "Initializing map styles"
-msgstr "Инициализация стилей карты"
-
-msgid "Loading imagery preferences"
-msgstr "Загрузка настроек изображения"
-
-msgid "Updating user interface"
-msgstr "Обновление интерфейса пользователя"
-
 msgid "Failed to save default preferences."
 msgstr "Не удалось сохранить настройки по умолчанию."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Некорректный URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Внимание"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Некорректный файловый URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Параметр «downloadgps» не может использовать имена файлов или файловые URL"
-
 msgid "About"
 msgstr "О программе"
 
@@ -199,6 +153,9 @@ msgstr "Отмена"
 msgid "Click to abort launching external browsers"
 msgstr "Нажмите, чтобы отменить запуск внешних браузеров"
 
+msgid "Warning"
+msgstr "Внимание"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Пожалуйста, выделите, по крайней мере, одно уже загруженное на сервер: "
@@ -491,14 +448,11 @@ msgstr ""
 "* Одну линию без самопересечений с  не более чем двумя её точками;\n"
 "* Три точки."
 
-msgid "Download from OSM..."
-msgstr "Скачать с OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Скачать картографические данные с сервера OSM."
+msgid "Download data"
+msgstr "Скачать данные"
 
-msgid "Please select a download area first."
-msgstr "Пожалуйста, выберите сначала область для скачивания."
+msgid "Download map data from a server of your choice"
+msgstr "Скачать картографические данные с сервера по вашему выбору"
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -507,9 +461,6 @@ msgstr ""
 "<html>Это действие потребует {0} отдельных<br>запросов на скачивание. "
 "Продолжить?</html>"
 
-msgid "Download data"
-msgstr "Скачать данные"
-
 msgid "Download notes in current view"
 msgstr "Скачать заметки в текущей просматриваемой области"
 
@@ -578,6 +529,9 @@ msgstr "Нет данных для экспорта. Создайте данны
 msgid "Export GPX file"
 msgstr "Экспорт GPX-файла"
 
+msgid "Help"
+msgstr "Справка"
+
 msgid "History"
 msgstr "Журнал"
 
@@ -1151,25 +1105,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Пожалуйста, выделите линии с углами, близкими к 90 или 180 градусов."
 
-msgid "Download from Overpass API ..."
-msgstr "Загрузить с Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Загрузить картографические данные с сервера Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr "Составить запрос Overpass с помощью мастера запросов Overpass Turbo"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-"Введите запрос Overpass ниже или создайте его с помощью мастера запросов "
-"Overpass Turbo"
-
-msgid "Show/hide Overpass snippet list"
-msgstr "Показать/скрыть список фрагментов запросов Overpass"
-
 msgid "Paste"
 msgstr "Вставить"
 
@@ -2559,36 +2494,6 @@ msgstr "Выбрать отношение (добавить)"
 msgid "Select relation"
 msgstr "Выбрать отношение"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Поиск..."
 
@@ -2889,95 +2794,6 @@ msgstr[0] "Поиск в {0} объекте"
 msgstr[1] "Поиск в {0} объектах"
 msgstr[2] "Поиск в {0} объектах"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "А-я"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Ошибка в регулярном выражении \"{0}\" на позиции {1}, полный текст ошибки:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Ошибка синтаксического разбора регулярного выражения \"{0}\":\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Не удалось выполнить разбор метки времени ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Ожидалось {0} после {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Ожидается диапазон ID объектов"
-
-msgid "Range of changeset ids expected"
-msgstr "Ожидается диапазон ID пакетов правок"
-
-msgid "Range of versions expected"
-msgstr "Ожидается диапазон версий"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Ключ не может быть пустым при использовании тега оператора. Пример "
-"использования: ключ=значение"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Неизвестный тип элемента: {0}. Разрешенные значения: точка, линия или "
-"отношение"
-
-msgid "Positive integer expected"
-msgstr "Ожидалось положительное целое число"
-
-msgid "Range of numbers expected"
-msgstr "Ожидалась последовательность чисел"
-
-msgid "Unknown preset name: "
-msgstr "Неизвестное название заготовки: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Неожиданный маркер. Ожидалось {0}, найдено {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Не удалось разобрать MapCSS-селектор"
-
-msgid "Unexpected token: {0}"
-msgstr "Неожиданная лексема: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Пропущен параметр для OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Отсутствуют параметры для XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Пропущен оператор для NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Автоматически отбрасывать значение тега ''{0}'' на удалённом объекте {1}"
@@ -3000,9 +2816,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Нарушение возможностей API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Циклические зависимости между отношениями:"
-
 msgid "Removed obsolete tags"
 msgstr "Удалены устаревшие теги"
 
@@ -3409,61 +3222,12 @@ msgstr "Роли в отношениях, относящихся к"
 msgid "Automatic tag correction"
 msgstr "Автоматически исправлять теги"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Невозможно создать каталог {0}! Автосохранение будет отключено"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Невозможно создать файл {0}, будет использовано другое имя файла"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Ошибка ввода-вывода при создании файла. Автосохранение пропущено: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Невозможно удалить старый бэкап файл {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Результаты вашей работы были сохранены автоматически."
-
-msgid "Restoring files"
-msgstr "Восстановление файлов"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Не удалось удалить файл резервной копии {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Не удалось удалить PID-файл {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Не удалось удалить помещённый в архив файл резервной копии {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Неправильное значение широты ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Неправильное значение долготы ''{0}''"
 
-msgid "Question"
-msgstr "Вопрос"
-
-msgid "Message"
-msgstr "Сообщение"
-
-msgid "Enter text"
-msgstr "Введите текст"
-
-msgid "Installing plugins"
-msgstr "Установка модулей"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Файл настроек пытается добавить параметры в <b>{0}</b>,<br/> но его "
-"значение по умолчанию в данный момент неизвестно.<br/> Пожалуйста, "
-"активируйте соответствующую функцию вручную и повторите импорт."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Не удалось создать отсутствующий каталог кэша: {0}"
 
@@ -3571,6 +3335,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Настройка {0}  была удалена, так как она больше не используется."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Файл настроек пытается добавить параметры в <b>{0}</b>,<br/> но его "
+"значение по умолчанию в данный момент неизвестно.<br/> Пожалуйста, "
+"активируйте соответствующую функцию вручную и повторите импорт."
+
 msgid "Metric"
 msgstr "Метрическая система"
 
@@ -3709,6 +3482,15 @@ msgstr ""
 msgid "Note"
 msgstr "Заметка"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Не удалось получить токен доступа OAuth из менеджера учётных данных"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Текущий менеджер учётных данных имеет тип ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "Не удалось сохранить токен доступа OAuth в менеджере учётных данных"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "обнаружено id > 0. Получено {0}"
 
@@ -3725,6 +3507,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Элемент с id=0 не может быть невидимым"
 
+msgid "Cyclic dependency between relations:"
+msgstr "Циклические зависимости между отношениями:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3767,6 +3552,63 @@ msgstr "Объединение данных..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Тест ''{0}'' завершен за {1}"
 
+msgid "incomplete"
+msgstr "неполный"
+
+msgid "House {0}"
+msgstr "Дом {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Дом номер {0} на {1}"
+
+msgid "House number {0}"
+msgstr "Дом номер {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "точка"
+msgstr[1] "точки"
+msgstr[2] "точек"
+
+msgid "highway"
+msgstr "дорога"
+
+msgid "railway"
+msgstr "железная дорога"
+
+msgid "waterway"
+msgstr "водоём"
+
+msgid "landuse"
+msgstr "землепользование"
+
+msgid "building"
+msgstr "здание"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} точка"
+msgstr[1] "{0} точки"
+msgstr[2] "{0} точек"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} участник"
+msgstr[1] "{0} участника"
+msgstr[2] "{0} участников"
+
+msgid "public transport"
+msgstr "общественный транспорт"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "отношение"
+msgstr[1] "отношения"
+msgstr[2] "отношений"
+
+msgid "Changeset {0}"
+msgstr "Пакет правок {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Ошибка в фильтре <code>{0}</code>:<br>{1}"
 
@@ -3805,24 +3647,12 @@ msgid ""
 msgstr ""
 "Слияние элементов с различными id невозможно. Этот id: {0}, другой же: {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "точка"
-msgstr[1] "точки"
-msgstr[2] "точек"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "линия"
 msgstr[1] "линии"
 msgstr[2] "линий"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "отношение"
-msgstr[1] "отношения"
-msgstr[2] "отношений"
-
 msgid "closedway"
 msgstr "замкнутая линия"
 
@@ -3858,6 +3688,125 @@ msgstr "Невозможно сравнить элемент с  ID ''{0}'' и 
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "параметр {0} не в интервале 0..{1}, текущее значение {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Ошибка в регулярном выражении \"{0}\" на позиции {1}, полный текст ошибки:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Ошибка синтаксического разбора регулярного выражения \"{0}\":\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Не удалось выполнить разбор метки времени ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Ожидалось {0} после {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Ожидается диапазон ID объектов"
+
+msgid "Range of changeset ids expected"
+msgstr "Ожидается диапазон ID пакетов правок"
+
+msgid "Range of versions expected"
+msgstr "Ожидается диапазон версий"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Ключ не может быть пустым при использовании тега оператора. Пример "
+"использования: ключ=значение"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Неизвестный тип элемента: {0}. Разрешенные значения: точка, линия или "
+"отношение"
+
+msgid "Positive integer expected"
+msgstr "Ожидалось положительное целое число"
+
+msgid "Range of numbers expected"
+msgstr "Ожидалась последовательность чисел"
+
+msgid "Unknown preset name: "
+msgstr "Неизвестное название заготовки: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Не удалось разобрать MapCSS-селектор"
+
+msgid "Unexpected token: {0}"
+msgstr "Неожиданная лексема: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Пропущен параметр для OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Отсутствуют параметры для XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Пропущен оператор для NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Неожиданный маркер. Ожидалось {0}, найдено {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "А-я"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Не удалось загрузить класс отрисовщика карты ''{0}''. Класс не найден."
@@ -3940,6 +3889,121 @@ msgstr "Ожидался элемент ''{0}'', а получен ''{1}''"
 msgid "value expected"
 msgstr "ожидалось значение"
 
+msgid "Short Description:"
+msgstr "Краткое описание:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Автор:"
+
+msgid "Webpage:"
+msgstr "Веб-страница:"
+
+msgid "Description:"
+msgstr "Описание:"
+
+msgid "Version:"
+msgstr "Версия:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Минимальная версия JOSM:"
+
+msgid "by {0}"
+msgstr "{0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "Стандартный JOSM (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr "Встроенный стиль, используемый как базовый для подключаемых стилей"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "Основной стиль Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Встроенная заготовка"
+
+msgid "The default preset for JOSM"
+msgstr "Заготовка по умолчанию для JOSM"
+
+msgid "Addresses"
+msgstr "Адреса"
+
+msgid "Checks for errors on addresses"
+msgstr "Проверка ошибок в адресах"
+
+msgid "Tag combinations"
+msgstr "Комбинация тегов"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Проверка на отсутствие или сомнительные комбинации тегов"
+
+msgid "Deprecated features"
+msgstr "Нерекомендуемые элементы"
+
+msgid "Checks for deprecated features"
+msgstr "Проверка на нерекомендуемые элементы"
+
+msgid "Geometry"
+msgstr "Геометрия"
+
+msgid "Checks for geometry errors"
+msgstr "Проверка на ошибки геометрии"
+
+msgid "Highways"
+msgstr "Дороги"
+
+msgid "Checks for errors on highways"
+msgstr "Проверка на ошибки дорог"
+
+msgid "Multiple values"
+msgstr "Множественные значения"
+
+msgid "Checks for wrong multiple values"
+msgstr "Проверка на ошибочное присвоение нескольких значений одному ключу"
+
+msgid "Numeric values"
+msgstr "Числовые значения"
+
+msgid "Checks for wrong numeric values"
+msgstr "Проверка на неправилные числовые значения"
+
+msgid "Religion"
+msgstr "Религия"
+
+msgid "Checks for errors on religious objects"
+msgstr "Проверка на ошибки религиозных объектов"
+
+msgid "Relations"
+msgstr "Отношения"
+
+msgid "Checks for errors on relations"
+msgstr "Проверка ошибок в отношениях"
+
+msgid "Territories"
+msgstr "Территории"
+
+msgid "Checks for territories-specific features"
+msgstr "Проверка на свойства, специфичные для отдельных территорий"
+
+msgid "Unnecessary tags"
+msgstr "Ненужные теги"
+
+msgid "Checks for unnecessary tags"
+msgstr "Проверка наличия ненужных тегов"
+
+msgid "Wikipedia"
+msgstr "Википедия"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Проверка неправильных тегов Википедии"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Проекции UTM (''+proj=utm'') требуется параметр ''+zone=...''."
 
@@ -4132,9 +4196,6 @@ msgstr "URL содержит недопустимый фрагмент: {0}"
 msgid "URL validator"
 msgstr "Модуль проверки URL адресов"
 
-msgid "Addresses"
-msgstr "Адреса"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Проверяет ошибки в адресах и отношениях associatedStreet."
 
@@ -4326,9 +4387,6 @@ msgstr "Дублирующиеся точки на линии"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Проверяет линии на наличие одинаковых последовательных точек"
 
-msgid "Highways"
-msgstr "Дороги"
-
 msgid "Performs semantic checks on highways."
 msgstr "Семантическая проверка тегов на дорогах"
 
@@ -4895,9 +4953,6 @@ msgstr "тип водоёма: {0}"
 msgid "boundary type {0}"
 msgstr "тип границы {0}"
 
-msgid "building"
-msgstr "здание"
-
 msgid "area"
 msgstr "полигон"
 
@@ -5016,47 +5071,15 @@ msgstr "Не показывать снова (в этом сеансе)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показывать снова (запомнить выбор)"
 
-msgid "incomplete"
-msgstr "неполный"
-
-msgid "House {0}"
-msgstr "Дом {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Дом номер {0} на {1}"
-
-msgid "House number {0}"
-msgstr "Дом номер {0}"
-
-msgid "highway"
-msgstr "дорога"
-
-msgid "railway"
-msgstr "железная дорога"
-
-msgid "waterway"
-msgstr "водоём"
-
-msgid "landuse"
-msgstr "землепользование"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} точка"
-msgstr[1] "{0} точки"
-msgstr[2] "{0} точек"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} участник"
-msgstr[1] "{0} участника"
-msgstr[2] "{0} участников"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Некорректный URL: \"{0}\""
 
-msgid "public transport"
-msgstr "общественный транспорт"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Некорректный файловый URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Пакет правок {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Параметр «downloadgps» не может использовать имена файлов или файловые URL"
 
 msgid "Precondition violation"
 msgstr "Нарушение предварительного условия"
@@ -5147,6 +5170,72 @@ msgstr "Смещение"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Ожидалось непустое значение для параметра ''{0}'', получено ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Устаревшая версия Java"
+
+msgid "Update Java"
+msgstr "Обновить Java"
+
+msgid "You are running version {0} of Java."
+msgstr "У вас версия Java {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Эта версия больше не поддерживается {0} с {1} и не рекомендуется для "
+"использования."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM скоро перестанет работать с этой версией. Мы настоятельно рекомендуем "
+"выполнить обновление до Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Вы можете столкнуться с критическими ошибками Java; мы рекомендуем вам "
+"обновиться до Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Хотите выполнить обновление сейчас?"
+
+msgid "Starting file watcher"
+msgstr "Запуск наблюдения за файлами"
+
+msgid "Executing platform startup hook"
+msgstr "Исполнение стартовых процедур"
+
+msgid "Building main menu"
+msgstr "Создание основного меню"
+
+msgid "Updating user interface"
+msgstr "Обновление интерфейса пользователя"
+
+msgid "Initializing internal boundaries data"
+msgstr "Инициализация внутренних данных о границах"
+
+msgid "Initializing OSM API"
+msgstr "Инициализация API OSM"
+
+msgid "Initializing internal traffic data"
+msgstr "Инициализация внутренних данных о дорожном движении"
+
+msgid "Initializing validator"
+msgstr "Инициализация валидатора"
+
+msgid "Initializing presets"
+msgstr "Инициализация заготовок"
+
+msgid "Initializing map styles"
+msgstr "Инициализация стилей карты"
+
+msgid "Loading imagery preferences"
+msgstr "Загрузка настроек изображения"
+
 msgid "usage"
 msgstr "использование"
 
@@ -5657,6 +5746,89 @@ msgstr ""
 "Текущее значение не является правильным индексом квадрата для данного уровня "
 "масштабирования"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Вы столкнулись с ошибкой в JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Возникла непредвиденная исключительная ситуация.\n"
+"Это всегда ошибка программирования. Если у вас самая новая версия JOSM, "
+"отправьте, пожалуйста, отчёт об этой ошибке."
+
+msgid "Debug information"
+msgstr "Отладочная информация"
+
+msgid "Manually report at:"
+msgstr "Отправить отчёт вручную на:"
+
+msgid "Is JOSM up to date?"
+msgstr "У вас последняя версия JOSM?"
+
+msgid "Send bug report"
+msgstr "Отправить отчёт об ошибке"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Если у вас самая новая версия JOSM и модулей, отправьте, пожалуйста, отчёт "
+"об ошибке в нашу систему отслеживания ошибок.\n"
+"Некоторая информация об ошибке должна быть включена в отчёт автоматически. "
+"Добавьте сведения о том, как воспроизвести ошибку и постарайтесь указать как "
+"можно больше подробностей."
+
+msgid "Report Bug"
+msgstr "Сообщить об ошибке"
+
+msgid "Suppress this error for this session."
+msgstr "Не показывать больше данную ошибку в этом сеансе"
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Больше не показывать ошибки в этой сессии"
+
+msgid "Ignore this error."
+msgstr "Игнорировать эту ошибку."
+
+msgid "Include the system status report."
+msgstr "Включить отчет о состоянии системы."
+
+msgid "Include information about the data you were working on."
+msgstr "Включить информацию о данных, с которыми вы работали."
+
+msgid "Include all stack traces."
+msgstr "Включить все трассировки стека."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша текущая версия JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "Поиск обновлений JOSM..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Произошла ошибка во время проверки обновлений JOSM."
+
+msgid "JOSM is up to date."
+msgstr "У вас самая новая версия JOSM."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM устарел. Текущая версия — {0}. Попробуйте обновить JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Перед отправкой отчёта об ошибке убедитесь, что вы обновили JOSM до самой "
+"новой версии, здесь:"
+
+msgid "Update JOSM"
+msgstr "Обновить JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Фон конфликта: нет конфликта"
 
@@ -6443,6 +6615,22 @@ msgstr ""
 "Копируемые данные содержат неполные объекты. При вставке они будут удалены. "
 "Вы хотите вставить данные без неполных объектов?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Вставить эти теги?"
+
+msgid "Clear buffer"
+msgstr "Очистить буфер"
+
+msgid "Ignore warnings"
+msgstr "Игнорировать предупреждения"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Невозможно вставить теги из буфера обмена. Он не содержит объектов "
+"JOSM или подходящего текста. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Только для выбранных объектов"
 
@@ -7046,9 +7234,6 @@ msgstr "Источник"
 msgid "Title:"
 msgstr "Название:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Встроенный стиль, внутренний путь:"
 
@@ -7164,9 +7349,6 @@ msgstr ""
 "Указан неверный список ID\n"
 "Продолжить невозможно."
 
-msgid "Relations"
-msgstr "Отношения"
-
 msgid "Open a list of all relations."
 msgstr "Показать список всех отношений."
 
@@ -8688,24 +8870,6 @@ msgstr "Значение широты должно быть в пределах
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Значение долготы должно быть в пределах  [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Источники и типы данных:"
-
-msgid "OpenStreetMap data"
-msgstr "Данные OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Пометьте, чтобы скачать с сервера ДАННЫЕ OSM для выбранной области."
-
-msgid "Raw GPS data"
-msgstr "Данные GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Пометьте, чтобы скачать с сервера ТРЕКИ GPS для выбранной области."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Выберите для скачивания заметок в выделенной области скачивания"
-
 msgid "Download as new layer"
 msgstr "Скачать как новый слой"
 
@@ -8741,32 +8905,12 @@ msgstr ""
 "правая кнопка мыши — для прокручивания карты, колёсико или +/- — для "
 "масштабирования."
 
-msgid "No area selected yet"
-msgstr "Область ещё не выбрана"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Область для скачивания слишком велика. Вероятно, сервер откажется обработать "
-"запрос."
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Область для скачивания приемлема по площади."
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Нажмите, чтобы закрыть диалог и прервать скачивание с сервера"
 
 msgid "Click to download the currently selected area"
 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 "Скачать ссылающихся на объект (родительские отношения)"
 
@@ -8789,6 +8933,96 @@ msgstr "Отметьте, если должны быть скачаны и уч
 msgid "Download referrers (parent relations and ways)"
 msgstr "Скачать ссылающиеся объекты (родительские отношения и линии)"
 
+msgid "Download from OSM"
+msgstr "Скачать с OSM"
+
+msgid "Data Sources and Types:"
+msgstr "Источники и типы данных:"
+
+msgid "OpenStreetMap data"
+msgstr "Данные OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Пометьте, чтобы скачать с сервера ДАННЫЕ OSM для выбранной области."
+
+msgid "Raw GPS data"
+msgstr "Данные GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Пометьте, чтобы скачать с сервера ТРЕКИ GPS для выбранной области."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Выберите для скачивания заметок в выделенной области скачивания"
+
+msgid "Please select a download area first."
+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 "No area selected yet"
+msgstr "Область ещё не выбрана"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Область для скачивания слишком велика. Вероятно, сервер откажется обработать "
+"запрос."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Область для скачивания приемлема по площади."
+
+msgid "Download from Overpass API"
+msgstr "Скачать с Overpass API"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "Составить запрос Overpass с помощью мастера запросов Overpass Turbo"
+
+msgid "Query Wizard"
+msgstr "Мастер запросов"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+"Введите запрос Overpass ниже или создайте его с помощью мастера запросов "
+"Overpass Turbo"
+
+msgid "Your saved queries:"
+msgstr "Сохранённые запросы:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Показать/скрыть список фрагментов запросов Overpass"
+
+msgid "Overpass query:"
+msgstr "Запрос Overpass:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+"Вы ввели пустой запрос. Вы хотите загрузить все данные в этой области?"
+
+msgid "Download all data?"
+msgstr "Скачать все данные?"
+
+msgid "Add new snippet"
+msgstr "Добавить новый фрагмент"
+
+msgid "Delete selected snippet"
+msgstr "Удалить выделенный фрагмент"
+
+msgid "Edit selected snippet"
+msgstr "Изменить выделенный фрагмент"
+
+msgid "history"
+msgstr "история"
+
 msgid "Please select an item first"
 msgstr "Сначала выберите элемент"
 
@@ -8831,9 +9065,6 @@ msgstr "Мастер запросов Overpass не может разобрат
 msgid "Parse error"
 msgstr "Ошибка разбора"
 
-msgid "Query Wizard"
-msgstr "Мастер запросов"
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9458,6 +9689,18 @@ msgstr "Аутентификация с данными именем пользо
 msgid "Cancel authentication"
 msgstr "Отменить аутентификацию"
 
+msgid "Question"
+msgstr "Вопрос"
+
+msgid "Message"
+msgstr "Сообщение"
+
+msgid "Enter text"
+msgstr "Введите текст"
+
+msgid "Installing plugins"
+msgstr "Установка модулей"
+
 msgid "Downloading file"
 msgstr "Скачивание файла"
 
@@ -10068,10 +10311,6 @@ msgstr "Выбор объектов для передачи на сервер"
 msgid "Cancel uploading"
 msgstr "Отменить передачу на сервер"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Непредвиденное значение для ключа ''{0}'' в настройках, получено ''{1}''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Заполнить один пакет правок и вернуться к Диалогу передачи на сервер"
 
@@ -10161,6 +10400,189 @@ msgstr[0] "Удалить {0} объект:"
 msgstr[1] "Удалить {0} объекта:"
 msgstr[2] "Удалить {0} объектов:"
 
+msgid "All Formats"
+msgstr "Все форматы"
+
+msgid "Could not export ''{0}''."
+msgstr "Невозможно экспортировать ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Невозможно импортировать ''{0}''."
+
+msgid "Could not import files."
+msgstr "Невозможно импортировать файлы."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Невозможно прочитать файл ''{0}''.<br>Ошибка:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Невозможно прочитать файлы.<br>Ошибка:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Файлы GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Слой «{0}» не поддерживается"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Внимание: GPL несовместима с лицензией OSM. Не передавайте на сервер треки, "
+"лицензированные под GPL"
+
+msgid "GPS track description"
+msgstr "описание трека GPS"
+
+msgid "Add author information"
+msgstr "Добавить информацию об авторе"
+
+msgid "Real name"
+msgstr "Настоящее имя"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Авторские права (ссылка)"
+
+msgid "Predefined"
+msgstr "Набор"
+
+msgid "Copyright year"
+msgstr "Авторские права (год)"
+
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgid "Export options"
+msgstr "Опции экспорта"
+
+msgid "Export and Save"
+msgstr "Экспортировать и сохранить"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Ошибка при экспорте {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Выберите лицензию из набора"
+
+msgid "GPX Files"
+msgstr "Файлы GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Сбой обработки данных слоя ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Произошла ошибка при анализе данных gpx для слоя «{0}». Будет доступна "
+"только часть файла."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Произошла ошибка при обработке gpx файла ''{0}''. Файл будет доступен "
+"частично."
+
+msgid "Image Files"
+msgstr "Файлы изображений"
+
+msgid "folder"
+msgstr "каталог"
+
+msgid "Looking for image files"
+msgstr "Поиск файлов изображений"
+
+msgid "No image files found."
+msgstr "Файлы изображений не найдены"
+
+msgid "NMEA-0183 Files"
+msgstr "Файлы NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Импортировано координат: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Неверный запрос: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Ошибок проверки контрольной суммы: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Неизвестное выражение: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Нулевых координат: {0}"
+
+msgid "NMEA import success:"
+msgstr "Успешный импорт NMEA данных:"
+
+msgid "NMEA import failure!"
+msgstr "Сбой при импорте NMEA!"
+
+msgid "Note Files"
+msgstr "Файлы заметок"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Файлы сервера OSM сжаты с помощью bzip2"
+
+msgid "OsmChange File"
+msgstr "Файл OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Файл \"{0}\" не существует"
+
+msgid "No data found in file {0}."
+msgstr "Не найдены данные в файле {0}."
+
+msgid "Open OsmChange file"
+msgstr "Открыть файл OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Файлы сервера OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Произошла ошибка при сохранении.<br>Ошибка: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Произошла ошибка при восстановлении резервной копии файла.<br>Ошибка: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Файлы сервера OSM сжаты с помощью gzip"
+
+msgid "Invalid dataset"
+msgstr "Неверный набор данных"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Нет данных для слоя ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Нет данных в файле ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Открыть файл OSM"
+
+msgid "Validation Error Files"
+msgstr "Файлы ошибок при проверке"
+
+msgid "WMS Files (*.wms)"
+msgstr "Файлы WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+"Неподдерживаемый формат версии WMS файла; обнаружено {0}, ожидалось {1}"
+
 msgid "Native projections"
 msgstr "Исходные проекции"
 
@@ -10272,6 +10694,34 @@ msgstr "Больше не показывать это сообщение"
 msgid "Hide this message and never show it again"
 msgstr "Скрыть это сообщение и больше не показывать"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Невозможно создать каталог {0}! Автосохранение будет отключено"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Невозможно создать файл {0}, будет использовано другое имя файла"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Ошибка ввода-вывода при создании файла. Автосохранение пропущено: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Невозможно удалить старый бэкап файл {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Результаты вашей работы были сохранены автоматически."
+
+msgid "Restoring files"
+msgstr "Восстановление файлов"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Не удалось удалить файл резервной копии {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Не удалось удалить PID-файл {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Не удалось удалить помещённый в архив файл резервной копии {0}"
+
 msgid "Customize Color"
 msgstr "Выбрать цвет"
 
@@ -10380,6 +10830,9 @@ msgstr "Всего заметок:"
 msgid "Changes need uploading?"
 msgstr "Нужно передать изменения на сервер?"
 
+msgid "Save Note file"
+msgstr "Сохранить файл заметок"
+
 msgid "outside downloaded area"
 msgstr "вне скачанной области"
 
@@ -10456,6 +10909,9 @@ msgstr "Ошибки при проверке"
 msgid "No validation errors"
 msgstr "Проверка не выявила ошибок"
 
+msgid "Save Validation errors file"
+msgstr "Сохранить файл ошибок проверки"
+
 msgid "Set WMS Bookmark"
 msgstr "Установить закладку WMS"
 
@@ -11091,9 +11547,6 @@ msgstr "(по ссылке: "
 msgid "Select the map painting styles"
 msgstr "Выберите стили отрисовки карты"
 
-msgid "loading style ''{0}''..."
-msgstr "загрузка стиля ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11110,6 +11563,9 @@ msgstr[2] ""
 "Произошло {0} ошибок при загрузке стиля. Подробности смотрите в пункте "
 "\"Информация\" из контекстного меню."
 
+msgid "loading style ''{0}''..."
+msgstr "загрузка стиля ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Не удалось загрузить стили Mappaint из ''{0}''. Ошибка: {1}"
 
@@ -11644,27 +12100,6 @@ msgstr "Скачать модули"
 msgid "Icon paths:"
 msgstr "Путь к значкам:"
 
-msgid "Short Description:"
-msgstr "Краткое описание:"
-
-msgid "Author:"
-msgstr "Автор:"
-
-msgid "Webpage:"
-msgstr "Веб-страница:"
-
-msgid "Description:"
-msgstr "Описание:"
-
-msgid "Version:"
-msgstr "Версия:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Минимальная версия JOSM:"
-
-msgid "by {0}"
-msgstr "{0}"
-
 msgid "Name (optional):"
 msgstr "Название (необязательно):"
 
@@ -12838,19 +13273,6 @@ msgstr ""
 "Предупреждение: неверный формат или запись в списке стилей ''{0}''. Получено "
 "''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "Стандартный JOSM (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr "Встроенный стиль, используемый как базовый для подключаемых стилей"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "Основной стиль Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Настройки карты"
 
@@ -12948,12 +13370,6 @@ msgstr ""
 "Предупреждение: неправильный формат пункта в списке заготовок ''{0}''. "
 "Получено ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Встроенная заготовка"
-
-msgid "The default preset for JOSM"
-msgstr "Заготовка по умолчанию для JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Модуль  {0} используется этим модулем:"
@@ -13454,9 +13870,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Не удалось получить учётные данные OSM из менеджера учётных данных."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Текущий менеджер учётных данных имеет тип ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Не удалось сохранить учётные данные OSM в менеджере учётных данных."
 
@@ -13476,12 +13889,6 @@ msgstr ""
 "Указывает, сколько дней должно пройти после закрытия заметки, чтобы она "
 "больше не скачивалась"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Не удалось получить токен доступа OAuth из менеджера учётных данных"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "Не удалось сохранить токен доступа OAuth в менеджере учётных данных"
-
 msgid "Save to preferences"
 msgstr "Сохранить в настройках"
 
@@ -13683,69 +14090,6 @@ msgstr ""
 "Предупреждение: недопустимый формат записи в списке правил ''{0}''. Получено "
 "''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Проверка ошибок в адресах"
-
-msgid "Tag combinations"
-msgstr "Комбинация тегов"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Проверка на отсутствие или сомнительные комбинации тегов"
-
-msgid "Deprecated features"
-msgstr "Нерекомендуемые элементы"
-
-msgid "Checks for deprecated features"
-msgstr "Проверка на нерекомендуемые элементы"
-
-msgid "Geometry"
-msgstr "Геометрия"
-
-msgid "Checks for geometry errors"
-msgstr "Проверка на ошибки геометрии"
-
-msgid "Checks for errors on highways"
-msgstr "Проверка на ошибки дорог"
-
-msgid "Multiple values"
-msgstr "Множественные значения"
-
-msgid "Checks for wrong multiple values"
-msgstr "Проверка на ошибочное присвоение нескольких значений одному ключу"
-
-msgid "Numeric values"
-msgstr "Числовые значения"
-
-msgid "Checks for wrong numeric values"
-msgstr "Проверка на неправилные числовые значения"
-
-msgid "Religion"
-msgstr "Религия"
-
-msgid "Checks for errors on religious objects"
-msgstr "Проверка на ошибки религиозных объектов"
-
-msgid "Checks for errors on relations"
-msgstr "Проверка ошибок в отношениях"
-
-msgid "Territories"
-msgstr "Территории"
-
-msgid "Checks for territories-specific features"
-msgstr "Проверка на свойства, специфичные для отдельных территорий"
-
-msgid "Unnecessary tags"
-msgstr "Ненужные теги"
-
-msgid "Checks for unnecessary tags"
-msgstr "Проверка наличия ненужных тегов"
-
-msgid "Wikipedia"
-msgstr "Википедия"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Проверка неправильных тегов Википедии"
-
 msgid "Tag checker rules"
 msgstr "Правила проверки тегов"
 
@@ -14007,6 +14351,37 @@ msgstr "Все файлы (*.*)"
 msgid "Received error page:"
 msgstr "Полученная страница сообщения об ошибке:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Настройка с ключом ''{0}'' не содержит ''{1}''. Невозможно восстановить "
+"геометрию окна из настроек."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Настройка с ключом ''{0}'' не содержит целое (int) значение для ''{1}''. "
+"Получено {2}. Невозможно восстановить геометрию окна с помощью параметров."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Ошибка при анализе поля ''{1}'' в настройке с ключом ''{0}''. Текст ошибки: "
+"{2}. Невозможно восстановить геометрию окна в соответствии с настройками."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Настройка с ключом ''{0}'' не существует. Невозможно восстановить геометрию "
+"окна в соответствии с настройками."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Игнорируем неверную геометрию: {0}"
+
 msgid "Min. latitude"
 msgstr "Мин. широта"
 
@@ -14141,9 +14516,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Удалённый дочерний элемент {0} входит в отношение {1}"
 
-msgid "All Formats"
-msgstr "Все форматы"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Скачивание точек с {0} до {1}..."
 
@@ -14269,94 +14641,6 @@ msgstr "Разбор ответа сервера..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Неожиданный элемент XML с именем ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Невозможно экспортировать ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Невозможно импортировать ''{0}''."
-
-msgid "Could not import files."
-msgstr "Невозможно импортировать файлы."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Невозможно прочитать файл ''{0}''.<br>Ошибка:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Невозможно прочитать файлы.<br>Ошибка:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Файлы GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Слой «{0}» не поддерживается"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Внимание: GPL несовместима с лицензией OSM. Не передавайте на сервер треки, "
-"лицензированные под GPL"
-
-msgid "GPS track description"
-msgstr "описание трека GPS"
-
-msgid "Add author information"
-msgstr "Добавить информацию об авторе"
-
-msgid "Real name"
-msgstr "Настоящее имя"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Авторские права (ссылка)"
-
-msgid "Predefined"
-msgstr "Набор"
-
-msgid "Copyright year"
-msgstr "Авторские права (год)"
-
-msgid "Keywords"
-msgstr "Ключевые слова"
-
-msgid "Export options"
-msgstr "Опции экспорта"
-
-msgid "Export and Save"
-msgstr "Экспортировать и сохранить"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Ошибка при экспорте {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Выберите лицензию из набора"
-
-msgid "GPX Files"
-msgstr "Файлы GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Сбой обработки данных слоя ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Произошла ошибка при анализе данных gpx для слоя «{0}». Будет доступна "
-"только часть файла."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Произошла ошибка при обработке gpx файла ''{0}''. Файл будет доступен "
-"частично."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Ошибка разбора: неправильная структура документа gpx"
 
@@ -14366,18 +14650,6 @@ msgstr "(строка {0}, столбец {1})"
 msgid "Unknown mode {0}."
 msgstr "Неизвестный режим {0}."
 
-msgid "Image Files"
-msgstr "Файлы изображений"
-
-msgid "folder"
-msgstr "каталог"
-
-msgid "Looking for image files"
-msgstr "Поиск файлов изображений"
-
-msgid "No image files found."
-msgstr "Файлы изображений не найдены"
-
 msgid "get number of unread messages"
 msgstr "получить число непрочитанных сообщений"
 
@@ -14433,36 +14705,9 @@ msgstr "Выборка отношения с id {0} из ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Сервер выдал ошибку 404 для id {0}. Пропускаем"
 
-msgid "NMEA-0183 Files"
-msgstr "Файлы NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Импортировано координат: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Неверный запрос: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Ошибок проверки контрольной суммы: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Неизвестное выражение: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Нулевых координат: {0}"
-
-msgid "NMEA import success:"
-msgstr "Успешный импорт NMEA данных:"
-
-msgid "NMEA import failure!"
-msgstr "Сбой при импорте NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Пустой указатель ошибки, возможно, есть отсутствующие теги"
 
-msgid "Note Files"
-msgstr "Файлы заметок"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14556,9 +14801,6 @@ msgstr "(Код={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Сервер возвратил ошибку с кодом {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Файлы сервера OSM сжаты с помощью bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Пролог документа OsmChange уже записан. Пожалуйста, записывайте только один "
@@ -14568,18 +14810,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Пролог документа OsmChange ещё не написан. Пожалуйста, будьте первыми."
 
-msgid "OsmChange File"
-msgstr "Файл OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Файл \"{0}\" не существует"
-
-msgid "No data found in file {0}."
-msgstr "Не найдены данные в файле {0}."
-
-msgid "Open OsmChange file"
-msgstr "Открыть файл OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Неподдерживаемая версия: {0}"
 
@@ -14634,37 +14864,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Непредвиденное значение параметра ''{0}'', равное ''{1}''."
 
-msgid "OSM Server Files"
-msgstr "Файлы сервера OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Произошла ошибка при сохранении.<br>Ошибка: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Произошла ошибка при восстановлении резервной копии файла.<br>Ошибка: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Файлы сервера OSM сжаты с помощью gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Разбор данных истории OSM..."
 
-msgid "Invalid dataset"
-msgstr "Неверный набор данных"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Нет данных для слоя ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Нет данных в файле ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Открыть файл OSM"
-
 msgid "Reading was canceled"
 msgstr "Чтение было отменено"
 
@@ -14811,6 +15013,9 @@ msgstr "Соединение с сервером..."
 msgid "Downloading OSM notes..."
 msgstr "Загрузка заметок OSM..."
 
+msgid "Downloading data..."
+msgstr "Скачивание данных..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14874,15 +15079,9 @@ msgstr "Обнаружен неожиданный id 0 для элемента o
 msgid "Failed to evaluate {0}"
 msgstr "Не удалось выполнить {0}"
 
-msgid "Downloading data..."
-msgstr "Скачивание данных..."
-
-msgid "WMS Files (*.wms)"
-msgstr "Файлы WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
-"Неподдерживаемый формат версии WMS файла; обнаружено {0}, ожидалось {1}"
+"Непредвиденное значение для ключа ''{0}'' в настройках, получено ''{1}''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} байт прочитано"
@@ -16063,39 +16262,6 @@ msgstr "Открытие URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не содержит {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Устаревшая версия Java"
-
-msgid "Update Java"
-msgstr "Обновить Java"
-
-msgid "You are running version {0} of Java."
-msgstr "У вас версия Java {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Эта версия больше не поддерживается {0} с {1} и не рекомендуется для "
-"использования."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM скоро перестанет работать с этой версией. Мы настоятельно рекомендуем "
-"выполнить обновление до Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Вы можете столкнуться с критическими ошибками Java; мы рекомендуем вам "
-"обновиться до Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Хотите выполнить обновление сейчас?"
-
 msgid "reserved"
 msgstr "зарезервировано"
 
@@ -16169,22 +16335,6 @@ msgstr "Подозрительные символы в ключе:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Слишком длинное значение (максимум {0} символов):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Вставить эти теги?"
-
-msgid "Clear buffer"
-msgstr "Очистить буфер"
-
-msgid "Ignore warnings"
-msgstr "Игнорировать предупреждения"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Невозможно вставить теги из буфера обмена. Он не содержит объектов "
-"JOSM или подходящего текста. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Не удалось удалить файл {0}"
 
@@ -16209,129 +16359,15 @@ msgstr[0] "день"
 msgstr[1] "дня"
 msgstr[2] "дней"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Настройка с ключом ''{0}'' не содержит ''{1}''. Невозможно восстановить "
-"геометрию окна из настроек."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Настройка с ключом ''{0}'' не содержит целое (int) значение для ''{1}''. "
-"Получено {2}. Невозможно восстановить геометрию окна с помощью параметров."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Ошибка при анализе поля ''{1}'' в настройке с ключом ''{0}''. Текст ошибки: "
-"{2}. Невозможно восстановить геометрию окна в соответствии с настройками."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Настройка с ключом ''{0}'' не существует. Невозможно восстановить геометрию "
-"окна в соответствии с настройками."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Игнорируем неверную геометрию: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Невозможно загрузить XML схему."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Вы столкнулись с ошибкой в JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Возникла непредвиденная исключительная ситуация.\n"
-"Это всегда ошибка программирования. Если у вас самая новая версия JOSM, "
-"отправьте, пожалуйста, отчёт об этой ошибке."
-
-msgid "Debug information"
-msgstr "Отладочная информация"
-
-msgid "Manually report at:"
-msgstr "Отправить отчёт вручную на:"
-
-msgid "Is JOSM up to date?"
-msgstr "У вас последняя версия JOSM?"
-
-msgid "Send bug report"
-msgstr "Отправить отчёт об ошибке"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Если у вас самая новая версия JOSM и модулей, отправьте, пожалуйста, отчёт "
-"об ошибке в нашу систему отслеживания ошибок.\n"
-"Некоторая информация об ошибке должна быть включена в отчёт автоматически. "
-"Добавьте сведения о том, как воспроизвести ошибку и постарайтесь указать как "
-"можно больше подробностей."
-
-msgid "Report Bug"
-msgstr "Сообщить об ошибке"
-
-msgid "Suppress this error for this session."
-msgstr "Не показывать больше данную ошибку в этом сеансе"
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Больше не показывать ошибки в этой сессии"
-
-msgid "Ignore this error."
-msgstr "Игнорировать эту ошибку."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Не удалось открыть отчёт об ошибке. Пожалуйста, сообщите о ней вручную на "
 "этом веб-сайте:"
 
-msgid "Include the system status report."
-msgstr "Включить отчет о состоянии системы."
-
-msgid "Include information about the data you were working on."
-msgstr "Включить информацию о данных, с которыми вы работали."
-
-msgid "Include all stack traces."
-msgstr "Включить все трассировки стека."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Ваша текущая версия JOSM: {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "Поиск обновлений JOSM..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Произошла ошибка во время проверки обновлений JOSM."
-
-msgid "JOSM is up to date."
-msgstr "У вас самая новая версия JOSM."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM устарел. Текущая версия — {0}. Попробуйте обновить JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Перед отправкой отчёта об ошибке убедитесь, что вы обновили JOSM до самой "
-"новой версии, здесь:"
-
-msgid "Update JOSM"
-msgstr "Обновить JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20092,9 +20128,6 @@ msgstr "Содержимое указателя"
 msgid "notice"
 msgstr "объявления"
 
-msgid "history"
-msgstr "история"
-
 msgid "nature"
 msgstr "природа"
 
@@ -20672,6 +20705,9 @@ msgid "Social Facility"
 msgstr "Социальные услуги"
 
 msgid "Nursing Home"
+msgstr "Дом престарелых"
+
+msgid "Nursing Home (Legacy)"
 msgstr "Дом престарелых (устаревший тег)"
 
 msgid "Group Home"
@@ -23116,6 +23152,9 @@ msgstr "Подарки и сувениры"
 msgid "Variety Store"
 msgstr "Магазин с фиксированной ценой"
 
+msgid "Charity"
+msgstr "Благотворительный магазин"
+
 msgid "Bookmaker"
 msgstr "Букмекерская контора"
 
@@ -23992,6 +24031,78 @@ msgstr "Деловая территория"
 msgid "Industrial"
 msgstr "Промышленная территория"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr "хлебозавод"
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr "пивзавод"
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr "кирпичный завод"
+
+msgctxt "industrial"
+msgid "depot"
+msgstr "территория депо"
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr "дистрибьютор"
+
+msgctxt "industrial"
+msgid "factory"
+msgstr "завод"
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr "мельница"
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr "котельная"
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr "механическая мастерская"
+
+msgctxt "industrial"
+msgid "mine"
+msgstr "шахта"
+
+msgctxt "industrial"
+msgid "oil"
+msgstr "нефтяная промышленность"
+
+msgctxt "industrial"
+msgid "port"
+msgstr "порт"
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr "соляной пруд"
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr "лесопильный завод"
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr "автосвалка"
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr "судоверфь"
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr "скотобойня"
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr "склад"
+
 msgid "Garages"
 msgstr "Гаражи"
 
@@ -24681,6 +24792,10 @@ msgid ""
 "select regions filled with +Vivid or custom area of interest imagery, 50cm "
 "resolution or better, and refreshed more frequently with ongoing updates."
 msgstr ""
+"DigitalGlobe-Premium - это мозаика, состоящая из базовой карты DigitalGlobe "
+"с выбранными областями, заполненными +Vivid  или настраиваемыми областями, "
+"представляющими интерес, с разрешением 50 см или выше, обновляемые более "
+"часто."
 
 msgid "DigitalGlobe Standard Imagery"
 msgstr "Снимки DigitalGlobe Standard"
@@ -24690,6 +24805,13 @@ msgid ""
 "earth’s landmass, with 30-60cm or resolution where available, backfilled by "
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
+"DigitalGlobe-Standard - это проверенный набор снимков, охватывающих 86% "
+"земной суши, с разрешением 30-60 см, где это доступно, дополненный снимками "
+"Landsat. Средний возраст составляет 2.31 года, в некоторых районах "
+"обновляются 2 раза в год."
+
+msgid "Esri World Imagery"
+msgstr "Спутниковые снимки Esri"
 
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
@@ -24952,7 +25074,7 @@ msgid "IGN orthophoto Ushuaia (WMTS)"
 msgstr "IGN - ортоснимки Ушуайи (WMTS)"
 
 msgid "Educational map (WMS)"
-msgstr ""
+msgstr "Образовательная карта (WMS)"
 
 msgid "Ministry of Agroindustry (WMS)"
 msgstr "Министерство агропромышленности (WMS)"
@@ -25469,6 +25591,9 @@ msgstr "Кадастр"
 msgid "French land registry"
 msgstr "Реестр земель Франции"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Овернь 2013 - 25 см"
 
@@ -25579,15 +25704,6 @@ msgstr "Старая карта Пегау - TK25 Messtischblatt (4839; 1909; PR
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: цифровая базовая карта 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: топографическая карта 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Городская агломерация Рур: аэрофотосъёмка (10 см)"
 
@@ -32798,7 +32914,7 @@ msgid "improve way accuracy helper perpendicular line"
 msgstr "помощник улучшения точности линий: перпендикулярная линия"
 
 msgid "improve way accuracy helper equal angle circle"
-msgstr ""
+msgstr "Помощник улучшения точности линий: круг-индикатор равных углов"
 
 msgid "Concourse wizard ..."
 msgstr "Помощник создания вестибюлей..."
@@ -34331,15 +34447,21 @@ msgstr "на предыдущее значение (неизменённое mti
 msgid "Photo Geotagging Plugin"
 msgstr "Модуль геопометки фотографии"
 
-msgid "Writing position information to image files..."
-msgstr "Запись информации о местоположении в файлы изображений..."
-
 msgid "Could not read mtime."
 msgstr "Невозможно прочитать mtime."
 
 msgid "Could not write mtime."
 msgstr "Невозможно записать mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Запись информации о местоположении в файлы изображений..."
+
+msgid "Retry"
+msgstr "Повторить"
+
+msgid "Unable to process file ''{0}'':"
+msgstr "Не удалось обработать файл ''{0}'':"
+
 msgid "File could not be deleted!"
 msgstr "Файл не может быть удалён!"
 
@@ -34857,6 +34979,10 @@ msgstr "Исправить ошибку"
 msgid "PT: dummy test warning"
 msgstr "PT: тестовое предупреждение"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+"ОТ: Требуется сортировка маршрута, найден тег fixme:relation=order members"
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "ОТ: Маршрут содержит разрыв, который может быть устранён сортировкой"
 
@@ -34867,6 +34993,9 @@ msgstr ""
 "ОТ: Количество разрывов маршрута можно сократить сортировкой участников.  "
 "Затем потребуется выполнить проверки"
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr "ОТ: Разрыв маршрута может быть устранён путем добавления одной линии"
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
@@ -38303,10 +38432,10 @@ msgid "View %name% list of departments"
 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 "Просмотреть информацию %name% о церкви"
@@ -38318,7 +38447,7 @@ msgid "View Mérimée list for this municipality"
 msgstr "Просмотреть список из базы Мериме для этого муниципалитета"
 
 msgid "View %name% sheet of geodesic site"
-msgstr ""
+msgstr "Просмотреть информационный лист геодезического объекта %name%"
 
 msgid "View UAI sheet of school/college"
 msgstr "Просмотреть информацию UAI о школе/колледже"
diff --git a/i18n/po/sk.po b/i18n/po/sk.po
index 8fb9cbe..9c34bda 100644
--- a/i18n/po/sk.po
+++ b/i18n/po/sk.po
@@ -9,15 +9,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-12 11:34+0000\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-26 10:42+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-08-13 05:00+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:59+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: sk\n"
 
@@ -57,56 +57,9 @@ msgstr "Podmienky použitia pozadia"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Otvorenie odkazu nie je aktuálnou platformou podporované (\"{0}\")"
 
-msgid "Executing platform startup hook"
-msgstr "Spúšťam platformu"
-
-msgid "Building main menu"
-msgstr "Vytváram hlavné menu"
-
-msgid "Help"
-msgstr "Pomocník"
-
-msgid "Initializing internal boundaries data"
-msgstr "Inicializujem interné údaje hraníc"
-
-msgid "Initializing OSM API"
-msgstr "Inicializujem OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "Inicializujem interné údaje hraníc"
-
-msgid "Initializing validator"
-msgstr "Inicializujem validátor"
-
-msgid "Initializing presets"
-msgstr "Inicializujem predvoľby"
-
-msgid "Initializing map styles"
-msgstr "Inicializujem mapové štýly"
-
-msgid "Loading imagery preferences"
-msgstr "Načítavam predvoľby mapových podkladov"
-
-msgid "Updating user interface"
-msgstr "Aktualizujem používateľské rozhranie"
-
 msgid "Failed to save default preferences."
 msgstr "Nepodarilo sa uložiť predvolené nastavenia."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ignorujem zdeformovanú URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Varovanie"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorujem deformovanú URL adresu súboru: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Hodnota parametra \"downloadgps\" nesmie byť názov súboru, ani URL adresa "
-"súboru"
-
 msgid "About"
 msgstr "O programe"
 
@@ -193,6 +146,9 @@ msgstr "Zrušiť"
 msgid "Click to abort launching external browsers"
 msgstr "Kliknutím zrušíte spúšťanie externých prehliadačov"
 
+msgid "Warning"
+msgstr "Varovanie"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Prosím vybrať aspoň jeden už nahraný bod, cestu alebo reláciu."
 
@@ -485,14 +441,11 @@ msgstr ""
 "* Jednu cestu nepretínajúcu samu seba a najviac 2 jej body;\n"
 "* Tri body."
 
-msgid "Download from OSM..."
-msgstr "Stiahnuť z OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Stiahnutie mapových údajov z OSM servera."
+msgid "Download data"
+msgstr "Stiahnuť dáta"
 
-msgid "Please select a download area first."
-msgstr "Prosím vyberte najskôr sťahovanú oblasť"
+msgid "Download map data from a server of your choice"
+msgstr "Stiahnuť mapové údaje zo serveru podľa vášho výberu"
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -501,9 +454,6 @@ msgstr ""
 "<html>Táto akcia bude potrebovať<br>{0} samostatných stiahnutí "
 "dát.<br>Chcete pokračovať?</html>"
 
-msgid "Download data"
-msgstr "Stiahnuť dáta"
-
 msgid "Download notes in current view"
 msgstr "Stiahnuť poznámky v terajšom pohľade"
 
@@ -570,6 +520,9 @@ msgstr "Nie je nič na exportovanie. Najskôr stiahnite dáta."
 msgid "Export GPX file"
 msgstr "Export GPX súboru"
 
+msgid "Help"
+msgstr "Pomocník"
+
 msgid "History"
 msgstr "História"
 
@@ -1129,26 +1082,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Prosím vyberte cesty s uhlami približne 90 alebo 180 stupňov."
 
-msgid "Download from Overpass API ..."
-msgstr "Stiahnuť cez Overpass API ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "Stiahnuť dáta zo servera Overpass API ..."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-"Vytvoriť vyhľadávací reťazec pre Overpass pomocou pomocníka Overpass Turbo"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-"Zadajte dolu vyhľadávací reťazec alebo ho vygenerujte pomocou pomocníka "
-"Overpass Turbo"
-
-msgid "Show/hide Overpass snippet list"
-msgstr "Zobraziť/Skryť zoznam úryvkov Overpass"
-
 msgid "Paste"
 msgstr "Prilepiť"
 
@@ -2525,36 +2458,6 @@ msgstr "Vybrať reláciu (pridať)"
 msgid "Select relation"
 msgstr "Vybrať reláciu"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Vyhľadávať..."
 
@@ -2851,96 +2754,6 @@ msgstr[0] "Hľadá sa v {0} objektoch"
 msgstr[1] "Hľadá sa v {0} objekte"
 msgstr[2] "Hľadá sa v {0} objektoch"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Regulárny výraz \"{0}\" má chybu na pozícii {1}, celá chyba:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"The regex \"{0}\" mal chybu, celá chyba:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Nepodarilo sa prečítať časovú značku \"{0}\""
-
-msgid "Expecting {0} after {1}"
-msgstr "Očakávalo sa {0} po {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Očakáva sa rozsah identifikátorov (ID) základných objektov"
-
-msgid "Range of changeset ids expected"
-msgstr "Očakáva sa rozsah identifikátorov (ID) súborov zmien."
-
-msgid "Range of versions expected"
-msgstr "Očakáva sa rozsah verzií"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Kľúč nemôže byť prázdna hodnota keď je použitý značkový operátor. Ukážka "
-"použitia: kľúč=hodnota"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Neznámy základný typ: {0}. Povolené hodnoty sú \"node\" (bod), \"way\" "
-"(cesta), \"relation\" (relácia)"
-
-msgid "Positive integer expected"
-msgstr "Očakáva sa kladné celé číslo"
-
-msgid "Range of numbers expected"
-msgstr "Očakávaný rozsah čísel"
-
-msgid "Unknown preset name: "
-msgstr "Neznámy názov predvoľby: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Neočakávaný symbol. Očakávaný {0}, nájdený {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Nepodarilo sa načítať identifikátor MapCSS."
-
-msgid "Unexpected token: {0}"
-msgstr "Neočakávaný symbol: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Chýbajúci parameter pre OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Chýbajúci parameter pre XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Chýbajúci operátor pre NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Skracujem hodnotu značky \"{0}\" na vymazanom objekte {1}"
 
@@ -2960,9 +2773,6 @@ msgstr "{0} bodov v ceste {1} prekročilo max. povolené množstvo bodov {2}"
 msgid "API Capabilities Violation"
 msgstr "API Capabilities Violation"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cyklická závislosť medzi reláciami:"
-
 msgid "Removed obsolete tags"
 msgstr "Odobraté zastarané značky"
 
@@ -3365,61 +3175,12 @@ msgstr "Funkcie v reláciách odkazujú na"
 msgid "Automatic tag correction"
 msgstr "Automatická oprava značiek"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Nemožno vytvoriť adresár {0}, automatické ukladanie bude vypnuté"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Nemožno vytvoriť súbor {0}, bude použitý iný názov súboru"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"IOError pri vytváraní súboru, automatické ukladanie bude vynechané: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Nemožno zmazať starý záložný súbor {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Vaša práva bola automaticky uložená."
-
-msgid "Restoring files"
-msgstr "Obnovenie súborov"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Nepodarilo sa odstrániť záložný súbor {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Nepodarilo sa odstrániť PID súbor {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Nepodarilo sa odstrániť archivovaný záložný súbor {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Chybná hodnota zemepisnej šírky ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Chybná hodnota zemepisnej dĺžky ''{0}''"
 
-msgid "Question"
-msgstr "Otázka"
-
-msgid "Message"
-msgstr "Správa"
-
-msgid "Enter text"
-msgstr "Vložte text"
-
-msgid "Installing plugins"
-msgstr "Inštalácia pluginov"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Nastavenie súboru žiada pripojiť preferencie <b>{0}</b>,<br/> , ale "
-"jeho východisková hodnota je v tomto okamihu neznáma.<br/> Aktivujte si "
-"prosím zodpovedajúcu funkciu ručne a skúste to znova importovať."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Nepodarilo sa vytvoriť chýbajúci cache adresár: {0}"
 
@@ -3530,6 +3291,15 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 "Nastavenie predvoľby {0} bolo vymazané, pretože nebola dlho používaná."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Nastavenie súboru žiada pripojiť preferencie <b>{0}</b>,<br/> , ale "
+"jeho východisková hodnota je v tomto okamihu neznáma.<br/> Aktivujte si "
+"prosím zodpovedajúcu funkciu ručne a skúste to znova importovať."
+
 msgid "Metric"
 msgstr "Metrický"
 
@@ -3668,6 +3438,19 @@ msgstr ""
 msgid "Note"
 msgstr "Poznámka"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+"Nepodarilo sa získať OAuth autorizačný prístup zo správcu prihlasovacích "
+"údajov"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Aktuálny správca prihlasovacích údajov je typu ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Nepodarilo sa uložiť OAuth autorizačný prístup do správcu prihlasovacích "
+"údajov"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Očakávané ID > 0. Obdržaná hodnota však bola {0}."
 
@@ -3684,6 +3467,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Základný objekt ID = 0 nemôže byť neviditeľný."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cyklická závislosť medzi reláciami:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3727,6 +3513,63 @@ msgstr "Zlučujem dáta..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test \"{0}\" dokončený za {1}"
 
+msgid "incomplete"
+msgstr "neúplný"
+
+msgid "House {0}"
+msgstr "Dom {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Číslo domu {0} na {1}"
+
+msgid "House number {0}"
+msgstr "Číslo domu {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "bodov"
+msgstr[1] "bod"
+msgstr[2] "body"
+
+msgid "highway"
+msgstr "komunikácia"
+
+msgid "railway"
+msgstr "železnica"
+
+msgid "waterway"
+msgstr "vodný tok"
+
+msgid "landuse"
+msgstr "využitie oblasti (landuse)"
+
+msgid "building"
+msgstr "budova"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} bodov"
+msgstr[1] "{0} bod"
+msgstr[2] "{0} body"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} členov"
+msgstr[1] "{0} člen"
+msgstr[2] "{0} členy"
+
+msgid "public transport"
+msgstr "hromadná doprava"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relácií"
+msgstr[1] "relácia"
+msgstr[2] "relácie"
+
+msgid "Changeset {0}"
+msgstr "Súbor zmien {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Chyba vo filtri <code>{0}</code>:<br>{1}"
 
@@ -3767,24 +3610,12 @@ msgstr ""
 "Nemožno zlúčiť základné objekty s rozdielnymi id. Toto id je {0}, druhé je "
 "{1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "bodov"
-msgstr[1] "bod"
-msgstr[2] "body"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "ciest"
 msgstr[1] "cesta"
 msgstr[2] "cesty"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relácií"
-msgstr[1] "relácia"
-msgstr[2] "relácie"
-
 msgid "closedway"
 msgstr "uzavretá cesta"
 
@@ -3822,6 +3653,126 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parameter {0} nie je v rozsahu 0..{1}. Obdržaná hodnota je \"{2}\"."
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Regulárny výraz \"{0}\" má chybu na pozícii {1}, celá chyba:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"The regex \"{0}\" mal chybu, celá chyba:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Nepodarilo sa prečítať časovú značku \"{0}\""
+
+msgid "Expecting {0} after {1}"
+msgstr "Očakávalo sa {0} po {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Očakáva sa rozsah identifikátorov (ID) základných objektov"
+
+msgid "Range of changeset ids expected"
+msgstr "Očakáva sa rozsah identifikátorov (ID) súborov zmien."
+
+msgid "Range of versions expected"
+msgstr "Očakáva sa rozsah verzií"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Kľúč nemôže byť prázdna hodnota keď je použitý značkový operátor. Ukážka "
+"použitia: kľúč=hodnota"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Neznámy základný typ: {0}. Povolené hodnoty sú \"node\" (bod), \"way\" "
+"(cesta), \"relation\" (relácia)"
+
+msgid "Positive integer expected"
+msgstr "Očakáva sa kladné celé číslo"
+
+msgid "Range of numbers expected"
+msgstr "Očakávaný rozsah čísel"
+
+msgid "Unknown preset name: "
+msgstr "Neznámy názov predvoľby: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Nepodarilo sa načítať identifikátor MapCSS."
+
+msgid "Unexpected token: {0}"
+msgstr "Neočakávaný symbol: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Chýbajúci parameter pre OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Chýbajúci parameter pre XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Chýbajúci operátor pre NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Neočakávaný symbol. Očakávaný {0}, nájdený {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Nepodarilo sa načítať vykresľovaciu triedu mapy \"{0}\". Trieda nebola "
@@ -3907,6 +3858,122 @@ msgstr "Očakával sa prvok \"{0}\", ale našiel sa \"{1}\""
 msgid "value expected"
 msgstr "očakávala sa hodnota"
 
+msgid "Short Description:"
+msgstr "Krátky popis:"
+
+msgid "URL:"
+msgstr "Adresa URL:"
+
+msgid "Author:"
+msgstr "Autor:"
+
+msgid "Webpage:"
+msgstr "web stránka:"
+
+msgid "Description:"
+msgstr "Popis:"
+
+msgid "Version:"
+msgstr "Verzia:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimálna JOSM verzia:"
+
+msgid "by {0}"
+msgstr "{0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM predvolený (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Interné štýly majú byť použité ako základ pre prevádzkové prepínateľné štýly"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "hlavný štýl Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Základné interné predvoľby"
+
+msgid "The default preset for JOSM"
+msgstr "Východiskové nastavenie pre JOSM"
+
+msgid "Addresses"
+msgstr "Adresy"
+
+msgid "Checks for errors on addresses"
+msgstr "Hľadá chyby v adresách"
+
+msgid "Tag combinations"
+msgstr "Kombinácie značiek"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Hľadá chýbajúce značky alebo podozrivé kombinácie"
+
+msgid "Deprecated features"
+msgstr "Zastaralé vlastnosti"
+
+msgid "Checks for deprecated features"
+msgstr "Vyhľadáva zastaralé vlastnosti"
+
+msgid "Geometry"
+msgstr "Geometria"
+
+msgid "Checks for geometry errors"
+msgstr "Hľadá chyby geometrie"
+
+msgid "Highways"
+msgstr "Pozemné komunikácie"
+
+msgid "Checks for errors on highways"
+msgstr "Hľadá chyby na komunikáciách"
+
+msgid "Multiple values"
+msgstr "Viacnásobné hodnoty"
+
+msgid "Checks for wrong multiple values"
+msgstr "Hľadá chybné viacnásobné hodnoty"
+
+msgid "Numeric values"
+msgstr "Číselné hodnoty"
+
+msgid "Checks for wrong numeric values"
+msgstr "Hľadá chybné číselné hodnoty"
+
+msgid "Religion"
+msgstr "Náboženstvo"
+
+msgid "Checks for errors on religious objects"
+msgstr "Hľadá chyby na náboženských objektoch"
+
+msgid "Relations"
+msgstr "Relácie"
+
+msgid "Checks for errors on relations"
+msgstr "Hľadá chyby v reláciách"
+
+msgid "Territories"
+msgstr "Územia"
+
+msgid "Checks for territories-specific features"
+msgstr "Kontrolovať vlastnosti závislé od územia"
+
+msgid "Unnecessary tags"
+msgstr "Nepotrebné značky"
+
+msgid "Checks for unnecessary tags"
+msgstr "Hľadá nepotrebné značky"
+
+msgid "Wikipedia"
+msgstr "Wikipédia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Hľadá chybné značky \"wikipedia\""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Projekcia UTM (\"+proj=utm\") vyžaduje parameter \"+zone=...\"."
 
@@ -4096,9 +4163,6 @@ msgstr "Adresa URL obsahuje neplatný fragment: {0}"
 msgid "URL validator"
 msgstr "Kontrola URL"
 
-msgid "Addresses"
-msgstr "Adresy"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Kontroluje chyby v adresách a reláciách \"associatedStreet\"."
 
@@ -4291,9 +4355,6 @@ msgstr "Duplicitné body v ceste"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Skontroluje cesty či neobsahujú identické body za sebou."
 
-msgid "Highways"
-msgstr "Pozemné komunikácie"
-
 msgid "Performs semantic checks on highways."
 msgstr "Vykoná kontroly zmyslu na cestách."
 
@@ -4861,9 +4922,6 @@ msgstr "vodné cesty (waterway) {0}"
 msgid "boundary type {0}"
 msgstr "hranice typu {0}"
 
-msgid "building"
-msgstr "budova"
-
 msgid "area"
 msgstr "oblasť (plocha)"
 
@@ -4979,47 +5037,16 @@ msgstr "Nezobrazovať nabudúce (v tomto sedení)"
 msgid "Do not show again (remembers choice)"
 msgstr "Znovu nezobrazovať (zapamätanie voľby)"
 
-msgid "incomplete"
-msgstr "neúplný"
-
-msgid "House {0}"
-msgstr "Dom {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Číslo domu {0} na {1}"
-
-msgid "House number {0}"
-msgstr "Číslo domu {0}"
-
-msgid "highway"
-msgstr "komunikácia"
-
-msgid "railway"
-msgstr "železnica"
-
-msgid "waterway"
-msgstr "vodný tok"
-
-msgid "landuse"
-msgstr "využitie oblasti (landuse)"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} bodov"
-msgstr[1] "{0} bod"
-msgstr[2] "{0} body"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} členov"
-msgstr[1] "{0} člen"
-msgstr[2] "{0} členy"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ignorujem zdeformovanú URL: \"{0}\""
 
-msgid "public transport"
-msgstr "hromadná doprava"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorujem deformovanú URL adresu súboru: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Súbor zmien {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Hodnota parametra \"downloadgps\" nesmie byť názov súboru, ani URL adresa "
+"súboru"
 
 msgid "Precondition violation"
 msgstr "Predpokladaný priestupok"
@@ -5112,6 +5139,71 @@ msgstr ""
 "Očakávaná neprázdna hodnota pre parameter \"{0}\", obdržaná hodnota je "
 "\"{1}\""
 
+msgid "Outdated Java version"
+msgstr "Zastaralá verzia Java"
+
+msgid "Update Java"
+msgstr "Aktualizujte Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Používate Java verziu {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Táto verzia Javy už nie je podporovaná firmou {0} od {1} a neodporúča sa ju "
+"používať."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM čoskoro prestane fungovať s touro verziou. Odporúčame aktualizovať na "
+"Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Môžete naraziť na vážne chyby v Jave; odporúčame aktualizovať na Java {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Prajete si aktualizovať teraz?"
+
+msgid "Starting file watcher"
+msgstr "Spúšťam sledovanie súborov"
+
+msgid "Executing platform startup hook"
+msgstr "Spúšťam platformu"
+
+msgid "Building main menu"
+msgstr "Vytváram hlavné menu"
+
+msgid "Updating user interface"
+msgstr "Aktualizujem používateľské rozhranie"
+
+msgid "Initializing internal boundaries data"
+msgstr "Inicializujem interné údaje hraníc"
+
+msgid "Initializing OSM API"
+msgstr "Inicializujem OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "Inicializujem interné údaje hraníc"
+
+msgid "Initializing validator"
+msgstr "Inicializujem validátor"
+
+msgid "Initializing presets"
+msgstr "Inicializujem predvoľby"
+
+msgid "Initializing map styles"
+msgstr "Inicializujem mapové štýly"
+
+msgid "Loading imagery preferences"
+msgstr "Načítavam predvoľby mapových podkladov"
+
 msgid "usage"
 msgstr "použitie"
 
@@ -5610,6 +5702,87 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Aktuálna hodnota nie je platným indexom dlaždice pre danú úroveň zväčšenia"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Narazili ste na chybu v programe JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Nastala neočakávaná výnimka.\n"
+"Toto je vždy chyba programovania. Ak používate najnovšiu verziu JOSM, prosím "
+"zvážte nahlásenie tejto chyby."
+
+msgid "Debug information"
+msgstr "Ladiace informácie"
+
+msgid "Manually report at:"
+msgstr "Nahláste ručne na:"
+
+msgid "Is JOSM up to date?"
+msgstr "Je JOSM aktuálny?"
+
+msgid "Send bug report"
+msgstr "Odoslať hlásenie o chybe"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Ak používate najnovšiu verziu JOSM a pluginov, prosím nahláste chybu v našom "
+"systéme hlásenia chýb.\n"
+"Informácie o chybe by mali byť predvyplnené. Prosím doplňte informácie o tom "
+"ako zreprodukovať chybu a zadajte čo najviac podrobností."
+
+msgid "Report Bug"
+msgstr "Nahlásiť chybu"
+
+msgid "Suppress this error for this session."
+msgstr "Potlačiť túto chybu pre toto sedenia."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Potlačiť ďalšie chybové hlášky počas tohto sedenia."
+
+msgid "Ignore this error."
+msgstr "Ignorovať túto chybu."
+
+msgid "Include the system status report."
+msgstr "Zahrnúť správu o stave systému."
+
+msgid "Include information about the data you were working on."
+msgstr "Vložiť informácie o dátach, na ktorých ste pracovali."
+
+msgid "Include all stack traces."
+msgstr "Zahrnúť výpis zásobníka programu (stack trace)."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Vaša verzia JOSM je {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM hľadá aktualizácie..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Pri kontrole aktuálnosti JOSM nastala chyba."
+
+msgid "JOSM is up to date."
+msgstr "JOSM je aktuálny."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM je zastaralý. Aktuálna verzia je {0}. Skúste JOSM aktualizovať."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Predtým než nahlásite chybu, overte či máte najnovšiu verziu JOSM tu:"
+
+msgid "Update JOSM"
+msgstr "Aktualizovať JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Konflikt na pozadí: žiadny konflikt"
 
@@ -6391,6 +6564,22 @@ msgstr ""
 "Kopírované údaje obsahujú neúplné objekty. Pri vkladaní neúplné objekty budú "
 "odstránené. Chcete vložiť dáta bez neúplných objektov?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Chcete prilepiť tieto značky?"
+
+msgid "Clear buffer"
+msgstr "Vymazať zásobník"
+
+msgid "Ignore warnings"
+msgstr "Ignorovať varovanie"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Prepáčte, ale nie je možné vložiť značky z vyrovnávacej pamäte. "
+"Neobsahujú žiadne objekty JOSM, alebo vhodné texty. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Len pre označené objekty"
 
@@ -6996,9 +7185,6 @@ msgstr "Zdroj"
 msgid "Title:"
 msgstr "Názov:"
 
-msgid "URL:"
-msgstr "Adresa URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Zabudovaný štýl, vnútorná cesta:"
 
@@ -7113,9 +7299,6 @@ msgstr ""
 "Neplatný zoznam ID\n"
 "Nemôžem pokračovať."
 
-msgid "Relations"
-msgstr "Relácie"
-
 msgid "Open a list of all relations."
 msgstr "Otvoríť zoznam všetkých relácií"
 
@@ -8631,24 +8814,6 @@ msgstr "Hodnota pre zemepisnú šírku v rozsahu [-90,90] povinná."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Hodnota pre zemepisnú dížku v rozsahu [-180,180] povinná."
 
-msgid "Data Sources and Types:"
-msgstr "Dátové zdroje a typy:"
-
-msgid "OpenStreetMap data"
-msgstr "Údaje OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Výber pre stiahnutie OSM dát vo vybratej sťahovanej oblasti"
-
-msgid "Raw GPS data"
-msgstr "Nekomprimované (Raw) GPS dáta"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Výber pre stiahnutie GPS stôp(traces) vo vybratej sťahovanej oblasti"
-
-msgid "Select to download notes in the selected download area."
-msgstr "Zvoľte pre stiahnutie poznámok vo vybranej oblasti na stiahnutie."
-
 msgid "Download as new layer"
 msgstr "Načítať na novú vrstvu"
 
@@ -8684,33 +8849,12 @@ msgstr ""
 "šípky alebo pravé tlačidlo myši na rolovanie mapy, koliesko alebo +/- pre "
 "priblíženie."
 
-msgid "No area selected yet"
-msgstr "Žiadna oblasť nie je vybratá"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Sťahovaná oblasť je príliš veľká, server zrejme odmietne vašu požiadavku"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Sťahovaná oblasť je v poriadku, veľkosť bude pravdepodobne serverom "
-"akceptovaná"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Kliknutím zavriete dialóg a prerušíte sťahovanie"
 
 msgid "Click to download the currently selected area"
 msgstr "Kliknúť pre stiahnutie aktuálne vybranej oblasti"
 
-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>Nie je povolené <strong>{0}</strong>, ani <strong>{1}</strong> ani "
-"<strong>{2}</strong>.<br>Prosím zvoľte stiahnutie OSM dát, GPX dát, Poznámok "
-"alebo všetkého.</html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Stiahnuť aj odkazujúce (nadradené) relácie"
 
@@ -8733,6 +8877,99 @@ msgstr "Zvoľte, ak by mali byť tiež stiahnuté členy relácie"
 msgid "Download referrers (parent relations and ways)"
 msgstr "Stiahnuť aj odkazujúce (nadradené) relácie a cesty"
 
+msgid "Download from OSM"
+msgstr "Stiahnuť z OSM"
+
+msgid "Data Sources and Types:"
+msgstr "Dátové zdroje a typy:"
+
+msgid "OpenStreetMap data"
+msgstr "Údaje OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Výber pre stiahnutie OSM dát vo vybratej sťahovanej oblasti"
+
+msgid "Raw GPS data"
+msgstr "Nekomprimované (Raw) GPS dáta"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Výber pre stiahnutie GPS stôp(traces) vo vybratej sťahovanej oblasti"
+
+msgid "Select to download notes in the selected download area."
+msgstr "Zvoľte pre stiahnutie poznámok vo vybranej oblasti na stiahnutie."
+
+msgid "Please select a download area first."
+msgstr "Prosím vyberte najskôr sťahovanú oblasť"
+
+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>Nie je povolené <strong>{0}</strong>, ani <strong>{1}</strong> ani "
+"<strong>{2}</strong>.<br>Prosím zvoľte stiahnutie OSM dát, GPX dát, Poznámok "
+"alebo všetkého.</html>"
+
+msgid "No area selected yet"
+msgstr "Žiadna oblasť nie je vybratá"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Sťahovaná oblasť je príliš veľká, server zrejme odmietne vašu požiadavku"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Sťahovaná oblasť je v poriadku, veľkosť bude pravdepodobne serverom "
+"akceptovaná"
+
+msgid "Download from Overpass API"
+msgstr "Stiahnuť z Overpass API"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+"Vytvoriť vyhľadávací reťazec pre Overpass pomocou pomocníka Overpass Turbo"
+
+msgid "Query Wizard"
+msgstr "Pomocník pre vyhľadávanie"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+"Zadajte dolu vyhľadávací reťazec alebo ho vygenerujte pomocou pomocníka "
+"Overpass Turbo"
+
+msgid "Your saved queries:"
+msgstr "Uložené vyhľadávania:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Zobraziť/Skryť zoznam úryvkov Overpass"
+
+msgid "Overpass query:"
+msgstr "Vyhľadávania Overpass:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+"Zadali ste prázdny vyhľadávací reťazec. Chcete namiesto toho stiahnuť všetky "
+"dáta v tejto oblasti?"
+
+msgid "Download all data?"
+msgstr "Stiahnuť všetky dáta?"
+
+msgid "Add new snippet"
+msgstr "Pridať nový úryvok"
+
+msgid "Delete selected snippet"
+msgstr "Odstrániť vybraný úryvok"
+
+msgid "Edit selected snippet"
+msgstr "Upraviť vybraný úryvok"
+
+msgid "history"
+msgstr "história"
+
 msgid "Please select an item first"
 msgstr "Prosím najprv zvoľte položku"
 
@@ -8775,9 +9012,6 @@ msgstr "Pomocníka Overpass nemohol analyzovať nasledovný reťazec:"
 msgid "Parse error"
 msgstr "Chyba spracovania"
 
-msgid "Query Wizard"
-msgstr "Pomocník pre vyhľadávanie"
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9391,6 +9625,18 @@ msgstr "Overenie s dodaním používateľského mena a hesla"
 msgid "Cancel authentication"
 msgstr "Zrušiť overenie"
 
+msgid "Question"
+msgstr "Otázka"
+
+msgid "Message"
+msgstr "Správa"
+
+msgid "Enter text"
+msgstr "Vložte text"
+
+msgid "Installing plugins"
+msgstr "Inštalácia pluginov"
+
 msgid "Downloading file"
 msgstr "Stiahnutie súboru"
 
@@ -9980,10 +10226,6 @@ msgstr "Vyberte objekty na nahratie"
 msgid "Cancel uploading"
 msgstr "Prerušiť nahrávanie"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Neočakávaná hodnota pre kľúč \"{0}\" v nastavení, obdržaná hodnota je \"{1}\""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Naplniť jeden zmenový súbor a vrátiť sa do dialógu nahrávania"
 
@@ -10073,6 +10315,189 @@ msgstr[0] "{0} zmazaných objektov:"
 msgstr[1] "{0} zmazaný objekt:"
 msgstr[2] "{0} zmazané objekty:"
 
+msgid "All Formats"
+msgstr "Všetky formáty"
+
+msgid "Could not export ''{0}''."
+msgstr "Nemôžem exportovať \"{0}\""
+
+msgid "Could not import ''{0}''."
+msgstr "Nemôžem importovať ''{0}''."
+
+msgid "Could not import files."
+msgstr "Nemôžem importovať súbory."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Nemôžem čítať súbor ''{0}''.<br>Chyba je:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Nemôžem čítať.<br>Chyba je:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON súbory"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Vrstva ''{0}'' nie je podporovaná"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Poznámka: GPL nie je kompatibilná s OSM licenciou. Nepridávajte záznamy s "
+"GPL licencoiu."
+
+msgid "GPS track description"
+msgstr "popis GPS trasy"
+
+msgid "Add author information"
+msgstr "Pridať informáciu o autorovi"
+
+msgid "Real name"
+msgstr "Skutočné meno"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Preddefinované"
+
+msgid "Copyright year"
+msgstr "Copyright"
+
+msgid "Keywords"
+msgstr "Kľúčové slová"
+
+msgid "Export options"
+msgstr "Možnosti exportu"
+
+msgid "Export and Save"
+msgstr "Exportovať a Uložiť"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Chyba pri exporte {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Zvoľte preddefinovanú licenciu"
+
+msgid "GPX Files"
+msgstr "GPX súbory"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Analýza dát pre vrstvu \"{0}\" zlyhala"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Vyskytla sa chyba počas analýzy gpx dát pre vrstvu ''{0}''. Bude dostupná "
+"iba časť súboru."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Vyskytla sa chyba počas analýzy gpx súboru ''{0}''. Bude dostupná iba časť "
+"súboru."
+
+msgid "Image Files"
+msgstr "Obrázkové súbory"
+
+msgid "folder"
+msgstr "priečinok"
+
+msgid "Looking for image files"
+msgstr "Hľadanie obrázkov"
+
+msgid "No image files found."
+msgstr "Nenajdené žiadne obrázky."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 súbory"
+
+msgid "Coordinates imported: {0}"
+msgstr "Importované súradnice: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Chybné vety: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Kontrolný súčet chýb: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Neznáme vety: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Nulové súradnice: {0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA import úspešný:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA import zlyhal!"
+
+msgid "Note Files"
+msgstr "Súbory poznámok"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Súbory OSM servera skomprimované v bzip2"
+
+msgid "OsmChange File"
+msgstr "OsmChange súbor"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Súbor \"{0}\" neexistuje"
+
+msgid "No data found in file {0}."
+msgstr "V súbore neboli nájdené žiadne dáta {0}."
+
+msgid "Open OsmChange file"
+msgstr "Otvoriť súbor OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Súbory OSM Servera"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html>Nejaká chyba nastala počas ukladania.<br>Chyba je: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Nejaká chyba nastala počas obnovy záložného súboru.<br>Chyba je: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Súbory servera skomprimované v gzip"
+
+msgid "Invalid dataset"
+msgstr "Neplatný dátový súbor"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Nenašli sa žiadne dáta pre vrstvu ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Nenašli sa žiadne dáta v súbore ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Otvoriť OSM súbor"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Súbory (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nepodporovaná verzia WMS súboru; nájdené {0}, očakávané {1}"
+
 msgid "Native projections"
 msgstr "Zabudované projekcie"
 
@@ -10182,6 +10607,34 @@ msgstr "Túto správu už znovu nezobrazovať"
 msgid "Hide this message and never show it again"
 msgstr "Schovať túto správu a viac ju nezobrazovať"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Nemožno vytvoriť adresár {0}, automatické ukladanie bude vypnuté"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Nemožno vytvoriť súbor {0}, bude použitý iný názov súboru"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"IOError pri vytváraní súboru, automatické ukladanie bude vynechané: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Nemožno zmazať starý záložný súbor {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Vaša práva bola automaticky uložená."
+
+msgid "Restoring files"
+msgstr "Obnovenie súborov"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Nepodarilo sa odstrániť záložný súbor {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Nepodarilo sa odstrániť PID súbor {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Nepodarilo sa odstrániť archivovaný záložný súbor {0}"
+
 msgid "Customize Color"
 msgstr "Prispôsobiť farbu"
 
@@ -10290,6 +10743,9 @@ msgstr "Počet poznámok:"
 msgid "Changes need uploading?"
 msgstr "Vyžadujú zmeny odoslanie?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "mimo ukladanej oblasti"
 
@@ -10366,6 +10822,9 @@ msgstr "Overovanie chýb"
 msgid "No validation errors"
 msgstr "Žiadne chyby na overenie"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Nastaviť WMS Záložku"
 
@@ -10998,9 +11457,6 @@ msgstr "(URL bolo: "
 msgid "Select the map painting styles"
 msgstr "Vybrať štýl kreslenia mapy"
 
-msgid "loading style ''{0}''..."
-msgstr "nahrávam štýl ''{0}''..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11017,6 +11473,9 @@ msgstr[2] ""
 "Došlo k {0} chybám pri načítaní tohto štýlu. Vyberte ''Info'' pre "
 "podrobnosti, kliknutím pravého tlačítka na myši."
 
+msgid "loading style ''{0}''..."
+msgstr "nahrávam štýl ''{0}''..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Nepodarilo sa načítať štýl kreslenia mapy z \"{0}\". Výnimka bola: {1}"
@@ -11554,27 +12013,6 @@ msgstr "Stiahnuť pluginy"
 msgid "Icon paths:"
 msgstr "Cesty pre ikony:"
 
-msgid "Short Description:"
-msgstr "Krátky popis:"
-
-msgid "Author:"
-msgstr "Autor:"
-
-msgid "Webpage:"
-msgstr "web stránka:"
-
-msgid "Description:"
-msgstr "Popis:"
-
-msgid "Version:"
-msgstr "Verzia:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimálna JOSM verzia:"
-
-msgid "by {0}"
-msgstr "{0}"
-
 msgid "Name (optional):"
 msgstr "Meno (nepovinné):"
 
@@ -12740,20 +13178,6 @@ msgstr ""
 "Varovanie: neplatný formát počtu v štýle obsahu \"{0}\". Obdržaná hodnota je "
 "\"{1}\""
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM predvolený (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Interné štýly majú byť použité ako základ pre prevádzkové prepínateľné štýly"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "hlavný štýl Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Nastavenie mapy"
 
@@ -12848,12 +13272,6 @@ msgstr ""
 "Varovanie: nepovolený formát zápisu v zozname predvolieb \"{0}\". Obdržaná "
 "hodnota je \"{1}\""
 
-msgid "Internal Preset"
-msgstr "Základné interné predvoľby"
-
-msgid "The default preset for JOSM"
-msgstr "Východiskové nastavenie pre JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Plugin {0} je stále používaný týmito {1} pluginmi:"
@@ -13362,9 +13780,6 @@ msgstr ""
 "Nepodarilo sa získať prihlasovacie údaje do OSM zo správcu prihlasovacích "
 "údajov."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Aktuálny správca prihlasovacích údajov je typu ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 "Nepodarilo sa uložiť prihlasovacie údaje pre OSM do správcu prihlasovacích "
@@ -13385,16 +13800,6 @@ msgid ""
 msgstr ""
 "Určuje počet dní koľko musí byť poznámka uzavretá, aby sa už nesťahovala."
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-"Nepodarilo sa získať OAuth autorizačný prístup zo správcu prihlasovacích "
-"údajov"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Nepodarilo sa uložiť OAuth autorizačný prístup do správcu prihlasovacích "
-"údajov"
-
 msgid "Save to preferences"
 msgstr "Uložiť do nastavení"
 
@@ -13595,69 +14000,6 @@ msgstr ""
 "Varovanie: neplatný formát záznamu pravidla \"{0}\". Obdržaná hodnota je "
 "\"{1}\""
 
-msgid "Checks for errors on addresses"
-msgstr "Hľadá chyby v adresách"
-
-msgid "Tag combinations"
-msgstr "Kombinácie značiek"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Hľadá chýbajúce značky alebo podozrivé kombinácie"
-
-msgid "Deprecated features"
-msgstr "Zastaralé vlastnosti"
-
-msgid "Checks for deprecated features"
-msgstr "Vyhľadáva zastaralé vlastnosti"
-
-msgid "Geometry"
-msgstr "Geometria"
-
-msgid "Checks for geometry errors"
-msgstr "Hľadá chyby geometrie"
-
-msgid "Checks for errors on highways"
-msgstr "Hľadá chyby na komunikáciách"
-
-msgid "Multiple values"
-msgstr "Viacnásobné hodnoty"
-
-msgid "Checks for wrong multiple values"
-msgstr "Hľadá chybné viacnásobné hodnoty"
-
-msgid "Numeric values"
-msgstr "Číselné hodnoty"
-
-msgid "Checks for wrong numeric values"
-msgstr "Hľadá chybné číselné hodnoty"
-
-msgid "Religion"
-msgstr "Náboženstvo"
-
-msgid "Checks for errors on religious objects"
-msgstr "Hľadá chyby na náboženských objektoch"
-
-msgid "Checks for errors on relations"
-msgstr "Hľadá chyby v reláciách"
-
-msgid "Territories"
-msgstr "Územia"
-
-msgid "Checks for territories-specific features"
-msgstr "Kontrolovať vlastnosti závislé od územia"
-
-msgid "Unnecessary tags"
-msgstr "Nepotrebné značky"
-
-msgid "Checks for unnecessary tags"
-msgstr "Hľadá nepotrebné značky"
-
-msgid "Wikipedia"
-msgstr "Wikipédia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Hľadá chybné značky \"wikipedia\""
-
 msgid "Tag checker rules"
 msgstr "Pravidlá kontroly značiek"
 
@@ -13919,6 +14261,37 @@ msgstr "Všetky súbory (*.*)"
 msgid "Received error page:"
 msgstr "Obdržaná chybová stránka:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"nastavenie s kľúčom ''{0}'' neobsahuje ''{1}''. Nemôžem obnoviť geometriu "
+"okna z nastavení."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Nastavenie s kľúčom \"{0}\" neuvádza hodnotu typu \"int\" pre ''{1}''. "
+"Obdržaná hodnota je {2}. Nemôžem obnoviť geometriu okna z nastavení."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"neúspešné rozloženie poľa ''{1}'' v nastavení s kľúčom ''{0}''. Odchýlka "
+"bola: {2}. Nemôžem obnoviť geometriu okna z nastavení."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"nastavenie s kľúčom ''{0}'' neexistuje. Nemôžem obnoviť geometriu okna z "
+"nastavení."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ignorujem geometriu chybného tvaru: {0}"
+
 msgid "Min. latitude"
 msgstr "Min. zemepisná šírka"
 
@@ -14052,9 +14425,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Vymazaný člen {0} je použitý v relácii {1}"
 
-msgid "All Formats"
-msgstr "Všetky formáty"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Sťahujem body {0} až {1}..."
 
@@ -14185,94 +14555,6 @@ msgstr "Spracovávam odpoveď servera ..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Neočakávaný XML element s názvom ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Nemôžem exportovať \"{0}\""
-
-msgid "Could not import ''{0}''."
-msgstr "Nemôžem importovať ''{0}''."
-
-msgid "Could not import files."
-msgstr "Nemôžem importovať súbory."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Nemôžem čítať súbor ''{0}''.<br>Chyba je:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Nemôžem čítať.<br>Chyba je:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON súbory"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Vrstva ''{0}'' nie je podporovaná"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Poznámka: GPL nie je kompatibilná s OSM licenciou. Nepridávajte záznamy s "
-"GPL licencoiu."
-
-msgid "GPS track description"
-msgstr "popis GPS trasy"
-
-msgid "Add author information"
-msgstr "Pridať informáciu o autorovi"
-
-msgid "Real name"
-msgstr "Skutočné meno"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Preddefinované"
-
-msgid "Copyright year"
-msgstr "Copyright"
-
-msgid "Keywords"
-msgstr "Kľúčové slová"
-
-msgid "Export options"
-msgstr "Možnosti exportu"
-
-msgid "Export and Save"
-msgstr "Exportovať a Uložiť"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Chyba pri exporte {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Zvoľte preddefinovanú licenciu"
-
-msgid "GPX Files"
-msgstr "GPX súbory"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Analýza dát pre vrstvu \"{0}\" zlyhala"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Vyskytla sa chyba počas analýzy gpx dát pre vrstvu ''{0}''. Bude dostupná "
-"iba časť súboru."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Vyskytla sa chyba počas analýzy gpx súboru ''{0}''. Bude dostupná iba časť "
-"súboru."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Chyba parsovania: Chybná štruktúra GPX dokumentu"
 
@@ -14282,18 +14564,6 @@ msgstr "(na riadku {0}, stĺpec {1})"
 msgid "Unknown mode {0}."
 msgstr "Neznámy mód {0}."
 
-msgid "Image Files"
-msgstr "Obrázkové súbory"
-
-msgid "folder"
-msgstr "priečinok"
-
-msgid "Looking for image files"
-msgstr "Hľadanie obrázkov"
-
-msgid "No image files found."
-msgstr "Nenajdené žiadne obrázky."
-
 msgid "get number of unread messages"
 msgstr "získať počet neprečítaných správ"
 
@@ -14350,36 +14620,9 @@ msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 "Server odpovedal stretol sa s reakcoiu kódu 404 pre id {0}. Vynechanie."
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 súbory"
-
-msgid "Coordinates imported: {0}"
-msgstr "Importované súradnice: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Chybné vety: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Kontrolný súčet chýb: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Neznáme vety: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Nulové súradnice: {0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA import úspešný:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA import zlyhal!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Chyba null pointera, možno sú neprítomné značky"
 
-msgid "Note Files"
-msgstr "Súbory poznámok"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14477,9 +14720,6 @@ msgstr "(Kód={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Server odpovedal chybou s kódom {0}"
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Súbory OSM servera skomprimované v bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr "Prológ dokumentu OsmChange už bol napísaný. Prosím, napíšte iba raz."
 
@@ -14487,18 +14727,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Úvod z OsmChange dokumentu nie je napísaný. Prosím, napíšte ho ako prvý."
 
-msgid "OsmChange File"
-msgstr "OsmChange súbor"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Súbor \"{0}\" neexistuje"
-
-msgid "No data found in file {0}."
-msgstr "V súbore neboli nájdené žiadne dáta {0}."
-
-msgid "Open OsmChange file"
-msgstr "Otvoriť súbor OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Nepodporovaná verzia: {0}"
 
@@ -14554,38 +14782,9 @@ msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 "Unexpected value for preference \"{0}\". Obdržaná hodnota je \"{1}\"."
 
-msgid "OSM Server Files"
-msgstr "Súbory OSM Servera"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html>Nejaká chyba nastala počas ukladania.<br>Chyba je: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Nejaká chyba nastala počas obnovy záložného súboru.<br>Chyba je: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Súbory servera skomprimované v gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Rozloženie OSM history data ..."
 
-msgid "Invalid dataset"
-msgstr "Neplatný dátový súbor"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Nenašli sa žiadne dáta pre vrstvu ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Nenašli sa žiadne dáta v súbore ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Otvoriť OSM súbor"
-
 msgid "Reading was canceled"
 msgstr "Čítanie bolo zrušené"
 
@@ -14735,6 +14934,9 @@ msgstr "Kontaktujem server..."
 msgid "Downloading OSM notes..."
 msgstr "Sťahujú sa OSM poznámky (Notes)..."
 
+msgid "Downloading data..."
+msgstr "Sťahujú sa dáta..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14798,14 +15000,9 @@ msgstr "Najdené neočakávané id 0 pre OSM základný objekt"
 msgid "Failed to evaluate {0}"
 msgstr "Nepodarilo sa vyhodnotiť {0}"
 
-msgid "Downloading data..."
-msgstr "Sťahujú sa dáta..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Súbory (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nepodporovaná verzia WMS súboru; nájdené {0}, očakávané {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
+"Neočakávaná hodnota pre kľúč \"{0}\" v nastavení, obdržaná hodnota je \"{1}\""
 
 msgid "{0} bytes have been read"
 msgstr "{0} bajtov prečítaných"
@@ -15988,38 +16185,6 @@ msgstr "Otvára sa URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neobsahuje {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Zastaralá verzia Java"
-
-msgid "Update Java"
-msgstr "Aktualizujte Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Používate Java verziu {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Táto verzia Javy už nie je podporovaná firmou {0} od {1} a neodporúča sa ju "
-"používať."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM čoskoro prestane fungovať s touro verziou. Odporúčame aktualizovať na "
-"Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Môžete naraziť na vážne chyby v Jave; odporúčame aktualizovať na Java {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Prajete si aktualizovať teraz?"
-
 msgid "reserved"
 msgstr "rezervované"
 
@@ -16091,22 +16256,6 @@ msgstr "V kľúči sú použité podozrivé znaky:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Hodnota je príliš dlhá (maximum {0} znakov):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Chcete prilepiť tieto značky?"
-
-msgid "Clear buffer"
-msgstr "Vymazať zásobník"
-
-msgid "Ignore warnings"
-msgstr "Ignorovať varovanie"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Prepáčte, ale nie je možné vložiť značky z vyrovnávacej pamäte. "
-"Neobsahujú žiadne objekty JOSM, alebo vhodné texty. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Nepodarilo sa odstrániť súbor {0}"
 
@@ -16131,126 +16280,14 @@ msgstr[0] "dní"
 msgstr[1] "deň"
 msgstr[2] "dni"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"nastavenie s kľúčom ''{0}'' neobsahuje ''{1}''. Nemôžem obnoviť geometriu "
-"okna z nastavení."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Nastavenie s kľúčom \"{0}\" neuvádza hodnotu typu \"int\" pre ''{1}''. "
-"Obdržaná hodnota je {2}. Nemôžem obnoviť geometriu okna z nastavení."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"neúspešné rozloženie poľa ''{1}'' v nastavení s kľúčom ''{0}''. Odchýlka "
-"bola: {2}. Nemôžem obnoviť geometriu okna z nastavení."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"nastavenie s kľúčom ''{0}'' neexistuje. Nemôžem obnoviť geometriu okna z "
-"nastavení."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ignorujem geometriu chybného tvaru: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Nepodarilo sa načítať XML schémy."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Narazili ste na chybu v programe JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Nastala neočakávaná výnimka.\n"
-"Toto je vždy chyba programovania. Ak používate najnovšiu verziu JOSM, prosím "
-"zvážte nahlásenie tejto chyby."
-
-msgid "Debug information"
-msgstr "Ladiace informácie"
-
-msgid "Manually report at:"
-msgstr "Nahláste ručne na:"
-
-msgid "Is JOSM up to date?"
-msgstr "Je JOSM aktuálny?"
-
-msgid "Send bug report"
-msgstr "Odoslať hlásenie o chybe"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Ak používate najnovšiu verziu JOSM a pluginov, prosím nahláste chybu v našom "
-"systéme hlásenia chýb.\n"
-"Informácie o chybe by mali byť predvyplnené. Prosím doplňte informácie o tom "
-"ako zreprodukovať chybu a zadajte čo najviac podrobností."
-
-msgid "Report Bug"
-msgstr "Nahlásiť chybu"
-
-msgid "Suppress this error for this session."
-msgstr "Potlačiť túto chybu pre toto sedenia."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Potlačiť ďalšie chybové hlášky počas tohto sedenia."
-
-msgid "Ignore this error."
-msgstr "Ignorovať túto chybu."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Otvorenie hlásenia o chybe sa nepodarilo. Prosím nahláste ručne na stránke:"
 
-msgid "Include the system status report."
-msgstr "Zahrnúť správu o stave systému."
-
-msgid "Include information about the data you were working on."
-msgstr "Vložiť informácie o dátach, na ktorých ste pracovali."
-
-msgid "Include all stack traces."
-msgstr "Zahrnúť výpis zásobníka programu (stack trace)."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Vaša verzia JOSM je {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM hľadá aktualizácie..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Pri kontrole aktuálnosti JOSM nastala chyba."
-
-msgid "JOSM is up to date."
-msgstr "JOSM je aktuálny."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM je zastaralý. Aktuálna verzia je {0}. Skúste JOSM aktualizovať."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Predtým než nahlásite chybu, overte či máte najnovšiu verziu JOSM tu:"
-
-msgid "Update JOSM"
-msgstr "Aktualizovať JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20008,9 +20045,6 @@ msgstr "Informácie na tabuli"
 msgid "notice"
 msgstr "upozornenie"
 
-msgid "history"
-msgstr "história"
-
 msgid "nature"
 msgstr "príroda"
 
@@ -20590,6 +20624,9 @@ msgstr "Sociálne zariadenie"
 msgid "Nursing Home"
 msgstr "Sanatórium s opaterou"
 
+msgid "Nursing Home (Legacy)"
+msgstr "Sanatórium s opaterou (zastaralé)"
+
 msgid "Group Home"
 msgstr "Spoločné bývanie"
 
@@ -23032,6 +23069,9 @@ msgstr "Darčeky/Suveníry"
 msgid "Variety Store"
 msgstr "Zmiešaný tovar"
 
+msgid "Charity"
+msgstr "Charita"
+
 msgid "Bookmaker"
 msgstr "Stávková kancelária"
 
@@ -23906,6 +23946,78 @@ msgstr "Obchodná (komerčná)"
 msgid "Industrial"
 msgstr "Priemysel"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr "pekáreň"
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr "pivovar"
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr "tehelňa"
+
+msgctxt "industrial"
+msgid "depot"
+msgstr "depo"
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr "distribútor"
+
+msgctxt "industrial"
+msgid "factory"
+msgstr "továreň"
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr "mlyn"
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr "tepláreň"
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr "výroba dielov"
+
+msgctxt "industrial"
+msgid "mine"
+msgstr "baňa"
+
+msgctxt "industrial"
+msgid "oil"
+msgstr "ropné nálezisko"
+
+msgctxt "industrial"
+msgid "port"
+msgstr "prístav"
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr "výroba soli"
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr "píla"
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr "vrakovisko"
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr "stavba lodí"
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr "bitúnok"
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr "skladisko"
+
 msgid "Garages"
 msgstr "Garáže"
 
@@ -24605,6 +24717,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25358,6 +25473,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013 - 25 cm"
 
@@ -25470,15 +25588,6 @@ msgstr "Stará mapa Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topografická mapa 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropola Ruhr: Letecké snímky (10 cm)"
 
@@ -33660,15 +33769,21 @@ msgstr "na predchádzajúce hodnoty (nezmenený mčas)"
 msgid "Photo Geotagging Plugin"
 msgstr "Photo Geotagging Plugin"
 
-msgid "Writing position information to image files..."
-msgstr "Zapisujem informáciu o polohe do obrázkov..."
-
 msgid "Could not read mtime."
 msgstr "Nemôžem čítať mčas."
 
 msgid "Could not write mtime."
 msgstr "Nemôžem zapisovať mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Zapisujem informáciu o polohe do obrázkov..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Súbor nemohol byť zmazaný!"
 
@@ -34169,6 +34284,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr "PT: testovacie varovanie"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 "PT: Trasa obsahuje medzeru, ktorú je možné upraviť usporiadaním členov"
@@ -34178,21 +34296,26 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
 msgstr ""
+"PT: Názov prvej zastávky nesúhlasí so značkou \"from\" (z) v relácii trasy"
 
 msgid ""
 "PT: The name of the last stop does not match the \"to\" tag of the route "
 "relation"
 msgstr ""
+"PT: Názov poslednej zastávky nesúhlasí so značkou \"to\" (do) v relácii trasy"
 
 msgid "PT: The first stop of the route does not match the first way"
-msgstr ""
+msgstr "PT: Prvá zastávka trasy nesúhlasí s prvou cestou"
 
 msgid "PT: The last stop of the route does not match the last way"
-msgstr ""
+msgstr "PT: Posledná zastávka trasy nesúhlasí s poslednou cestou"
 
 msgid "PT: Route should start and end with a stop_position"
 msgstr "PT: Trasa by mala začínať a končiť so \"stop_position\""
@@ -34204,10 +34327,10 @@ msgid "PT: Stop not served"
 msgstr ""
 
 msgid "PT: Problem in the route segment with no automatic fix"
-msgstr ""
+msgstr "PT: Problém v úseku trasy bez možnosti automatickej opravy"
 
 msgid "PT: Problem in the route segment with one automatic fix"
-msgstr ""
+msgstr "PT: Problém v úseku trasy s možnosťou jednej automatickej opravy"
 
 msgid "Warning: the diplayed fix variants are based on less strict criteria"
 msgstr ""
diff --git a/i18n/po/sl.po b/i18n/po/sl.po
index b41bb53..361f6e5 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 05:00+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:00+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: sl\n"
 
@@ -56,54 +56,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Pomoč"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Inicializacija OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Inicializacija preverjanja"
-
-msgid "Initializing presets"
-msgstr "Inicializacija prednastavitev"
-
-msgid "Initializing map styles"
-msgstr "Inicializacija slogov zemljevida"
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Pozor"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "O programu"
 
@@ -181,6 +136,9 @@ msgstr "Prekliči"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "Pozor"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -459,13 +417,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "Sprejem iz OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Prenesi podatke zemljevida s strežnika OSM."
+msgid "Download data"
+msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -475,9 +430,6 @@ msgstr ""
 "<html>To dejanje bo zahtevalo {0} ločenih<br>zahtev za sprejem. Ali želite "
 "nadaljevati?</html>"
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -544,6 +496,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Pomoč"
+
 msgid "History"
 msgstr "Zgodovina"
 
@@ -1043,23 +998,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Prilepi"
 
@@ -2323,36 +2261,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr "Išči..."
 
@@ -2639,86 +2547,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2736,9 +2564,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3087,57 +2912,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr "Samodejno popravljanje oznak"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3227,6 +3007,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3355,6 +3141,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3369,6 +3164,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3405,10 +3203,71 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "nepopoln"
+
+msgid "House {0}"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "vozlišča"
+msgstr[1] "vozlišč"
+msgstr[2] "vozlišče"
+msgstr[3] "vozlišči"
+
+msgid "highway"
+msgstr "cesta"
+
+msgid "railway"
+msgstr "železnica"
+
+msgid "waterway"
+msgstr "vodotok"
+
+msgid "landuse"
+msgstr "raba tal"
+
+msgid "building"
+msgstr "zgradba"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} točke"
+msgstr[1] "{0} točk"
+msgstr[2] "{0} točka"
+msgstr[3] "{0} točki"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} člani"
+msgstr[1] "{0} članov"
+msgstr[2] "{0} član"
+msgstr[3] "{0} člana"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relacije"
+msgstr[1] "relacije"
+msgstr[2] "relacija"
+msgstr[3] "relaciji"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
 msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
@@ -3439,13 +3298,6 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "vozlišča"
-msgstr[1] "vozlišč"
-msgstr[2] "vozlišče"
-msgstr[3] "vozlišči"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "poti"
@@ -3453,13 +3305,6 @@ msgstr[1] "poti"
 msgstr[2] "pot"
 msgstr[3] "poti"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relacije"
-msgstr[1] "relacije"
-msgstr[2] "relacija"
-msgstr[3] "relaciji"
-
 msgid "closedway"
 msgstr ""
 
@@ -3493,6 +3338,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3570,6 +3525,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Naslovi"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Vera"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relacije"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedija"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3756,9 +3826,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Naslovi"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3943,9 +4010,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4484,9 +4548,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "zgradba"
-
 msgid "area"
 msgstr ""
 
@@ -4601,48 +4662,13 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "nepopoln"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
+msgid "Ignoring malformed URL: \"{0}\""
 msgstr ""
 
-msgid "highway"
-msgstr "cesta"
-
-msgid "railway"
-msgstr "železnica"
-
-msgid "waterway"
-msgstr "vodotok"
-
-msgid "landuse"
-msgstr "raba tal"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} točke"
-msgstr[1] "{0} točk"
-msgstr[2] "{0} točka"
-msgstr[3] "{0} točki"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} člani"
-msgstr[1] "{0} članov"
-msgstr[2] "{0} član"
-msgstr[3] "{0} člana"
-
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4678,61 +4704,121 @@ msgstr "Spor"
 msgid "Authentication Failed"
 msgstr ""
 
-msgid "Access to redacted version ''{0}'' of {1} {2} is forbidden."
+msgid "Access to redacted version ''{0}'' of {1} {2} is forbidden."
+msgstr ""
+
+msgid "Authorisation Failed"
+msgstr ""
+
+msgid "Client Time Out"
+msgstr ""
+
+msgid "Bandwidth Limit Exceeded"
+msgstr ""
+
+msgid "Communication with OSM server failed"
+msgstr ""
+
+msgid "Authentication failed"
+msgstr ""
+
+msgid "Unknown host"
+msgstr "Neznan gostitelj"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "Objekti izbrisani"
+msgstr[1] "Objekt izbrisan"
+msgstr[2] "Objekta izbrisana"
+msgstr[3] "Objekti izbrisani"
+
+msgid "Show help information"
+msgstr ""
+
+msgid "Downloading \"Message of the day\""
+msgstr ""
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr ""
+
+msgid "Message of the day not available"
+msgstr "Sporočilo dneva ni na voljo"
+
+msgid "Click to close the dialog"
+msgstr ""
+
+msgid "Imagery offset"
+msgstr ""
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr ""
+
+msgctxt "layer"
+msgid "Offset"
+msgstr ""
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr ""
+
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
 msgstr ""
 
-msgid "Authorisation Failed"
+msgid "You are running version {0} of Java."
 msgstr ""
 
-msgid "Client Time Out"
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
 msgstr ""
 
-msgid "Bandwidth Limit Exceeded"
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
 msgstr ""
 
-msgid "Communication with OSM server failed"
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
 msgstr ""
 
-msgid "Authentication failed"
+msgid "Would you like to update now ?"
 msgstr ""
 
-msgid "Unknown host"
-msgstr "Neznan gostitelj"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "Objekti izbrisani"
-msgstr[1] "Objekt izbrisan"
-msgstr[2] "Objekta izbrisana"
-msgstr[3] "Objekti izbrisani"
+msgid "Executing platform startup hook"
+msgstr ""
 
-msgid "Show help information"
+msgid "Building main menu"
 msgstr ""
 
-msgid "Downloading \"Message of the day\""
+msgid "Updating user interface"
 msgstr ""
 
-msgid "Failed to read MOTD. Exception was: {0}"
+msgid "Initializing internal boundaries data"
 msgstr ""
 
-msgid "Message of the day not available"
-msgstr "Sporočilo dneva ni na voljo"
+msgid "Initializing OSM API"
+msgstr "Inicializacija OSM API"
 
-msgid "Click to close the dialog"
+msgid "Initializing internal traffic data"
 msgstr ""
 
-msgid "Imagery offset"
-msgstr ""
+msgid "Initializing validator"
+msgstr "Inicializacija preverjanja"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr ""
+msgid "Initializing presets"
+msgstr "Inicializacija prednastavitev"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr ""
+msgid "Initializing map styles"
+msgstr "Inicializacija slogov zemljevida"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgid "Loading imagery preferences"
 msgstr ""
 
 msgid "usage"
@@ -5196,6 +5282,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Prijavi napako"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5890,6 +6049,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6446,9 +6619,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6559,9 +6729,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relacije"
-
 msgid "Open a list of all relations."
 msgstr "Odpri seznam vseh relacij."
 
@@ -7959,24 +8126,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Viri in tipi podatkov:"
-
-msgid "OpenStreetMap data"
-msgstr "Podatki OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "Surovi podstki GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Prenesi v novo plast"
 
@@ -8004,28 +8153,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
-msgid "No area selected yet"
-msgstr ""
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Področje za sprejem je preveliko; najbrž bo strežnik zahtevo zavrnil"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Področje sprejema v redu, velikost bo verjetno sprejemljiva za strežnik"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
 msgid "Click to download the currently selected area"
 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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "Prenesi povezane (nadrejene relacije)"
 
@@ -8045,8 +8178,91 @@ msgstr ""
 msgid "Select if the members of a relation should be downloaded as well"
 msgstr "Izberi, če naj se prenesejo tudi člani relacije"
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "Prenesi povezane (nadrejene relacije in poti)"
+msgid "Download referrers (parent relations and ways)"
+msgstr "Prenesi povezane (nadrejene relacije in poti)"
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Viri in tipi podatkov:"
+
+msgid "OpenStreetMap data"
+msgstr "Podatki OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "Surovi podstki GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
+msgid "No area selected yet"
+msgstr ""
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Področje za sprejem je preveliko; najbrž bo strežnik zahtevo zavrnil"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Področje sprejema v redu, velikost bo verjetno sprejemljiva za strežnik"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr ""
 
 msgid "Please select an item first"
 msgstr ""
@@ -8090,9 +8306,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8630,6 +8843,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9115,9 +9340,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9196,6 +9418,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Opomba: GPL ni združljiv z licenco OSM. Ne pošiljajte GPS sledi z licenco "
+"GPL."
+
+msgid "GPS track description"
+msgstr "Opis GPS sledi"
+
+msgid "Add author information"
+msgstr "Dodaj podatke o avtorstvu"
+
+msgid "Real name"
+msgstr "Resnično ime"
+
+msgid "E-Mail"
+msgstr "E-poštni naslov"
+
+msgid "Copyright (URL)"
+msgstr "Avtorske pravice (URL)"
+
+msgid "Predefined"
+msgstr "Preddoločen"
+
+msgid "Copyright year"
+msgstr "Leto avtorskih pravic"
+
+msgid "Keywords"
+msgstr "Ključne besede"
+
+msgid "Export options"
+msgstr "Možnosti izvoza"
+
+msgid "Export and Save"
+msgstr "Izvozi in shrani"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Napaka pri izvozu {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Izberite preddoločeno licenco"
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Nepodprta različica datoteke WMS; našel {0}, pričakoval {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9303,6 +9701,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Prilagodi barvo"
 
@@ -9406,6 +9831,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "izven sprejetega področja"
 
@@ -9479,6 +9907,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10052,9 +10483,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10064,6 +10492,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10486,46 +10917,25 @@ msgstr ""
 msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "Za upoštevanje nekaterih sprememb je potrebno ponovno zagnati JOSM."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "Za upoštevanje nekaterih sprememb je potrebno ponovno zagnati JOSM."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11613,19 +12023,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Nastavitve zemljevida"
 
@@ -11705,12 +12102,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12176,9 +12567,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12196,12 +12584,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12382,69 +12764,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Vera"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedija"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12690,6 +13009,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12802,9 +13144,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Sprejem točk od {0} do {1}..."
 
@@ -12907,90 +13246,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Opomba: GPL ni združljiv z licenco OSM. Ne pošiljajte GPS sledi z licenco "
-"GPL."
-
-msgid "GPS track description"
-msgstr "Opis GPS sledi"
-
-msgid "Add author information"
-msgstr "Dodaj podatke o avtorstvu"
-
-msgid "Real name"
-msgstr "Resnično ime"
-
-msgid "E-Mail"
-msgstr "E-poštni naslov"
-
-msgid "Copyright (URL)"
-msgstr "Avtorske pravice (URL)"
-
-msgid "Predefined"
-msgstr "Preddoločen"
-
-msgid "Copyright year"
-msgstr "Leto avtorskih pravic"
-
-msgid "Keywords"
-msgstr "Ključne besede"
-
-msgid "Export options"
-msgstr "Možnosti izvoza"
-
-msgid "Export and Save"
-msgstr "Izvozi in shrani"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Napaka pri izvozu {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Izberite preddoločeno licenco"
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -13000,18 +13255,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13063,36 +13306,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13180,27 +13396,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13246,35 +13447,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13406,6 +13581,9 @@ msgstr "Vzpostavljanje povezave s strežnikom..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13465,15 +13643,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Nepodprta različica datoteke WMS; našel {0}, pričakoval {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14411,33 +14583,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14496,20 +14641,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14533,109 +14664,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Prijavi napako"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18348,9 +18383,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18930,6 +18962,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21370,6 +21405,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22230,6 +22268,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22925,6 +23035,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23677,6 +23790,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23787,15 +23903,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31649,13 +31756,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32153,6 +32266,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32161,6 +32277,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/sq.po b/i18n/po/sq.po
index 6ab38cf..82d0442 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2011-11-04 19:43+0000\n"
 "Last-Translator: StefanPrifti <Unknown>\n"
 "Language-Team: FLOSS Kosova\n"
@@ -15,7 +15,7 @@ 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-08-13 04:34+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:33+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "Ndihmë"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Vërejtje"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "Rreth"
 
@@ -180,6 +135,9 @@ msgstr "Anulo"
 msgid "Click to abort launching external browsers"
 msgstr "Kliko për të ndërprerë hapjen e shfletuesëve të jashtëm"
 
+msgid "Warning"
+msgstr "Vërejtje"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "Ndihmë"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/sr.po b/i18n/po/sr.po
index a23339f..2177d0d 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +16,7 @@ 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-08-13 04:59+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 04:58+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: sr\n"
 
@@ -56,54 +56,9 @@ msgstr "Услови коришћења позадине"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr "Припремам главни мени"
-
-msgid "Help"
-msgstr "Помоћ"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Иницијализација ОСМ АПИ-ја"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr "Иницијализација пресета"
-
-msgid "Initializing map styles"
-msgstr "Иницијализација стилова мапа"
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr "Ажурирање корисничког интерфејса"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "Упозорење"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "О програму"
 
@@ -181,6 +136,9 @@ msgstr "Откажи"
 msgid "Click to abort launching external browsers"
 msgstr "Кликни да прекинеш покретање спољњег веб читача"
 
+msgid "Warning"
+msgstr "Упозорење"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Изабреите макар један већ послатобјекат (тачку, пут или релацију)."
 
@@ -457,13 +415,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -471,9 +426,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -540,6 +492,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr "Извези GPX фајл"
 
+msgid "Help"
+msgstr "Помоћ"
+
 msgid "History"
 msgstr ""
 
@@ -1039,23 +994,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2310,36 +2248,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2626,86 +2534,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2723,9 +2551,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3072,57 +2897,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3212,6 +2992,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3340,6 +3126,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3354,6 +3149,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3390,15 +3188,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3424,21 +3275,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3472,6 +3313,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3549,6 +3500,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3733,9 +3799,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3920,9 +3983,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4461,9 +4521,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4575,47 +4632,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4706,6 +4732,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr "Припремам главни мени"
+
+msgid "Updating user interface"
+msgstr "Ажурирање корисничког интерфејса"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Иницијализација ОСМ АПИ-ја"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr "Иницијализација пресета"
+
+msgid "Initializing map styles"
+msgstr "Иницијализација стилова мапа"
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5167,6 +5253,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5861,6 +6020,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6417,9 +6590,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6530,9 +6700,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7925,49 +8092,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7979,36 +8184,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8053,9 +8269,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8594,6 +8807,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9071,9 +9296,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9152,6 +9374,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9259,6 +9653,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9362,6 +9783,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9435,6 +9859,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10004,9 +10431,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10016,6 +10440,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10429,55 +10856,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11563,19 +11969,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11655,12 +12048,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12126,9 +12513,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12146,12 +12530,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12332,69 +12710,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12638,6 +12953,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12750,9 +13088,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12855,86 +13190,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12944,18 +13199,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13007,36 +13250,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13124,27 +13340,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13190,35 +13391,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13350,6 +13525,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13407,13 +13585,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14349,33 +14521,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14434,20 +14579,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14471,109 +14602,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18286,9 +18321,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18868,6 +18900,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21308,6 +21343,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22168,6 +22206,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22863,6 +22973,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23615,6 +23728,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23725,15 +23841,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31585,13 +31692,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32089,6 +32202,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32097,6 +32213,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/sv.po b/i18n/po/sv.po
index d79372c..a67b0eb 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:01+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:01+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: sv\n"
 
@@ -55,54 +55,9 @@ msgstr "Villkor för användning av bakgrund"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Öppnande av länk stöds inte på aktuell platform (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Kör plattformens uppstarts-hook"
-
-msgid "Building main menu"
-msgstr "Bygger huvudmenyn"
-
-msgid "Help"
-msgstr "Hjälp"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Initierar OSM-API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Initierar validerare"
-
-msgid "Initializing presets"
-msgstr "Initierar förinställningar"
-
-msgid "Initializing map styles"
-msgstr "Initierar kartstilar"
-
-msgid "Loading imagery preferences"
-msgstr "Laddar inställningar för ortofoto"
-
-msgid "Updating user interface"
-msgstr "Uppdaterar användargränssnittet"
-
 msgid "Failed to save default preferences."
 msgstr "Kunde inte spara standardinställningarna."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Hoppar över felaktig URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Varning"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ignorerar ogiltig fil-URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametern \"downloadgps\" godtar inte filnamn eller fil-URL:er"
-
 msgid "About"
 msgstr "Om"
 
@@ -184,6 +139,9 @@ msgstr "Avbryt"
 msgid "Click to abort launching external browsers"
 msgstr "Klicka för att avbryta uppstart av externa webbläsare"
 
+msgid "Warning"
+msgstr "Varning"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Välj åtminstone en redan uppladdad nod, sträcka eller relation."
 
@@ -473,14 +431,11 @@ msgstr ""
 "* En ej självkorsande väg på mins två av dess noder;\n"
 "* Tre noder."
 
-msgid "Download from OSM..."
-msgstr "Ladda ner från OSM..."
-
-msgid "Download map data from the OSM server."
-msgstr "Ladda ner kartdata från OSM-servern."
+msgid "Download data"
+msgstr "Hämta data"
 
-msgid "Please select a download area first."
-msgstr "Välj först ett område att hämta"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -489,9 +444,6 @@ msgstr ""
 "<html>För att utföra detta så kommer {0} separata<br>hämtningar att begäras. "
 "Önskar du<br>fortsätta?</html>"
 
-msgid "Download data"
-msgstr "Hämta data"
-
 msgid "Download notes in current view"
 msgstr "Ladda ner kartanteckningar i nuvarande vy."
 
@@ -558,6 +510,9 @@ msgstr "Det finns inte något att exportera. Skaffa lite data först."
 msgid "Export GPX file"
 msgstr "Exportera till GPX-fil"
 
+msgid "Help"
+msgstr "Hjälp"
+
 msgid "History"
 msgstr "Historik"
 
@@ -1111,23 +1066,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Välj sträckor som står i ungefär 90 eller 180 graders vinkel."
 
-msgid "Download from Overpass API ..."
-msgstr "Ladda ner från Overpass API…"
-
-msgid "Download map data from Overpass API server."
-msgstr "Ladda ner karta från Overpass API-server"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Klistra in"
 
@@ -2490,36 +2428,6 @@ msgstr "Välj relation (lägg till)"
 msgid "Select relation"
 msgstr "Välj relation"
 
-msgid "<not>"
-msgstr "<inte>"
-
-msgid "<or>"
-msgstr "<eller>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<vänster förälder>"
-
-msgid "<right parent>"
-msgstr "<höger förälder>"
-
-msgid "<colon>"
-msgstr "<kolon>"
-
-msgid "<equals>"
-msgstr "<lika-med>"
-
-msgid "<key>"
-msgstr "<nyckel>"
-
-msgid "<question mark>"
-msgstr "<frågetecken>"
-
-msgid "<end-of-file>"
-msgstr "<slut-på-fil>"
-
 msgid "Search..."
 msgstr "Sök..."
 
@@ -2816,98 +2724,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] "Söker i {0} objekt"
 msgstr[1] "Söker i {0} objekt"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Det reguljära uttrycket \"{0}\" orsakade tolkningsfel vid offset {1}, "
-"fullständigt fel:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Det reguljära uttrycket \"{0}\" kunde inte tolkas, fullständig "
-"felbeskrivning:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Kunde inte tolka tidsstämpel \"{0}\""
-
-msgid "Expecting {0} after {1}"
-msgstr "Förväntar {0} efter {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Lista med primitiva id:n förväntas"
-
-msgid "Range of changeset ids expected"
-msgstr "Lista med ändringsuppsättning-IDn förväntas"
-
-msgid "Range of versions expected"
-msgstr "Lista med versioner förväntas"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Nyckelfältet (key) kan inte vara tomt när värde har angetts. Exempel på "
-"användning: key=värde"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Okänd dataprimitiv: {0}. Tillåtna värden är node (nod), way (sträcka) eller "
-"relation"
-
-msgid "Positive integer expected"
-msgstr "Positivt heltal förväntas"
-
-msgid "Range of numbers expected"
-msgstr "Ett sifferintervall förväntades"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Oväntad symbol. Förväntade {0}, men fann {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Kunde inte tolka MapCSS-selektorn"
-
-msgid "Unexpected token: {0}"
-msgstr "Oväntad symbol: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Parameter saknas för OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Saknar parameter för XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Parameter saknar för NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 "Trunkerar automatiskt värde av taggen \"{0}\" på det borttagna objektet {1}a"
@@ -2928,9 +2744,6 @@ msgstr "{0} noder i väg {1} vilket överskrider maximalt antal noder {2}"
 msgid "API Capabilities Violation"
 msgstr "Bryter mot API:ns möjligheter"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Cykliskt beroende mellan relationer:"
-
 msgid "Removed obsolete tags"
 msgstr "Borttagna föråldrade taggar"
 
@@ -3311,60 +3124,12 @@ msgstr "Roller i relationer hänvisar till"
 msgid "Automatic tag correction"
 msgstr "Automatisk taggrättning"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Kunde Ej skapa katalogen {0}, autospara-funktionen inaktiverad."
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Kunde ej skapa filen {0}, ett annat filnamn kommer att användas"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IO-fel vid skapande av fil, autosparning kommer att hoppas över: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Kunde Ej ta bort den utdaterade backup-filen {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Ditt arbete har sparats automatiskt."
-
-msgid "Restoring files"
-msgstr "Återställer filer"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Kunde inte ta bort säkerhetskopiefilen {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Kunde inte ta bort PID-filen {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Kunde inte ta bort den arkiverade säkerhetskopiefilen {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Ogiltigt latitud-värde ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Ogiltigt longitud-värde ''{0}''"
 
-msgid "Question"
-msgstr "Fråga"
-
-msgid "Message"
-msgstr "Meddelande"
-
-msgid "Enter text"
-msgstr "Mata in text"
-
-msgid "Installing plugins"
-msgstr "Installerar insticksmoduler"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Inställningsfilen vill lägga till egenskaper till<b>{0}</b>,<br/> men "
-"dess standarsvärde är okänt just nu.<br/> Var god aktivera motsvarande "
-"funktion manuellt och försök igen att importera."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Misslyckades med att skapa saknad cache-katalog: {0}"
 
@@ -3470,6 +3235,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Inställningen {0} har raderats då den inte används längre."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Inställningsfilen vill lägga till egenskaper till<b>{0}</b>,<br/> men "
+"dess standarsvärde är okänt just nu.<br/> Var god aktivera motsvarande "
+"funktion manuellt och försök igen att importera."
+
 msgid "Metric"
 msgstr "Metriskt (SI)"
 
@@ -3604,6 +3378,15 @@ msgstr ""
 msgid "Note"
 msgstr "Anteckning"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID över noll förväntad; Fick {0}"
 
@@ -3620,6 +3403,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "En primitiv med ID = 0 kan Ej vara osynlig."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Cykliskt beroende mellan relationer:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3658,6 +3444,59 @@ msgstr "Sammanfogar data..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Test ''{0}'' fullbordad i {1}"
 
+msgid "incomplete"
+msgstr "ofullständig"
+
+msgid "House {0}"
+msgstr "Hus {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Husnummer {0} på {1}"
+
+msgid "House number {0}"
+msgstr "Husnummer {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nod"
+msgstr[1] "noder"
+
+msgid "highway"
+msgstr "landsväg"
+
+msgid "railway"
+msgstr "järnväg"
+
+msgid "waterway"
+msgstr "vattendrag"
+
+msgid "landuse"
+msgstr "markanvändning"
+
+msgid "building"
+msgstr "byggnad (building)"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nod"
+msgstr[1] "{0} noder"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} medlem"
+msgstr[1] "{0} medlemmar"
+
+msgid "public transport"
+msgstr "Allmän transport"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "relation"
+msgstr[1] "relationer"
+
+msgid "Changeset {0}"
+msgstr "Ändringsuppsättning {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3692,21 +3531,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nod"
-msgstr[1] "noder"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "sträcka"
 msgstr[1] "sträckor"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "relation"
-msgstr[1] "relationer"
-
 msgid "closedway"
 msgstr "slutenväg"
 
@@ -3740,6 +3569,128 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Parametern {0} är inte inom området «0..{1}», Fick ''{2}''."
 
+msgid "<not>"
+msgstr "<inte>"
+
+msgid "<or>"
+msgstr "<eller>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<vänster förälder>"
+
+msgid "<right parent>"
+msgstr "<höger förälder>"
+
+msgid "<colon>"
+msgstr "<kolon>"
+
+msgid "<equals>"
+msgstr "<lika-med>"
+
+msgid "<key>"
+msgstr "<nyckel>"
+
+msgid "<question mark>"
+msgstr "<frågetecken>"
+
+msgid "<end-of-file>"
+msgstr "<slut-på-fil>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Det reguljära uttrycket \"{0}\" orsakade tolkningsfel vid offset {1}, "
+"fullständigt fel:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Det reguljära uttrycket \"{0}\" kunde inte tolkas, fullständig "
+"felbeskrivning:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Kunde inte tolka tidsstämpel \"{0}\""
+
+msgid "Expecting {0} after {1}"
+msgstr "Förväntar {0} efter {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Lista med primitiva id:n förväntas"
+
+msgid "Range of changeset ids expected"
+msgstr "Lista med ändringsuppsättning-IDn förväntas"
+
+msgid "Range of versions expected"
+msgstr "Lista med versioner förväntas"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Nyckelfältet (key) kan inte vara tomt när värde har angetts. Exempel på "
+"användning: key=värde"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Okänd dataprimitiv: {0}. Tillåtna värden är node (nod), way (sträcka) eller "
+"relation"
+
+msgid "Positive integer expected"
+msgstr "Positivt heltal förväntas"
+
+msgid "Range of numbers expected"
+msgstr "Ett sifferintervall förväntades"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Kunde inte tolka MapCSS-selektorn"
+
+msgid "Unexpected token: {0}"
+msgstr "Oväntad symbol: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Parameter saknas för OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Saknar parameter för XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Parameter saknar för NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Oväntad symbol. Förväntade {0}, men fann {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "Kunde inte ladda kartrenderingsklassen {0}. Klassen hittades inte."
 
@@ -3817,6 +3768,121 @@ msgstr "Väntade element ''{0}'', men fick ''{1}''"
 msgid "value expected"
 msgstr "värde erfodras"
 
+msgid "Short Description:"
+msgstr "Kort beskrivning:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Upphovsman:"
+
+msgid "Webpage:"
+msgstr "Webbsida:"
+
+msgid "Description:"
+msgstr "Beskrivning:"
+
+msgid "Version:"
+msgstr "Version:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Minimal JOSM-version:"
+
+msgid "by {0}"
+msgstr "av {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Adresser"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr "Taggkombinationer"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr "Geometri"
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "Vägar"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr "Numeriska värden"
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Religion"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "Relationer"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr "Distrikt"
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "Onödiga taggar"
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -4003,9 +4069,6 @@ msgstr "URL:en innehåller ett felaktigt fragment: {0}"
 msgid "URL validator"
 msgstr "URL validator"
 
-msgid "Addresses"
-msgstr "Adresser"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Kontrollerar fel i adresser och associatedStreet-relationer."
 
@@ -4196,9 +4259,6 @@ msgstr "Dubbletter av noder på sträckor"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Letar efter sträckor med identiska noder i följd."
 
-msgid "Highways"
-msgstr "Vägar"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4755,9 +4815,6 @@ msgstr "vattenledstyp {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "byggnad (building)"
-
 msgid "area"
 msgstr "yta"
 
@@ -4880,45 +4937,14 @@ msgstr "Visa inte igen (den här sessionen)"
 msgid "Do not show again (remembers choice)"
 msgstr "Visa inte igen (Kom ihåg mitt val)"
 
-msgid "incomplete"
-msgstr "ofullständig"
-
-msgid "House {0}"
-msgstr "Hus {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Husnummer {0} på {1}"
-
-msgid "House number {0}"
-msgstr "Husnummer {0}"
-
-msgid "highway"
-msgstr "landsväg"
-
-msgid "railway"
-msgstr "järnväg"
-
-msgid "waterway"
-msgstr "vattendrag"
-
-msgid "landuse"
-msgstr "markanvändning"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nod"
-msgstr[1] "{0} noder"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} medlem"
-msgstr[1] "{0} medlemmar"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Hoppar över felaktig URL: \"{0}\""
 
-msgid "public transport"
-msgstr "Allmän transport"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ignorerar ogiltig fil-URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Ändringsuppsättning {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "Parametern \"downloadgps\" godtar inte filnamn eller fil-URL:er"
 
 msgid "Precondition violation"
 msgstr "Brott mot förhandsvillkor"
@@ -5008,6 +5034,70 @@ msgstr "Förskjutning"
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr "Förväntade ett Ej tomt värde för parametern ''{0}'', fick ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Föråldrad Java-version"
+
+msgid "Update Java"
+msgstr "Uppdatera Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Du kör version {0} av Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Den här versionen är inte längre supportad av {0} sedan {1} och "
+"rekommenderas inte att användas."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM kommer snart att sluta fungera med den här versionen; vi rekommenderar "
+"starkt att du uppdaterar till Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Vill du uppdatera nu?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Kör plattformens uppstarts-hook"
+
+msgid "Building main menu"
+msgstr "Bygger huvudmenyn"
+
+msgid "Updating user interface"
+msgstr "Uppdaterar användargränssnittet"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Initierar OSM-API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Initierar validerare"
+
+msgid "Initializing presets"
+msgstr "Initierar förinställningar"
+
+msgid "Initializing map styles"
+msgstr "Initierar kartstilar"
+
+msgid "Loading imagery preferences"
+msgstr "Laddar inställningar för ortofoto"
+
 msgid "usage"
 msgstr "användning"
 
@@ -5481,6 +5571,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Du har stött på en bugg i JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Rapportera en bugg"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -6184,6 +6347,22 @@ msgstr ""
 "klistras in tas dessa bort. Vill du klistra in datan utan dessa okompletta "
 "objekt?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Vill du klistra in dessa taggar?"
+
+msgid "Clear buffer"
+msgstr "Töm buffert"
+
+msgid "Ignore warnings"
+msgstr "Ignorera varningar"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> Tyvärr, det är omöjligt att klistra in taggar från bufferten. Den "
+"innehåller inget JOSM-objekt eller lämplig text. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Visa enbart för valda objekt"
 
@@ -6758,9 +6937,6 @@ msgstr "Källa"
 msgid "Title:"
 msgstr "Titel:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6871,9 +7047,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "Relationer"
-
 msgid "Open a list of all relations."
 msgstr "Öppna en lista över alla relationer"
 
@@ -8293,24 +8466,6 @@ msgstr "Värde för latitud i intervallet [-90,90] krävs"
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Värde för longitud i intervallet [-180,180] krävs"
 
-msgid "Data Sources and Types:"
-msgstr "Datakällor och -typer"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap-data"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Välj för att hämta OSM-data för det valda hämtningsområdet."
-
-msgid "Raw GPS data"
-msgstr "Rå GPS-data"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Välj för att hämta GPS-spår för det valda hämtningsområdet."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Välj för att hämta anteckningar för det valda hämtningsområdet."
-
 msgid "Download as new layer"
 msgstr "Hämta som ett nytt lager"
 
@@ -8343,29 +8498,12 @@ msgstr ""
 "höger musknapp för att translatera karta, scrollhjulet eller +/- för att "
 "zooma"
 
-msgid "No area selected yet"
-msgstr "Inget område valt än"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Hämtningsområdet är alltför stort; kommer troligen avvisas av servern."
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Hämtningsområdets storlek är ok, kommer troligen accepteras av servern."
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Klicka för att stänga dialogen och avbryta hämtning"
 
 msgid "Click to download the currently selected area"
 msgstr "Klicka för att ladda ner det valda området"
 
-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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "Laddar ner referenser (föräldrarelationer)"
 
@@ -8386,6 +8524,90 @@ msgstr "Välj om även medlemmar i relationen ska laddas ner"
 msgid "Download referrers (parent relations and ways)"
 msgstr ""
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Datakällor och -typer"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap-data"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Välj för att hämta OSM-data för det valda hämtningsområdet."
+
+msgid "Raw GPS data"
+msgstr "Rå GPS-data"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Välj för att hämta GPS-spår för det valda hämtningsområdet."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Välj för att hämta anteckningar för det valda hämtningsområdet."
+
+msgid "Please select a download area first."
+msgstr "Välj först ett område att hämta"
+
+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 ""
+
+msgid "No area selected yet"
+msgstr "Inget område valt än"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr ""
+"Hämtningsområdet är alltför stort; kommer troligen avvisas av servern."
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr ""
+"Hämtningsområdets storlek är ok, kommer troligen accepteras av servern."
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "historiskt"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8428,9 +8650,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "Tolkningsfel"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8987,6 +9206,18 @@ msgstr "Autentisera med det angivna användarnamnet och lösenordet"
 msgid "Cancel authentication"
 msgstr "Avbryt autentisering"
 
+msgid "Question"
+msgstr "Fråga"
+
+msgid "Message"
+msgstr "Meddelande"
+
+msgid "Enter text"
+msgstr "Mata in text"
+
+msgid "Installing plugins"
+msgstr "Installerar insticksmoduler"
+
 msgid "Downloading file"
 msgstr "Laddar ner fil"
 
@@ -9492,9 +9723,6 @@ msgstr "Markera objekt att ladda upp"
 msgid "Cancel uploading"
 msgstr "Avbryt uppladdning"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9573,6 +9801,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} objekt att radera:"
 msgstr[1] "{0} objekt att radera:"
 
+msgid "All Formats"
+msgstr "Alla format"
+
+msgid "Could not export ''{0}''."
+msgstr "Kunde inte exportera ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Kunde inte importera ''{0}''."
+
+msgid "Could not import files."
+msgstr "Kunde inte importera filer."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Kunde inte läsa filen ''{0}''.<br>Felet är:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Kunde inte läsa filer.<br>Felet är:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON-filer"
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Obs: GPL är inte kompatibelt med OSM-licensen. Skicka inte in spår under GPL-"
+"licens."
+
+msgid "GPS track description"
+msgstr "beskrivning av gps-spår"
+
+msgid "Add author information"
+msgstr "Lägg till information om upphovsman"
+
+msgid "Real name"
+msgstr "Namn"
+
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Fördefinierad"
+
+msgid "Copyright year"
+msgstr "Copyrightår"
+
+msgid "Keywords"
+msgstr "Nyckelord"
+
+msgid "Export options"
+msgstr "Exportalternativ"
+
+msgid "Export and Save"
+msgstr "Exportera och spara"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Fel vid export av {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Välj en fördefinierad licens"
+
+msgid "GPX Files"
+msgstr "GPX-filer"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr "Bilder"
+
+msgid "folder"
+msgstr "mapp"
+
+msgid "Looking for image files"
+msgstr "Söker efter bilder"
+
+msgid "No image files found."
+msgstr "Inga bilder hittades."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183-filer"
+
+msgid "Coordinates imported: {0}"
+msgstr "Koordinater importerade: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "Import från NMEA misslyckades!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr "Filen ''{0}'' existerar inte."
+
+msgid "No data found in file {0}."
+msgstr "Inget data funnet i filen {0}."
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr "OSM serverfiler"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr "Ogiltigt dataset"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Ingen data hittad i lager ''{0}''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Ingen data hittad i fil ''{0}''."
+
+msgid "Open OSM file"
+msgstr "Öppna OSM-fil"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS-filer (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "WMS-filversion som ej stöds; funnen {0}, förväntad {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9680,6 +10084,33 @@ msgstr "Visa inte det här meddelandet igen"
 msgid "Hide this message and never show it again"
 msgstr "Dölj detta meddelande och visa det aldrig igen"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Kunde Ej skapa katalogen {0}, autospara-funktionen inaktiverad."
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Kunde ej skapa filen {0}, ett annat filnamn kommer att användas"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IO-fel vid skapande av fil, autosparning kommer att hoppas över: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Kunde Ej ta bort den utdaterade backup-filen {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Ditt arbete har sparats automatiskt."
+
+msgid "Restoring files"
+msgstr "Återställer filer"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Kunde inte ta bort säkerhetskopiefilen {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Kunde inte ta bort PID-filen {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Kunde inte ta bort den arkiverade säkerhetskopiefilen {0}"
+
 msgid "Customize Color"
 msgstr "Anpassa färger"
 
@@ -9783,6 +10214,9 @@ msgstr "Totalt antal anteckningar:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "utanför hämtat område"
 
@@ -9858,6 +10292,9 @@ msgstr "Valideringsfel"
 msgid "No validation errors"
 msgstr "Inga valideringsfel"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10455,9 +10892,6 @@ msgstr "(URL:en var: "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10467,6 +10901,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10917,27 +11354,6 @@ msgstr "Hämta hem insticksmoduler"
 msgid "Icon paths:"
 msgstr ""
 
-msgid "Short Description:"
-msgstr "Kort beskrivning:"
-
-msgid "Author:"
-msgstr "Upphovsman:"
-
-msgid "Webpage:"
-msgstr "Webbsida:"
-
-msgid "Description:"
-msgstr "Beskrivning:"
-
-msgid "Version:"
-msgstr "Version:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Minimal JOSM-version:"
-
-msgid "by {0}"
-msgstr "av {0}"
-
 msgid "Name (optional):"
 msgstr "Namn (valfritt):"
 
@@ -12053,19 +12469,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Kartinställningar"
 
@@ -12145,12 +12548,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Insticksmodulen {0} krävs fortfarande av denna insticksmodul:"
@@ -12633,9 +13030,6 @@ msgstr "OSM-lösenord:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12653,12 +13047,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr "Spara till inställningar"
 
@@ -12843,69 +13231,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr "Taggkombinationer"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr "Geometri"
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr "Numeriska värden"
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Religion"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr "Distrikt"
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "Onödiga taggar"
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -13149,6 +13474,29 @@ msgstr "Alla filer (*.*)"
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr "Min. latitud"
 
@@ -13266,9 +13614,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Borttagen medlem{0} används av relation {1}"
 
-msgid "All Formats"
-msgstr "Alla format"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Hämtar punkter {0} till {1}..."
 
@@ -13371,90 +13716,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Oväntat XML-element med namnet ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Kunde inte exportera ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Kunde inte importera ''{0}''."
-
-msgid "Could not import files."
-msgstr "Kunde inte importera filer."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Kunde inte läsa filen ''{0}''.<br>Felet är:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Kunde inte läsa filer.<br>Felet är:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON-filer"
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Obs: GPL är inte kompatibelt med OSM-licensen. Skicka inte in spår under GPL-"
-"licens."
-
-msgid "GPS track description"
-msgstr "beskrivning av gps-spår"
-
-msgid "Add author information"
-msgstr "Lägg till information om upphovsman"
-
-msgid "Real name"
-msgstr "Namn"
-
-msgid "E-Mail"
-msgstr "E-mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Fördefinierad"
-
-msgid "Copyright year"
-msgstr "Copyrightår"
-
-msgid "Keywords"
-msgstr "Nyckelord"
-
-msgid "Export options"
-msgstr "Exportalternativ"
-
-msgid "Export and Save"
-msgstr "Exportera och spara"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Fel vid export av {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Välj en fördefinierad licens"
-
-msgid "GPX Files"
-msgstr "GPX-filer"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Tolkningsfel: ogiltig dokumentstruktur för gpx-dokument"
 
@@ -13464,18 +13725,6 @@ msgstr "(på rad {0}, kolumn {1})"
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr "Bilder"
-
-msgid "folder"
-msgstr "mapp"
-
-msgid "Looking for image files"
-msgstr "Söker efter bilder"
-
-msgid "No image files found."
-msgstr "Inga bilder hittades."
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13527,36 +13776,9 @@ msgstr "Hämtar relation med id {0} från ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183-filer"
-
-msgid "Coordinates imported: {0}"
-msgstr "Koordinater importerade: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "Import från NMEA misslyckades!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13644,27 +13866,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr "Filen ''{0}'' existerar inte."
-
-msgid "No data found in file {0}."
-msgstr "Inget data funnet i filen {0}."
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13712,35 +13919,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM serverfiler"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr "Ogiltigt dataset"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Ingen data hittad i lager ''{0}''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Ingen data hittad i fil ''{0}''."
-
-msgid "Open OSM file"
-msgstr "Öppna OSM-fil"
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13872,6 +14053,9 @@ msgstr "Tar kontakt med servern..."
 msgid "Downloading OSM notes..."
 msgstr "Hämtar OSM-anteckningar..."
 
+msgid "Downloading data..."
+msgstr "Hämtar data..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13930,14 +14114,8 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Hämtar data..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS-filer (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "WMS-filversion som ej stöds; funnen {0}, förväntad {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
 
 msgid "{0} bytes have been read"
 msgstr ""
@@ -14959,37 +15137,6 @@ msgstr "Öppnar URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr "Föråldrad Java-version"
-
-msgid "Update Java"
-msgstr "Uppdatera Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Du kör version {0} av Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Den här versionen är inte längre supportad av {0} sedan {1} och "
-"rekommenderas inte att användas."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM kommer snart att sluta fungera med den här versionen; vi rekommenderar "
-"starkt att du uppdaterar till Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Vill du uppdatera nu?"
-
 msgid "reserved"
 msgstr "reserverad"
 
@@ -15048,22 +15195,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr "Värdet är för långt (max {0} tecken):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Vill du klistra in dessa taggar?"
-
-msgid "Clear buffer"
-msgstr "Töm buffert"
-
-msgid "Ignore warnings"
-msgstr "Ignorera varningar"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> Tyvärr, det är omöjligt att klistra in taggar från bufferten. Den "
-"innehåller inget JOSM-objekt eller lämplig text. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15087,109 +15218,13 @@ msgid_plural "days"
 msgstr[0] "dag"
 msgstr[1] "dagar"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Du har stött på en bugg i JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Rapportera en bugg"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18918,9 +18953,6 @@ msgstr "Tavlans innehåll"
 msgid "notice"
 msgstr "anmärkning"
 
-msgid "history"
-msgstr "historiskt"
-
 msgid "nature"
 msgstr "naturfenomen"
 
@@ -19502,6 +19534,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Vårdhem"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21942,6 +21977,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22813,6 +22851,78 @@ msgstr "Kontorsområde"
 msgid "Industrial"
 msgstr "Industriområde"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Garage"
 
@@ -23508,6 +23618,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -24260,6 +24373,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -24370,15 +24486,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -32284,13 +32391,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32788,6 +32901,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32796,6 +32912,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ta.po b/i18n/po/ta.po
index 434f71f..60451fe 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-06-06 01:06+0000\n"
 "Last-Translator: Stephane <Unknown>\n"
 "Language-Team: Tamil <ta at li.org>\n"
@@ -15,7 +15,7 @@ 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-08-13 05:02+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:01+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "X-Poedit-Country: INDIA\n"
 "Language: ta\n"
@@ -57,54 +57,9 @@ msgstr "பயன்பாட்டு பின்னணி விதிமு
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "இணைப்பை திறக்க  தற்போதைய இயங்குதளத்தில் ஆதரவு இல்லை (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "மேடை தொடக்க கொக்கி  செயல்படுகிறது"
-
-msgid "Building main menu"
-msgstr "பிரதான பட்டி உருவாக்கபடுகிறது"
-
-msgid "Help"
-msgstr "உதவி"
-
-msgid "Initializing internal boundaries data"
-msgstr "உள்கட்டமைக்கப்பட்ட தரவு தயாரிப்பு ஆரம்பம்"
-
-msgid "Initializing OSM API"
-msgstr "OSM API துவக்குகிறது"
-
-msgid "Initializing internal traffic data"
-msgstr "உள் நடைபாட்டு தரவுகள் ஆரம்பம்"
-
-msgid "Initializing validator"
-msgstr "மதிப்பாய்வாளர் துவக்குகிறது"
-
-msgid "Initializing presets"
-msgstr "முன்னமைவுகளை துவக்குகிறது"
-
-msgid "Initializing map styles"
-msgstr "பாதை வரைபட பாணியம் ஆரம்பம்"
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "தவறாக அமைக்கப்பட்ட \"{0}\" என்ற முகவரியைப் புறக்கணித்தல்"
-
-msgid "Warning"
-msgstr "எச்சரிக்கை"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "தவறாக அமைக்கப்பட்ட \"{0}\" என்ற கோப்பின் முகவரியைப் புறக்கணித்தல்"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "இதைப் பற்றி"
 
@@ -182,6 +137,9 @@ msgstr "ரத்து செய்"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "எச்சரிக்கை"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "ஏற்கனவே ஏற்றுமதி செய்யப்பட்ட பள்ளி, வழி, தொடர்ப்பு ஆகியவற்றில் குறைந்த "
@@ -464,13 +422,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "OSMயில்  இருந்து பதிவிறக்கு"
-
-msgid "Download map data from the OSM server."
-msgstr "OSMயில் இருந்து வரைபட தகவளைப் பதிவிறக்கு"
+msgid "Download data"
+msgstr "தரவிறக்கம்"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -478,9 +433,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr "தரவிறக்கம்"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -548,6 +500,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr "GPX கோப்பை ஏற்றுமதி செய்யவும்"
 
+msgid "Help"
+msgstr "உதவி"
+
 msgid "History"
 msgstr "வரலாறு"
 
@@ -1062,23 +1017,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "ஒட்டு"
 
@@ -2345,36 +2283,6 @@ msgstr ""
 msgid "Select relation"
 msgstr "உறவை தேர்ந்தெடு"
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2661,86 +2569,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2758,9 +2586,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3107,57 +2932,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3247,6 +3027,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3375,6 +3161,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3389,6 +3184,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3425,10 +3223,63 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "முடிவுபெறாத"
+
+msgid "House {0}"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "புள்ளி"
+msgstr[1] "புள்ளிகள்"
+
+msgid "highway"
+msgstr "நெடுஞ்சாலை"
+
+msgid "railway"
+msgstr "ரயில்வழி"
+
+msgid "waterway"
+msgstr "நீர்வழி"
+
+msgid "landuse"
+msgstr "நிலஉபயோகம்"
+
+msgid "building"
+msgstr "கட்டிடம்"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} புள்ளி"
+msgstr[1] "{0} புள்ளிகள்"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} உறுப்பினர்"
+msgstr[1] "{0} உறுப்பினர்கள்"
+
+msgid "public transport"
+msgstr "பொது போக்குவரத்து"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "உறவு"
+msgstr[1] "உறவுகள்"
+
+msgid "Changeset {0}"
+msgstr "மாற்றுக்குழு {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
 msgstr ""
 
 msgid "<p><b>{0}</b> object hidden"
@@ -3459,21 +3310,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "புள்ளி"
-msgstr[1] "புள்ளிகள்"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "வழி"
 msgstr[1] "வழிகள்"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "உறவு"
-msgstr[1] "உறவுகள்"
-
 msgid "closedway"
 msgstr ""
 
@@ -3507,6 +3348,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3584,6 +3535,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3768,9 +3834,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3955,9 +4018,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4496,9 +4556,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "கட்டிடம்"
-
 msgid "area"
 msgstr ""
 
@@ -4613,45 +4670,14 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "முடிவுபெறாத"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "நெடுஞ்சாலை"
-
-msgid "railway"
-msgstr "ரயில்வழி"
-
-msgid "waterway"
-msgstr "நீர்வழி"
-
-msgid "landuse"
-msgstr "நிலஉபயோகம்"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} புள்ளி"
-msgstr[1] "{0} புள்ளிகள்"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} உறுப்பினர்"
-msgstr[1] "{0} உறுப்பினர்கள்"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "தவறாக அமைக்கப்பட்ட \"{0}\" என்ற முகவரியைப் புறக்கணித்தல்"
 
-msgid "public transport"
-msgstr "பொது போக்குவரத்து"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "தவறாக அமைக்கப்பட்ட \"{0}\" என்ற கோப்பின் முகவரியைப் புறக்கணித்தல்"
 
-msgid "Changeset {0}"
-msgstr "மாற்றுக்குழு {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
 
 msgid "Precondition violation"
 msgstr ""
@@ -4741,6 +4767,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "மேடை தொடக்க கொக்கி  செயல்படுகிறது"
+
+msgid "Building main menu"
+msgstr "பிரதான பட்டி உருவாக்கபடுகிறது"
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr "உள்கட்டமைக்கப்பட்ட தரவு தயாரிப்பு ஆரம்பம்"
+
+msgid "Initializing OSM API"
+msgstr "OSM API துவக்குகிறது"
+
+msgid "Initializing internal traffic data"
+msgstr "உள் நடைபாட்டு தரவுகள் ஆரம்பம்"
+
+msgid "Initializing validator"
+msgstr "மதிப்பாய்வாளர் துவக்குகிறது"
+
+msgid "Initializing presets"
+msgstr "முன்னமைவுகளை துவக்குகிறது"
+
+msgid "Initializing map styles"
+msgstr "பாதை வரைபட பாணியம் ஆரம்பம்"
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5202,6 +5288,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5896,6 +6055,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6452,9 +6625,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6565,9 +6735,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7961,49 +8128,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
 msgstr ""
 
+msgid "Start downloading"
+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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -8015,36 +8220,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
-msgstr "பதிவிறக்கத்தை துவங்கு"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8089,9 +8305,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8629,6 +8842,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9106,9 +9331,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9187,6 +9409,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9294,6 +9688,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9397,6 +9818,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9472,6 +9896,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10041,9 +10468,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10053,6 +10477,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10466,55 +10893,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11600,19 +12006,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11692,12 +12085,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12163,9 +12550,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12183,12 +12567,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12369,69 +12747,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12675,6 +12990,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12787,9 +13125,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12892,86 +13227,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12981,18 +13236,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13044,36 +13287,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13161,27 +13377,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13227,35 +13428,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13387,6 +13562,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13444,13 +13622,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14386,33 +14558,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14471,20 +14616,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14508,109 +14639,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18323,9 +18358,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18905,6 +18937,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21345,6 +21380,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22205,6 +22243,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22900,6 +23010,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23652,6 +23765,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23762,15 +23878,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31628,13 +31735,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32132,6 +32245,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32140,6 +32256,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/te.po b/i18n/po/te.po
index 49ddd4e..c1bfd50 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:02+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:02+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: te\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "సహాయం"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "హెచ్చరిక"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "గురించి"
 
@@ -180,6 +135,9 @@ msgstr "రద్దుచేయి"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "హెచ్చరిక"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "సహాయం"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/th.po b/i18n/po/th.po
index 68aaba8..7528f95 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:02+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:02+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: th\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/tr.po b/i18n/po/tr.po
index 379937b..b6ae6ac 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +17,7 @@ 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-08-13 05:03+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:02+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -57,56 +57,9 @@ msgstr "Arkaplanın Kullanım Şartları"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "Link açma işlemi bu platformda desteklenmiyor  (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Platform başlangıç kancası yürütülüyor."
-
-msgid "Building main menu"
-msgstr "Ana menü oluşturuluyor"
-
-msgid "Help"
-msgstr "Yardım"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "OSM API başlatılıyor"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Onaylayıcı yükleniyor"
-
-msgid "Initializing presets"
-msgstr "Ön ayarlar yükleniyor"
-
-msgid "Initializing map styles"
-msgstr "Map biçimleri yükleniyor"
-
-msgid "Loading imagery preferences"
-msgstr "Görüntü tercihleri yükleniyor"
-
-msgid "Updating user interface"
-msgstr "Kullanıcı arayüzü güncelleniyor"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Yanlış linkler atlanıldı: URL: \"{0}\""
-
-msgid "Warning"
-msgstr "Uyarı"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "hatalı dosya atlandı URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"\"downloadgps\" parametresi dosya isimleri ve dosya URLleri kabul "
-"etmemektedir."
-
 msgid "About"
 msgstr "Hakkında"
 
@@ -184,6 +137,9 @@ msgstr "İptal"
 msgid "Click to abort launching external browsers"
 msgstr "Harici tarayıcıları çalıştırmayı sona erdirmek için tıklayınız."
 
+msgid "Warning"
+msgstr "Uyarı"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Lütfen en az bir yüklenmiş nokta, yön veya ilişki seçiniz."
 
@@ -466,13 +422,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr "OSM sitesinden indir..."
-
-msgid "Download map data from the OSM server."
-msgstr "Harita verisi OSM sunucusundan indir."
+msgid "Download data"
+msgstr "Veriyi indir"
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -482,9 +435,6 @@ msgstr ""
 "<html>Bu hareket {0} ayrı indirme<br> isteği gerektirir. <br>Devam etmek "
 "istiyor musunuz?</html>"
 
-msgid "Download data"
-msgstr "Veriyi indir"
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -551,6 +501,9 @@ msgstr "Dışa vermek için bir şey yok. Önce veri al, salak!"
 msgid "Export GPX file"
 msgstr "GPX dosyası olarak kaydet..."
 
+msgid "Help"
+msgstr "Yardım"
+
 msgid "History"
 msgstr "Geçmiş"
 
@@ -1063,23 +1016,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Dik açıya yakın ve neredeyse doğrusal olan açıılar içeren yollar seçin."
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Yapıştır"
 
@@ -2358,36 +2294,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr "<veya>"
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr "<anahtar>"
-
-msgid "<question mark>"
-msgstr "<soru işareti>"
-
-msgid "<end-of-file>"
-msgstr "<dosyanın sonu>"
-
 msgid "Search..."
 msgstr "Ara..."
 
@@ -2674,89 +2580,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"İfadede \"{0}\" şu noktada hata var {1}, tam hata:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2774,9 +2597,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3124,57 +2944,12 @@ msgstr "İlişkide rolü şunu gösteriyor"
 msgid "Automatic tag correction"
 msgstr "Otomatic etiket düzetmesi"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr "Dosyalar geri yükleniyor"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "enlem değeri ''{0}'' geçerli değil"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "boylam değeri ''{0}'' geçerli değil"
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3264,6 +3039,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3392,6 +3173,15 @@ msgstr ""
 msgid "Note"
 msgstr "Not"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3406,6 +3196,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3442,8 +3235,61 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
-msgstr ""
+msgid "incomplete"
+msgstr "eksik"
+
+msgid "House {0}"
+msgstr ""
+
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "kavşak"
+msgstr[1] "kavşaklar"
+
+msgid "highway"
+msgstr "Karayolu"
+
+msgid "railway"
+msgstr "demiryolu"
+
+msgid "waterway"
+msgstr "suyolu"
+
+msgid "landuse"
+msgstr "arazi kullanımı"
+
+msgid "building"
+msgstr "yapılar"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} Kavşak"
+msgstr[1] "{0} Kavşaklar"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} üye"
+msgstr[1] "{0} üyeler"
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "ilişki"
+msgstr[1] "ilişkiler"
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
 
 msgid "Error in filter"
 msgstr ""
@@ -3476,21 +3322,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "kavşak"
-msgstr[1] "kavşaklar"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "yol"
 msgstr[1] "yollar"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "ilişki"
-msgstr[1] "ilişkiler"
-
 msgid "closedway"
 msgstr ""
 
@@ -3524,6 +3360,119 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr "<veya>"
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr "<anahtar>"
+
+msgid "<question mark>"
+msgstr "<soru işareti>"
+
+msgid "<end-of-file>"
+msgstr "<dosyanın sonu>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"İfadede \"{0}\" şu noktada hata var {1}, tam hata:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3601,6 +3550,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr "Adresler"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "Din"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "İlişkiler"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3787,9 +3851,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Adresler"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3974,9 +4035,6 @@ msgstr "Çift yol noktaları"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Yolların ardışık özdeş noktalar içermesini kontrol et."
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4522,9 +4580,6 @@ msgstr "suyolu tipi {0}"
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr "yapılar"
-
 msgid "area"
 msgstr "alan"
 
@@ -4643,45 +4698,16 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid "incomplete"
-msgstr "eksik"
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr "Karayolu"
-
-msgid "railway"
-msgstr "demiryolu"
-
-msgid "waterway"
-msgstr "suyolu"
-
-msgid "landuse"
-msgstr "arazi kullanımı"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} Kavşak"
-msgstr[1] "{0} Kavşaklar"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} üye"
-msgstr[1] "{0} üyeler"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Yanlış linkler atlanıldı: URL: \"{0}\""
 
-msgid "public transport"
-msgstr ""
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "hatalı dosya atlandı URL: \"{0}\""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
+"\"downloadgps\" parametresi dosya isimleri ve dosya URLleri kabul "
+"etmemektedir."
 
 msgid "Precondition violation"
 msgstr ""
@@ -4770,6 +4796,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "Platform başlangıç kancası yürütülüyor."
+
+msgid "Building main menu"
+msgstr "Ana menü oluşturuluyor"
+
+msgid "Updating user interface"
+msgstr "Kullanıcı arayüzü güncelleniyor"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "OSM API başlatılıyor"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Onaylayıcı yükleniyor"
+
+msgid "Initializing presets"
+msgstr "Ön ayarlar yükleniyor"
+
+msgid "Initializing map styles"
+msgstr "Map biçimleri yükleniyor"
+
+msgid "Loading imagery preferences"
+msgstr "Görüntü tercihleri yükleniyor"
+
 msgid "usage"
 msgstr "kullanım"
 
@@ -5231,6 +5317,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "hatayı Bildir"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5924,6 +6083,20 @@ msgstr ""
 "tamamlanmamış nesneler silinecek.Veriyi tamamlanmamış nesneler olmadan "
 "yapıştırmak istermisiniz?"
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6480,9 +6653,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6593,9 +6763,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "İlişkiler"
-
 msgid "Open a list of all relations."
 msgstr "İlişkilerin listesini göster."
 
@@ -7990,24 +8157,6 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
-msgstr "Veri kaynakları ve türleri"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap verisi"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr ""
-
-msgid "Raw GPS data"
-msgstr "Ham GPS verisi"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr ""
-
-msgid "Select to download notes in the selected download area."
-msgstr ""
-
 msgid "Download as new layer"
 msgstr "Yeni tabaka olarak indir"
 
@@ -8035,6 +8184,62 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr ""
 
+msgid "Click to close the dialog and to abort downloading"
+msgstr ""
+
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr "Yönlendirenleri indir (üst ilişkiler)"
+
+msgid "Download object"
+msgstr "Nesneyi indir"
+
+msgid "Start downloading"
+msgstr "İndirmeyi başlat"
+
+msgid ""
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
+msgstr ""
+
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr ""
+
+msgid "Download referrers (parent relations and ways)"
+msgstr "Yönlendirenleri indir (üst ilişkiler ve yollar)"
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Veri kaynakları ve türleri"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap verisi"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr "Ham GPS verisi"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
+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 ""
+
 msgid "No area selected yet"
 msgstr ""
 
@@ -8044,37 +8249,48 @@ msgstr "Seçilen alan çok büyük; server iptal edecektir"
 msgid "Download area ok, size probably acceptable to server"
 msgstr "Seçilen alan uygun, server kabul edecektir"
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
-msgstr "Yönlendirenleri indir (üst ilişkiler)"
+msgid "Your saved queries:"
+msgstr ""
 
-msgid "Download object"
-msgstr "Nesneyi indir"
+msgid "Show/hide Overpass snippet list"
+msgstr ""
 
-msgid "Start downloading"
-msgstr "İndirmeyi başlat"
+msgid "Overpass query:"
+msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Edit selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "Yönlendirenleri indir (üst ilişkiler ve yollar)"
+msgid "history"
+msgstr "tarih"
 
 msgid "Please select an item first"
 msgstr ""
@@ -8118,9 +8334,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8658,6 +8871,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9135,9 +9360,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9216,6 +9438,182 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr "Tüm dosya biçimleri"
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Not: OSM lisansı ile GPL lisansı birbirne uygun değil. GPL lisanslı izleri "
+"yüklemek istermisiniz?"
+
+msgid "GPS track description"
+msgstr "gps iz tanımı"
+
+msgid "Add author information"
+msgstr "Yazar bilgisi ekle"
+
+msgid "Real name"
+msgstr "gerçek İsim"
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Öntanımlı"
+
+msgid "Copyright year"
+msgstr "Copyright yılı"
+
+msgid "Keywords"
+msgstr "Anahtar kelimeler"
+
+msgid "Export options"
+msgstr "Dışarı verme opsiyonları"
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Dışarı vermede hata {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Ön tanımlı lisans seçiniz"
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr "NMEA içeri alınmasında hata!"
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Desteklenmeyen WMS versiyonu; bulunan {0}, istenen {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9323,6 +9721,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr "Dosyalar geri yükleniyor"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Renkleri Ayarla"
 
@@ -9426,6 +9851,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "indirilen alanın dışında"
 
@@ -9499,6 +9927,9 @@ msgstr "Onaylama Hataları"
 msgid "No validation errors"
 msgstr "Onaylama hatası yok"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "WMS İmi Belirle"
 
@@ -10082,9 +10513,6 @@ msgstr "(URL : "
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10094,6 +10522,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10520,46 +10951,25 @@ msgstr ""
 msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr "Ayarların aktif olamsı için programı açıp/kapatmalısınız."
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
-msgstr ""
-
-msgid "Icon paths:"
-msgstr ""
-
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
-msgstr ""
+msgid "You have to restart JOSM for some settings to take effect."
+msgstr "Ayarların aktif olamsı için programı açıp/kapatmalısınız."
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11652,19 +12062,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr "Harita Ayarları"
 
@@ -11744,12 +12141,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12215,9 +12606,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12235,12 +12623,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12422,69 +12804,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "Din"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12728,6 +13047,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12840,9 +13182,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr "Tüm dosya biçimleri"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "{0} ve {1} arası bilgiler indiriliyor"
 
@@ -12945,90 +13284,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Not: OSM lisansı ile GPL lisansı birbirne uygun değil. GPL lisanslı izleri "
-"yüklemek istermisiniz?"
-
-msgid "GPS track description"
-msgstr "gps iz tanımı"
-
-msgid "Add author information"
-msgstr "Yazar bilgisi ekle"
-
-msgid "Real name"
-msgstr "gerçek İsim"
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Öntanımlı"
-
-msgid "Copyright year"
-msgstr "Copyright yılı"
-
-msgid "Keywords"
-msgstr "Anahtar kelimeler"
-
-msgid "Export options"
-msgstr "Dışarı verme opsiyonları"
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Dışarı vermede hata {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Ön tanımlı lisans seçiniz"
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Ayrıştırma hatası: gpx dökümanı için geçersiz yapı."
 
@@ -13038,18 +13293,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13101,36 +13344,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr "NMEA içeri alınmasında hata!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Boş göstergeç(Pointer) hatası, bazı etiketler eksik olmalı."
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13218,27 +13434,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13284,35 +13485,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13444,6 +13619,9 @@ msgstr "Server’e bağlanıyor..."
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13503,15 +13681,9 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Desteklenmeyen WMS versiyonu; bulunan {0}, istenen {1}"
-
 msgid "{0} bytes have been read"
 msgstr ""
 
@@ -14448,33 +14620,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14533,20 +14678,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14570,109 +14701,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "hatayı Bildir"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18389,9 +18424,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr "tarih"
-
 msgid "nature"
 msgstr "doğa"
 
@@ -18971,6 +19003,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21411,6 +21446,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22271,6 +22309,78 @@ msgstr "Ticari"
 msgid "Industrial"
 msgstr "Endüstriyel"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22966,6 +23076,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23718,6 +23831,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23828,15 +23944,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31702,13 +31809,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32206,6 +32319,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32214,6 +32330,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ug.po b/i18n/po/ug.po
index 03f7ec6..6e29cbd 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:03+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:03+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: \n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -180,6 +135,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/uk.po b/i18n/po/uk.po
index 88cd48b..7ed2589 100644
--- a/i18n/po/uk.po
+++ b/i18n/po/uk.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
-"PO-Revision-Date: 2017-08-02 12:52+0000\n"
-"Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
+"PO-Revision-Date: 2017-08-28 20:31+0000\n"
+"Last-Translator: andygol <Unknown>\n"
 "Language-Team: Ukrainian <uk 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=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-08-13 05:04+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:03+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: uk\n"
 
@@ -57,55 +57,9 @@ msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 "Відкриття посилання, що не підтримується поточною платформою (''{0}'')"
 
-msgid "Executing platform startup hook"
-msgstr "Виконання стартових процедур"
-
-msgid "Building main menu"
-msgstr "Створення основного меню"
-
-msgid "Help"
-msgstr "Довідка"
-
-msgid "Initializing internal boundaries data"
-msgstr "Ініціалізація даних про внутрішні межі"
-
-msgid "Initializing OSM API"
-msgstr "Ініціалізація OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "Ініціалізація даних про внутрішні правила дорожнього руху"
-
-msgid "Initializing validator"
-msgstr "Ініціалізація валідатора"
-
-msgid "Initializing presets"
-msgstr "Ініціалізація заготовок"
-
-msgid "Initializing map styles"
-msgstr "Ініціалізація стилів мапи"
-
-msgid "Loading imagery preferences"
-msgstr "Завантаження налаштувань фону"
-
-msgid "Updating user interface"
-msgstr "Оновлення інтерфейсу користувача"
-
 msgid "Failed to save default preferences."
 msgstr "Неможливо зберегти типові наоаштування."
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Ігнорування хибної адреси: \"{0}\""
-
-msgid "Warning"
-msgstr "Попередження"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Ігнорування хибної адреси файлу: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Параметр \"downloadgps\" не приймає імена файлів або URL-адреси файлів"
-
 msgid "About"
 msgstr "Про програму…"
 
@@ -194,6 +148,9 @@ msgstr "Скасувати"
 msgid "Click to abort launching external browsers"
 msgstr "Натисніть, щоб скасувати запуск зовнішніх оглядачів"
 
+msgid "Warning"
+msgstr "Попередження"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Будь ласка, виберіть принаймні одну вже надіслану на сервер точку, лінію або "
@@ -486,14 +443,11 @@ msgstr ""
 "* Одну лінію без самоперетину з не більше ніж двома її точками;\n"
 "* Три точки."
 
-msgid "Download from OSM..."
-msgstr "Завантажити з OSM…"
-
-msgid "Download map data from the OSM server."
-msgstr "Завантажити дані мапи з сервера OSM."
+msgid "Download data"
+msgstr "Отримати дані"
 
-msgid "Please select a download area first."
-msgstr "Будь ласка, виберіть спочатку ділянку для завантаження"
+msgid "Download map data from a server of your choice"
+msgstr "Завантажити дані мапи з обраного сервера"
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -502,9 +456,6 @@ msgstr ""
 "<html>Ця дія потребує {0} окремих<br>запитів на завантаження. "
 "Продовжити?</html>"
 
-msgid "Download data"
-msgstr "Отримати дані"
-
 msgid "Download notes in current view"
 msgstr "Завантажити нотатки для поточного виду"
 
@@ -571,6 +522,9 @@ msgstr "Нічого експортувати. Спочатку отримайт
 msgid "Export GPX file"
 msgstr "Експортувати GPX-файл"
 
+msgid "Help"
+msgstr "Довідка"
+
 msgid "History"
 msgstr "Історія"
 
@@ -1141,23 +1095,6 @@ msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 "Будь ласка, виберіть лінії з кутами, близькими до 90 або 180 градусів."
 
-msgid "Download from Overpass API ..."
-msgstr "Завантажити з Overpass API…"
-
-msgid "Download map data from Overpass API server."
-msgstr "Завантажити картографічні дані з сервера Overpass API."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Вставити"
 
@@ -2552,36 +2489,6 @@ msgstr "Виділити (додати) зв’язок"
 msgid "Select relation"
 msgstr "Вибрати зв’язок"
 
-msgid "<not>"
-msgstr "<not>"
-
-msgid "<or>"
-msgstr "<or>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<left parent>"
-
-msgid "<right parent>"
-msgstr "<right parent>"
-
-msgid "<colon>"
-msgstr "<colon>"
-
-msgid "<equals>"
-msgstr "<equals>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<question mark>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Пошук…"
 
@@ -2879,95 +2786,6 @@ msgstr[0] "Пошук серед {0} об’єкта"
 msgstr[1] "Пошук серед {0} об’єктів"
 msgstr[2] "Пошук серед {0} об’єктів"
 
-msgctxt "search"
-msgid "CS"
-msgstr "з урахуванням регістру"
-
-msgctxt "search"
-msgid "CI"
-msgstr "без урахування регістру"
-
-msgctxt "search"
-msgid "RX"
-msgstr "пошук за виразом"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "Всі"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Помилка у виразі \"{0}\" у позиції {1}, повний текст помилки:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Помилка розбору регулярного виразу \"{0}\":\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "Неможливо розібрати час ''{0}''"
-
-msgid "Expecting {0} after {1}"
-msgstr "Очікується {0} після {1}"
-
-msgid "Range of primitive ids expected"
-msgstr "Очікується діапазон id примітивів"
-
-msgid "Range of changeset ids expected"
-msgstr "Очікується діапазон id наборів змін"
-
-msgid "Range of versions expected"
-msgstr "Очікується діапазон id версій"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Ключ не може бути порожнім, коли використовується оператор з теґом. Приклад "
-"використання: ключ=значення"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Невідомий тип елементу: {0}. Дозволені значення: node, way або relation"
-
-msgid "Positive integer expected"
-msgstr "Очікується позитивне ціле число"
-
-msgid "Range of numbers expected"
-msgstr "Очікується діапазон чисел"
-
-msgid "Unknown preset name: "
-msgstr "Невідома назва заготовки: "
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "Непередбачений елемент. Очікувалось {0}, знайдено {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "Збій аналізу MapCSS-селектора"
-
-msgid "Unexpected token: {0}"
-msgstr "Непередбачена конструкція: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Відсутній параметр для OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Відсутній параметр для XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Відсутній параметр для NOT"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Автоматичне усікання значення теґу ''{0}'' у вилученого об’єкта {1}"
 
@@ -2988,9 +2806,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Порушення можливостей API"
 
-msgid "Cyclic dependency between relations:"
-msgstr "Циклічні залежності між зв’язками:"
-
 msgid "Removed obsolete tags"
 msgstr "Вилучені застарілі теґи"
 
@@ -3394,62 +3209,12 @@ msgstr "Ролі в зв’язках, що належать до"
 msgid "Automatic tag correction"
 msgstr "Автоматичне виправлення теґів"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Неможливо створити теку {0}, автозбереження буде відключене"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Неможливо створити файл {0}, буде використане інше ім’я для файлу"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-"Помилка вводу-виводу під час створення файлу, автозбереження буде пропущене: "
-"{0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Неможливо вилучити старий резервний файл {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Вашу роботу було збережено автоматично"
-
-msgid "Restoring files"
-msgstr "Відновлення файлів"
-
-msgid "Unable to delete backup file {0}"
-msgstr "Невдалось створити файл резервної копії {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "Невдалось вилучити PID-файл {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "Невдалось вилучити заархівований файл резервної копії {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "Неправильне значення широти — ''{0}''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "Неправильне значення довготи — ''{0}''"
 
-msgid "Question"
-msgstr "Питання"
-
-msgid "Message"
-msgstr "Повідомлення"
-
-msgid "Enter text"
-msgstr "Введіть текст"
-
-msgid "Installing plugins"
-msgstr "Встановлення втулків"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<html>Файл налаштувань намагається додати налаштування у <b>{0}</b>,<br/> "
-"але його типове значення наразі не відоме.<br/> Будь ласка, активуйте "
-"відповідну функцію вручну і повторіть спробу імпорту."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Не вдалося створити відсутню теку для кешу: {0}"
 
@@ -3559,6 +3324,15 @@ msgstr ""
 "Параметр налаштувань {0} був вилучений, оскільки він більше не "
 "використовується."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<html>Файл налаштувань намагається додати налаштування у <b>{0}</b>,<br/> "
+"але його типове значення наразі не відоме.<br/> Будь ласка, активуйте "
+"відповідну функцію вручну і повторіть спробу імпорту."
+
 msgid "Metric"
 msgstr "Метрична"
 
@@ -3696,6 +3470,15 @@ msgstr ""
 msgid "Note"
 msgstr "Нотатка"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Не вдалось отримати Мітку доступу OAuth з менеджера облікових даних"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "Поточний менеджер облікових записів має тип ''{0}''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "Не вдалось зберегти Мітку доступу OAuth в менеджері облікових даних"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "Очікується ідентифікатор >0. Маємо {0}."
 
@@ -3712,6 +3495,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Елемент з ідентифікатором =0 не може бути невидимим."
 
+msgid "Cyclic dependency between relations:"
+msgstr "Циклічні залежності між зв’язками:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3755,6 +3541,63 @@ msgstr "Злиття даних …"
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Перевірку ''{0}'' завершено за {1}"
 
+msgid "incomplete"
+msgstr "неповний елемент"
+
+msgid "House {0}"
+msgstr "Будинок {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Будинок №{0} на {1}"
+
+msgid "House number {0}"
+msgstr "Номер будинку {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "точка"
+msgstr[1] "точки"
+msgstr[2] "точок"
+
+msgid "highway"
+msgstr "дорога"
+
+msgid "railway"
+msgstr "залізниця"
+
+msgid "waterway"
+msgstr "водний шлях"
+
+msgid "landuse"
+msgstr "землекористування"
+
+msgid "building"
+msgstr "будівля"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} точка"
+msgstr[1] "{0} точки"
+msgstr[2] "{0} точок"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} член"
+msgstr[1] "{0} члени"
+msgstr[2] "{0} членів"
+
+msgid "public transport"
+msgstr "громадський транспорт"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "зв’язок"
+msgstr[1] "зв’язки"
+msgstr[2] "зв’язків"
+
+msgid "Changeset {0}"
+msgstr "Набір змін {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>Помилка фільтру <code>{0}</code>:<br>{1}"
 
@@ -3793,24 +3636,12 @@ msgstr ""
 "Неможливе об’єднання елементів із різними ідентифікаторами. Цей "
 "ідентифікатор — {0}, інший — {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "точка"
-msgstr[1] "точки"
-msgstr[2] "точок"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "лінія"
 msgstr[1] "лінії"
 msgstr[2] "ліній"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "зв’язок"
-msgstr[1] "зв’язки"
-msgstr[2] "зв’язків"
-
 msgid "closedway"
 msgstr "замкнена лінія"
 
@@ -3846,6 +3677,125 @@ msgstr "Неможливо порівняти елементи з ідентиф
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Параментр {0} не в діапазоні 0..{1}, його значення {2}"
 
+msgid "<not>"
+msgstr "<not>"
+
+msgid "<or>"
+msgstr "<or>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<left parent>"
+
+msgid "<right parent>"
+msgstr "<right parent>"
+
+msgid "<colon>"
+msgstr "<colon>"
+
+msgid "<equals>"
+msgstr "<equals>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<question mark>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Помилка у виразі \"{0}\" у позиції {1}, повний текст помилки:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Помилка розбору регулярного виразу \"{0}\":\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "Неможливо розібрати час ''{0}''"
+
+msgid "Expecting {0} after {1}"
+msgstr "Очікується {0} після {1}"
+
+msgid "Range of primitive ids expected"
+msgstr "Очікується діапазон id примітивів"
+
+msgid "Range of changeset ids expected"
+msgstr "Очікується діапазон id наборів змін"
+
+msgid "Range of versions expected"
+msgstr "Очікується діапазон id версій"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Ключ не може бути порожнім, коли використовується оператор з теґом. Приклад "
+"використання: ключ=значення"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Невідомий тип елементу: {0}. Дозволені значення: node, way або relation"
+
+msgid "Positive integer expected"
+msgstr "Очікується позитивне ціле число"
+
+msgid "Range of numbers expected"
+msgstr "Очікується діапазон чисел"
+
+msgid "Unknown preset name: "
+msgstr "Невідома назва заготовки: "
+
+msgid "Failed to parse MapCSS selector"
+msgstr "Збій аналізу MapCSS-селектора"
+
+msgid "Unexpected token: {0}"
+msgstr "Непередбачена конструкція: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Відсутній параметр для OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Відсутній параметр для XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Відсутній параметр для NOT"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "Непередбачений елемент. Очікувалось {0}, знайдено {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "з урахуванням регістру"
+
+msgctxt "search"
+msgid "CI"
+msgstr "без урахування регістру"
+
+msgctxt "search"
+msgid "RX"
+msgstr "пошук за виразом"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "Всі"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Не вдалось завантажити клас рендерінгу мапи ''{0}''. Клас не знайдено."
@@ -3930,6 +3880,123 @@ msgstr "Очікувався елемент ''{0}'', але отриманий '
 msgid "value expected"
 msgstr "очікувалось значення"
 
+msgid "Short Description:"
+msgstr "Короткий опис:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Автор:"
+
+msgid "Webpage:"
+msgstr "Веб-сторінка:"
+
+msgid "Description:"
+msgstr "Опис:"
+
+msgid "Version:"
+msgstr "Версія:"
+
+msgid "Minimum JOSM Version:"
+msgstr "Мінімальна версія JOSM:"
+
+msgid "by {0}"
+msgstr "{0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM типово (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Внутрішній візуальний стиль, на основі якого функціонуватимуть нові, які "
+"можна перемикати в режимі реального часу"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "основний стиль Potlatch 2"
+
+msgid "Internal Preset"
+msgstr "Внутрішній шаблон"
+
+msgid "The default preset for JOSM"
+msgstr "Типові шаблони JOSM"
+
+msgid "Addresses"
+msgstr "Адреси"
+
+msgid "Checks for errors on addresses"
+msgstr "Перевірка адрес на помилки"
+
+msgid "Tag combinations"
+msgstr "Комбінації теґів"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Перевірка на відсутність або сумнівні комбінації теґів"
+
+msgid "Deprecated features"
+msgstr "Застарілі теґи"
+
+msgid "Checks for deprecated features"
+msgstr "Перевірка на наявність застарілих теґів"
+
+msgid "Geometry"
+msgstr "Геометрія"
+
+msgid "Checks for geometry errors"
+msgstr "Перевірка помилок геометрії"
+
+msgid "Highways"
+msgstr "Дороги"
+
+msgid "Checks for errors on highways"
+msgstr "Перевірка помилок на шляхах"
+
+msgid "Multiple values"
+msgstr "Багатозначні теґи"
+
+msgid "Checks for wrong multiple values"
+msgstr "Перевірка на помилки багатозначних теґів"
+
+msgid "Numeric values"
+msgstr "Числові значення"
+
+msgid "Checks for wrong numeric values"
+msgstr "Перевіряє неправильних числових значень"
+
+msgid "Religion"
+msgstr "Релігія"
+
+msgid "Checks for errors on religious objects"
+msgstr "Перевірка на помилки культових (релігійних) об’єктів"
+
+msgid "Relations"
+msgstr "Зв’язки"
+
+msgid "Checks for errors on relations"
+msgstr "Перевірка помилок в зв’язках"
+
+msgid "Territories"
+msgstr "Території"
+
+msgid "Checks for territories-specific features"
+msgstr "Перевірки властивостей притаманних територіям"
+
+msgid "Unnecessary tags"
+msgstr "Непотрібні теґи"
+
+msgid "Checks for unnecessary tags"
+msgstr "Перевірка на наявність непотрібних теґів"
+
+msgid "Wikipedia"
+msgstr "Вікіпедія"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Перевірка помилкових теґів wikipedia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "Проекції UTM (''+proj=utm'') потрібен параметр ''+zone=…''."
 
@@ -4120,9 +4187,6 @@ msgstr "URL містить неприпустимий фрагмент: {0}"
 msgid "URL validator"
 msgstr "Первірка посилань URL"
 
-msgid "Addresses"
-msgstr "Адреси"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Перевіряє помилки в адресах і зв’язках associatedStreet."
 
@@ -4316,9 +4380,6 @@ msgstr "Подвійні точки ліній"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Перевіряє лінії на наявність однакових послідовних точок."
 
-msgid "Highways"
-msgstr "Дороги"
-
 msgid "Performs semantic checks on highways."
 msgstr "Виконує семантичний аналіз доріг."
 
@@ -4885,9 +4946,6 @@ msgstr "тип водного шляху {0}"
 msgid "boundary type {0}"
 msgstr "тип кордону {0}"
 
-msgid "building"
-msgstr "будівля"
-
 msgid "area"
 msgstr "полігон"
 
@@ -5007,47 +5065,15 @@ msgstr "Не показувати знов (ця сесія)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показувати знову (запам’ятати вибір)"
 
-msgid "incomplete"
-msgstr "неповний елемент"
-
-msgid "House {0}"
-msgstr "Будинок {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Будинок №{0} на {1}"
-
-msgid "House number {0}"
-msgstr "Номер будинку {0}"
-
-msgid "highway"
-msgstr "дорога"
-
-msgid "railway"
-msgstr "залізниця"
-
-msgid "waterway"
-msgstr "водний шлях"
-
-msgid "landuse"
-msgstr "землекористування"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} точка"
-msgstr[1] "{0} точки"
-msgstr[2] "{0} точок"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} член"
-msgstr[1] "{0} члени"
-msgstr[2] "{0} членів"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Ігнорування хибної адреси: \"{0}\""
 
-msgid "public transport"
-msgstr "громадський транспорт"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Ігнорування хибної адреси файлу: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "Набір змін {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Параметр \"downloadgps\" не приймає імена файлів або URL-адреси файлів"
 
 msgid "Precondition violation"
 msgstr "Порушення передумов"
@@ -5139,6 +5165,72 @@ msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 "Очікувалось непорожнє значення для параметру ''{0}'', отримано ''{1}''"
 
+msgid "Outdated Java version"
+msgstr "Застаріла версія Java"
+
+msgid "Update Java"
+msgstr "Оновити Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Ви використовуєте Java версії {0}."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Ця версія більше не підтримується {0}, починаючи з {1}, і її використання не "
+"рекомендується."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM дуже скоро перестане працювати з цією версією; рекомендуємо оновити "
+"Java до версії {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+"Ви можете зіткнутись з неочікуваними помилками Java; ми наполегливо радимо "
+"вам оновити Java до версії {0}."
+
+msgid "Would you like to update now ?"
+msgstr "Хочете оновити зараз?"
+
+msgid "Starting file watcher"
+msgstr "Запуск переглядача файлів"
+
+msgid "Executing platform startup hook"
+msgstr "Виконання стартових процедур"
+
+msgid "Building main menu"
+msgstr "Створення основного меню"
+
+msgid "Updating user interface"
+msgstr "Оновлення інтерфейсу користувача"
+
+msgid "Initializing internal boundaries data"
+msgstr "Ініціалізація даних про внутрішні межі"
+
+msgid "Initializing OSM API"
+msgstr "Ініціалізація OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr "Ініціалізація даних про внутрішні правила дорожнього руху"
+
+msgid "Initializing validator"
+msgstr "Ініціалізація валідатора"
+
+msgid "Initializing presets"
+msgstr "Ініціалізація заготовок"
+
+msgid "Initializing map styles"
+msgstr "Ініціалізація стилів мапи"
+
+msgid "Loading imagery preferences"
+msgstr "Завантаження налаштувань фону"
+
 msgid "usage"
 msgstr "використання"
 
@@ -5649,6 +5741,89 @@ msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 "Поточне значення не є правильним індексом для цього рівня масштабування"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Ви зіткнулися з помилкою в JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+"Виникла неочікувана ситуація.\n"
+"Це завжди помилки програмування. Якщо у вас свіжа версія JOSM, будь ласка, "
+"надішліть звіт про помилку."
+
+msgid "Debug information"
+msgstr "Інформація для відлагодження"
+
+msgid "Manually report at:"
+msgstr "Надіслати звіт вручну на:"
+
+msgid "Is JOSM up to date?"
+msgstr "Чи у вас свіжа версія JOSM?"
+
+msgid "Send bug report"
+msgstr "Надіслати звіт про помилку"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+"Якщо у вас остання версія JOSM та втулків, надішліть, будь ласка, звіт про "
+"помилку до нашої системи відстежування помилок.\n"
+"Деяку інформацію про помилку вже було зібрано для вас. Додайте потрібні дані "
+"про те, як відтворити ситуацію, що призвела до виникнення помилки, додайте "
+"якомога більше деталей."
+
+msgid "Report Bug"
+msgstr "Повідомити про помилку"
+
+msgid "Suppress this error for this session."
+msgstr "Не показувати повідомлення про цю помилку для цього сеансу."
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Не показувати наступні повідомлення про помилки для цього сеансу."
+
+msgid "Ignore this error."
+msgstr "Ігнорувати цю помилку."
+
+msgid "Include the system status report."
+msgstr "Додати звіт про стан системи."
+
+msgid "Include information about the data you were working on."
+msgstr "Додати інформацію про дані, з якими ви працювали."
+
+msgid "Include all stack traces."
+msgstr "Додати всі трасування стеку."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша поточна версія JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM виконує пошук оновлень…"
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Під час перевірки актуальності поточної версії JOSM виникла помилка."
+
+msgid "JOSM is up to date."
+msgstr "Ваша версія JOSM є найновішою."
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM застарів. Поточна версія – {0}. Спробуйте оновити JOSM."
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+"Перед надсиланням звіту про помилку переконайтесь, що ви оновили JOSM до "
+"найновішої версії:"
+
+msgid "Update JOSM"
+msgstr "Оновити JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Тло конфлікту: немає конфлікту"
 
@@ -6431,6 +6606,22 @@ msgstr ""
 "Скопійовані дані містять неповні об’єкти. Під час вставки вони будуть "
 "знехтувані. Бажаєте продовжити вставку без неповних об’єктів?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Ви бажаєте вставити ці теґи?"
+
+msgid "Clear buffer"
+msgstr "Очистити буфер"
+
+msgid "Ignore warnings"
+msgstr "Ігнорувати попередження"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<html><p> На жаль, неможливо вставити теґи з буферу обміну. Він не містить "
+"об’єктів JOSM чи відповідного тексту. </p></html>"
+
 msgid "For selected objects only"
 msgstr "Тільки для виділених об’єктів"
 
@@ -7034,9 +7225,6 @@ msgstr "Джерело"
 msgid "Title:"
 msgstr "Назва:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Вбудований стиль, внутрішній шлях:"
 
@@ -7153,9 +7341,6 @@ msgstr ""
 "Зазначено помилковий ID переліку\n"
 "Продовження неможливе."
 
-msgid "Relations"
-msgstr "Зв’язки"
-
 msgid "Open a list of all relations."
 msgstr "Відкрити список усіх зв’язків."
 
@@ -8665,24 +8850,6 @@ msgstr "Значення широти має бути в межах [-90,90]."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Значення довготи має бути в межах [-180,180]."
 
-msgid "Data Sources and Types:"
-msgstr "Джерела і типи даних:"
-
-msgid "OpenStreetMap data"
-msgstr "Дані OpenStreetMap"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Позначте, щоб завантажити з сервера OSM дані для виділеної ділянки"
-
-msgid "Raw GPS data"
-msgstr "Дані GPS"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Позначте, щоб завантажити з сервера GPS-треки для виділеної ділянки"
-
-msgid "Select to download notes in the selected download area."
-msgstr "Позначте для завантаження нотаток з виділеної ділянки."
-
 msgid "Download as new layer"
 msgstr "Завантажити як новий шар"
 
@@ -8719,30 +8886,12 @@ msgstr ""
 "праву кнопку миші, для масштабування скористайтесь коліщатком миші чи "
 "клавішами +/-."
 
-msgid "No area selected yet"
-msgstr "Ділянку досі не вибрано"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Ділянка для завантаження надто велика; можлива відмова від сервера"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Розмір ділянки для завантаження прийнятний для сервера"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Натисніть, щоб закрити діалог та припинити завантаження"
 
 msgid "Click to download the currently selected area"
 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 "Завантаження пов’язаних членів (батьківські зв’язки)"
 
@@ -8765,51 +8914,135 @@ msgstr "Виберіть, якщо члени зв’язку повинні т
 msgid "Download referrers (parent relations and ways)"
 msgstr "Завантаження пов’язаних членів (батьківські зв’язки та лінії)"
 
-msgid "Please select an item first"
+msgid "Download from OSM"
+msgstr "Завантажити з OSM"
+
+msgid "Data Sources and Types:"
+msgstr "Джерела і типи даних:"
+
+msgid "OpenStreetMap data"
+msgstr "Дані OpenStreetMap"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Позначте, щоб завантажити з сервера OSM дані для виділеної ділянки"
+
+msgid "Raw GPS data"
+msgstr "Дані GPS"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Позначте, щоб завантажити з сервера GPS-треки для виділеної ділянки"
+
+msgid "Select to download notes in the selected download area."
+msgstr "Позначте для завантаження нотаток з виділеної ділянки."
+
+msgid "Please select a download area first."
+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 "Edit item"
+msgid "No area selected yet"
+msgstr "Ділянку досі не вибрано"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Ділянка для завантаження надто велика; можлива відмова від сервера"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Розмір ділянки для завантаження прийнятний для сервера"
+
+msgid "Download from Overpass API"
+msgstr "Завантажити з Overpass API"
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "Будує запити Overpass за допомогою Майстра запитів до Overpass Turbo"
+
+msgid "Query Wizard"
+msgstr "Майстер запитів"
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
+"Додайте ваш запит нижче або скористайтесь Майстром запитів до Overpass Turbo"
 
-msgid "Add snippet"
+msgid "Your saved queries:"
+msgstr "Ваші збережені запити:"
+
+msgid "Show/hide Overpass snippet list"
+msgstr "Показати/приховати перелік фрагментів запитів Overpass"
+
+msgid "Overpass query:"
+msgstr "Запит Overpass:"
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
 msgstr ""
+"Ви не створили запит. Завантажити всі дані для цього місця, натомість?"
+
+msgid "Download all data?"
+msgstr "Завантажити всі дані?"
+
+msgid "Add new snippet"
+msgstr "Додати новий фрагмент"
+
+msgid "Delete selected snippet"
+msgstr "Вилучити виділений фрагмент"
+
+msgid "Edit selected snippet"
+msgstr "Редагувати виділений фрагмент"
+
+msgid "history"
+msgstr "історична довідка"
+
+msgid "Please select an item first"
+msgstr "Спочатку виділіть елемент"
+
+msgid "Edit item"
+msgstr "Редегувати елемент"
+
+msgid "Add snippet"
+msgstr "Додати фрагмент"
 
 msgid "Query cannot be empty"
-msgstr ""
+msgstr "Запит не може бути порожнім"
 
 msgid "This name can be used for the item"
-msgstr ""
+msgstr "Ця назва може бути використана для елемента"
 
 msgid "Item with this name already exists"
-msgstr ""
+msgstr "Елемент з такою назвою вже є"
 
 msgid "The item cannot be created with provided name"
-msgstr ""
+msgstr "Неможливо створити елемент з такою назвою"
 
 msgid "The item cannot be created with an empty query"
-msgstr ""
+msgstr "Неможливо створити елемент з порожнім запитом"
 
 msgid "Overpass Turbo Query Wizard"
-msgstr ""
+msgstr "Майстер запитів Overpass Turbo"
 
 msgid "Build query"
 msgstr "Створити запит"
 
 msgid "Build query and execute"
-msgstr ""
+msgstr "Створити та надіслати запит"
 
 msgid "Search :"
-msgstr ""
+msgstr "Пошук:"
 
 msgid "The Overpass wizard could not parse the following query:"
-msgstr ""
+msgstr "Майстер запитів Overpass не в змозі розібрати наступний запит:"
 
 msgid "Parse error"
 msgstr "Помилка розбору"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9418,6 +9651,18 @@ msgstr "Автентифікація із наданим іменем корис
 msgid "Cancel authentication"
 msgstr "Скасування автентифікації"
 
+msgid "Question"
+msgstr "Питання"
+
+msgid "Message"
+msgstr "Повідомлення"
+
+msgid "Enter text"
+msgstr "Введіть текст"
+
+msgid "Installing plugins"
+msgstr "Встановлення втулків"
+
 msgid "Downloading file"
 msgstr "Завантаження файлу"
 
@@ -10012,9 +10257,6 @@ msgstr "Виділити об’єкти для надсилання"
 msgid "Cancel uploading"
 msgstr "Скасувати надсилання"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "Неочікуване значення ''{1}'' для ключа ''{0}'' у налаштуваннях"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 "Заповнити один набір змін і повернутися до діалогу надсилання даних на сервер"
@@ -10104,6 +10346,188 @@ msgstr[0] "Вилучити {0} об’єкт:"
 msgstr[1] "Вилучити {0} об’єкти:"
 msgstr[2] "Вилучити {0} об’єктів:"
 
+msgid "All Formats"
+msgstr "Всі формати"
+
+msgid "Could not export ''{0}''."
+msgstr "Неможливо експортувати ''{0}''."
+
+msgid "Could not import ''{0}''."
+msgstr "Неможливо імпортувати ''{0}''."
+
+msgid "Could not import files."
+msgstr "Неможливо імпортувати файли."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>Неможливо прочитати файл ''{0}''.<br>Помилка:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>Неможливо прочитати файли.<br>Помилка:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "Файли GeoJSON"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Шар ''{0}'' не підтримується"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Примітка: GPL не сумісна з ліцензією OSM. Не завантажуйте треки, ліцензовані "
+"під GPL."
+
+msgid "GPS track description"
+msgstr "опис треку GPS"
+
+msgid "Add author information"
+msgstr "Додати інформацію про автора"
+
+msgid "Real name"
+msgstr "Справжнє ім’я"
+
+msgid "E-Mail"
+msgstr "Ел. пошта"
+
+msgid "Copyright (URL)"
+msgstr "Авторські права (URL)"
+
+msgid "Predefined"
+msgstr "Попередньо визначене"
+
+msgid "Copyright year"
+msgstr "Авторські права (рік)"
+
+msgid "Keywords"
+msgstr "Ключові слова"
+
+msgid "Export options"
+msgstr "Опції експорту"
+
+msgid "Export and Save"
+msgstr "Експортувати і зберегти"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Помилка при експортуванні {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Виберіть ліцензію з набору"
+
+msgid "GPX Files"
+msgstr "Файли GPX"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Збій розбору даних шару ''{0}''"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Під час розбору gpx-даних шару ''{0}'' виникла помилка. Буде доступною "
+"тільки частина файлу."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Під час розбору gpx-файлу ''{0}'' виникла помилка. Буде доступною тільки "
+"частина файлу."
+
+msgid "Image Files"
+msgstr "Файли зображень"
+
+msgid "folder"
+msgstr "тека"
+
+msgid "Looking for image files"
+msgstr "Пошук файлів зображень"
+
+msgid "No image files found."
+msgstr "Файли зображень не знайдені."
+
+msgid "NMEA-0183 Files"
+msgstr "Файли NMEA-0183"
+
+msgid "Coordinates imported: {0}"
+msgstr "Імпортовані координати: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "Пошкоджені фрази: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Помилки контрольної суми: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "Невідомі фрази: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "Нульові координати: {0}"
+
+msgid "NMEA import success:"
+msgstr "Успішний імпорт NMEA:"
+
+msgid "NMEA import failure!"
+msgstr "Збій при імпорті NMEA!"
+
+msgid "Note Files"
+msgstr "Файли Нотаток"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "Файли сервера OSM стиснені bzip2"
+
+msgid "OsmChange File"
+msgstr "Файл OsmChange"
+
+msgid "File ''{0}'' does not exist."
+msgstr "Не існує файлу \"{0}\"."
+
+msgid "No data found in file {0}."
+msgstr "В файлі {0} немає даних."
+
+msgid "Open OsmChange file"
+msgstr "Відкрити файл OsmChange"
+
+msgid "OSM Server Files"
+msgstr "Файли сервера OSM"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>Виникла помилка під час збереження.<br>Помилка: <br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<html>Сталася помилка під час відновлення резервної копії файлу.<br>Помилка: "
+"<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "Файли сервера OSM стиснені gzip"
+
+msgid "Invalid dataset"
+msgstr "Неправильні дані"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Дані для шару ''{0}'' не знайдені."
+
+msgid "No data found in file ''{0}''."
+msgstr "У файлі ''{0}'' дані не знайдені."
+
+msgid "Open OSM file"
+msgstr "Відкрити файл OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "Файли WMS (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "Непідтримувана версія файлу WMS; знайдено {0}, очікувалось {1}"
+
 msgid "Native projections"
 msgstr "Початкові проекції"
 
@@ -10215,6 +10639,35 @@ msgstr "Більше не показувати це повідомлення"
 msgid "Hide this message and never show it again"
 msgstr "Приховати це повідомлення і більше не показувати"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Неможливо створити теку {0}, автозбереження буде відключене"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Неможливо створити файл {0}, буде використане інше ім’я для файлу"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+"Помилка вводу-виводу під час створення файлу, автозбереження буде пропущене: "
+"{0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Неможливо вилучити старий резервний файл {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Вашу роботу було збережено автоматично"
+
+msgid "Restoring files"
+msgstr "Відновлення файлів"
+
+msgid "Unable to delete backup file {0}"
+msgstr "Невдалось створити файл резервної копії {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "Невдалось вилучити PID-файл {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "Невдалось вилучити заархівований файл резервної копії {0}"
+
 msgid "Customize Color"
 msgstr "Налаштувати колір"
 
@@ -10323,6 +10776,9 @@ msgstr "Всього нотаток:"
 msgid "Changes need uploading?"
 msgstr "Надіслати зміни?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "поза межами завантаженої ділянки"
 
@@ -10399,6 +10855,9 @@ msgstr "Помилки"
 msgid "No validation errors"
 msgstr "Перевірка не виявила помилок"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Встановити закладку WMS"
 
@@ -11030,9 +11489,6 @@ msgstr "(посилання: "
 msgid "Select the map painting styles"
 msgstr "Виберіть стилі відтворення мапи"
 
-msgid "loading style ''{0}''..."
-msgstr "завантаження стилю ''{0}''…"
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -11049,6 +11505,9 @@ msgstr[2] ""
 "Під час завантаження стилю виникло {0} помилок. Подробиці у пункті "
 "\"Інформація\" контекстного меню."
 
+msgid "loading style ''{0}''..."
+msgstr "завантаження стилю ''{0}''…"
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 "Не вдалось завантажити стилі кольорів мапи з ''{0}''. Виключення: {1}"
@@ -11578,27 +12037,6 @@ msgstr "Завантажити втулки"
 msgid "Icon paths:"
 msgstr "Шлях до значків:"
 
-msgid "Short Description:"
-msgstr "Короткий опис:"
-
-msgid "Author:"
-msgstr "Автор:"
-
-msgid "Webpage:"
-msgstr "Веб-сторінка:"
-
-msgid "Description:"
-msgstr "Опис:"
-
-msgid "Version:"
-msgstr "Версія:"
-
-msgid "Minimum JOSM Version:"
-msgstr "Мінімальна версія JOSM:"
-
-msgid "by {0}"
-msgstr "{0}"
-
 msgid "Name (optional):"
 msgstr "Назва (необов’язково):"
 
@@ -12771,21 +13209,6 @@ msgstr ""
 "Попередження: неправильний формат або запис у списку стилів ''{0}''. "
 "Отримано ''{1}''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM типово (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Внутрішній візуальний стиль, на основі якого функціонуватимуть нові, які "
-"можна перемикати в режимі реального часу"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "основний стиль Potlatch 2"
-
 msgid "Map Settings"
 msgstr "Налаштування мапи"
 
@@ -12882,12 +13305,6 @@ msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 "Попередження: помилковий формат записів у переліку ''{0}''. Маємо ''{1}''"
 
-msgid "Internal Preset"
-msgstr "Внутрішній шаблон"
-
-msgid "The default preset for JOSM"
-msgstr "Типові шаблони JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Втулок {0} все ще використовується втулком:"
@@ -13391,9 +13808,6 @@ msgstr "Пароль в OSM:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Не вдалось отримати облікові дані ОСМ з менеджера облікових даних."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "Поточний менеджер облікових записів має тип ''{0}''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Не вдалось зберегти облікові дані в менеджері облікових даних."
 
@@ -13412,12 +13826,6 @@ msgid ""
 msgstr ""
 "Задеє кількість днів до того, як закрита нотатка не буде завантажуватсь"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Не вдалось отримати Мітку доступу OAuth з менеджера облікових даних"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "Не вдалось зберегти Мітку доступу OAuth в менеджері облікових даних"
-
 msgid "Save to preferences"
 msgstr "Зберегти в налаштуваннях"
 
@@ -13620,69 +14028,6 @@ msgstr ""
 "Попередження: неприпустимий формат записів в переліку правил ''{0}''. Маємо "
 "''{1}''"
 
-msgid "Checks for errors on addresses"
-msgstr "Перевірка адрес на помилки"
-
-msgid "Tag combinations"
-msgstr "Комбінації теґів"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Перевірка на відсутність або сумнівні комбінації теґів"
-
-msgid "Deprecated features"
-msgstr "Застарілі теґи"
-
-msgid "Checks for deprecated features"
-msgstr "Перевірка на наявність застарілих теґів"
-
-msgid "Geometry"
-msgstr "Геометрія"
-
-msgid "Checks for geometry errors"
-msgstr "Перевірка помилок геометрії"
-
-msgid "Checks for errors on highways"
-msgstr "Перевірка помилок на шляхах"
-
-msgid "Multiple values"
-msgstr "Багатозначні теґи"
-
-msgid "Checks for wrong multiple values"
-msgstr "Перевірка на помилки багатозначних теґів"
-
-msgid "Numeric values"
-msgstr "Числові значення"
-
-msgid "Checks for wrong numeric values"
-msgstr "Перевіряє неправильних числових значень"
-
-msgid "Religion"
-msgstr "Релігія"
-
-msgid "Checks for errors on religious objects"
-msgstr "Перевірка на помилки культових (релігійних) об’єктів"
-
-msgid "Checks for errors on relations"
-msgstr "Перевірка помилок в зв’язках"
-
-msgid "Territories"
-msgstr "Території"
-
-msgid "Checks for territories-specific features"
-msgstr "Перевірки властивостей притаманних територіям"
-
-msgid "Unnecessary tags"
-msgstr "Непотрібні теґи"
-
-msgid "Checks for unnecessary tags"
-msgstr "Перевірка на наявність непотрібних теґів"
-
-msgid "Wikipedia"
-msgstr "Вікіпедія"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Перевірка помилкових теґів wikipedia"
-
 msgid "Tag checker rules"
 msgstr "Правила перевірки теґів"
 
@@ -13944,6 +14289,37 @@ msgstr "Усі файли (*.*)"
 msgid "Received error page:"
 msgstr "Отримано сторінку помилки:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Параметр з ключем ''{0}'' не містить ''{1}''. Не вдається відновити "
+"геометрію вікна з налаштувань."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Параметр з ключем ''{0}'' не надає ціле (int) значення для ''{1}''. Отримано "
+"{2}. Не вдається відновити геометрію вікна з налаштувань."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Не вдалося розкласти поле ''{1}'' на складові в налаштуваннях з ключем "
+"''{0}''. Помилка: {2}. Не вдається відновити геометрію вікна з налаштувань."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Параметра з ключем ''{0}'' не існує. Не вдається відновити геометрію вікна з "
+"налаштувань."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Ігнорування спотвореної геометрії: {0}"
+
 msgid "Min. latitude"
 msgstr "Мін. широта"
 
@@ -14078,9 +14454,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Вилучений член {0} входить до складу зв’язку {1}"
 
-msgid "All Formats"
-msgstr "Всі формати"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Завантаження точок {0} з {1}…"
 
@@ -14204,94 +14577,6 @@ msgstr "Розбір відповіді від сервера…"
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Неочікуваний елемент XML з іменем ''{0}''"
 
-msgid "Could not export ''{0}''."
-msgstr "Неможливо експортувати ''{0}''."
-
-msgid "Could not import ''{0}''."
-msgstr "Неможливо імпортувати ''{0}''."
-
-msgid "Could not import files."
-msgstr "Неможливо імпортувати файли."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Неможливо прочитати файл ''{0}''.<br>Помилка:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>Неможливо прочитати файли.<br>Помилка:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "Файли GeoJSON"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Шар ''{0}'' не підтримується"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Примітка: GPL не сумісна з ліцензією OSM. Не завантажуйте треки, ліцензовані "
-"під GPL."
-
-msgid "GPS track description"
-msgstr "опис треку GPS"
-
-msgid "Add author information"
-msgstr "Додати інформацію про автора"
-
-msgid "Real name"
-msgstr "Справжнє ім’я"
-
-msgid "E-Mail"
-msgstr "Ел. пошта"
-
-msgid "Copyright (URL)"
-msgstr "Авторські права (URL)"
-
-msgid "Predefined"
-msgstr "Попередньо визначене"
-
-msgid "Copyright year"
-msgstr "Авторські права (рік)"
-
-msgid "Keywords"
-msgstr "Ключові слова"
-
-msgid "Export options"
-msgstr "Опції експорту"
-
-msgid "Export and Save"
-msgstr "Експортувати і зберегти"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Помилка при експортуванні {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Виберіть ліцензію з набору"
-
-msgid "GPX Files"
-msgstr "Файли GPX"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Збій розбору даних шару ''{0}''"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Під час розбору gpx-даних шару ''{0}'' виникла помилка. Буде доступною "
-"тільки частина файлу."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Під час розбору gpx-файлу ''{0}'' виникла помилка. Буде доступною тільки "
-"частина файлу."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Помилка розбору: неправильна структура документа GPX"
 
@@ -14301,18 +14586,6 @@ msgstr "(рядок {0}, стовпець {1})"
 msgid "Unknown mode {0}."
 msgstr "Невідомий режим {0}."
 
-msgid "Image Files"
-msgstr "Файли зображень"
-
-msgid "folder"
-msgstr "тека"
-
-msgid "Looking for image files"
-msgstr "Пошук файлів зображень"
-
-msgid "No image files found."
-msgstr "Файли зображень не знайдені."
-
 msgid "get number of unread messages"
 msgstr "отримати кількість непрочитаних повідомлень"
 
@@ -14368,36 +14641,9 @@ msgstr "Отримання зв’язку з ід. {0} з ''{1}''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Сервер повідомив про помилку з кодом 404 для ід. {0}. Пропускаємо."
 
-msgid "NMEA-0183 Files"
-msgstr "Файли NMEA-0183"
-
-msgid "Coordinates imported: {0}"
-msgstr "Імпортовані координати: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "Пошкоджені фрази: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Помилки контрольної суми: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "Невідомі фрази: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "Нульові координати: {0}"
-
-msgid "NMEA import success:"
-msgstr "Успішний імпорт NMEA:"
-
-msgid "NMEA import failure!"
-msgstr "Збій при імпорті NMEA!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Виключення ''порожній покажчик'' — можливо, є відсутні теґи"
 
-msgid "Note Files"
-msgstr "Файли Нотаток"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14494,9 +14740,6 @@ msgstr "(Код={0})"
 msgid "The server replied an error with code {0}."
 msgstr "Сервер сповістив про помилку з кодом {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "Файли сервера OSM стиснені bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 "Початкова частина документа OsmChange вже записана. Будь ласка, пишіть лише "
@@ -14507,18 +14750,6 @@ msgstr ""
 "Початкова частина документа OsmChange ще не записана. Будь ласка, запишіть "
 "її спочатку."
 
-msgid "OsmChange File"
-msgstr "Файл OsmChange"
-
-msgid "File ''{0}'' does not exist."
-msgstr "Не існує файлу \"{0}\"."
-
-msgid "No data found in file {0}."
-msgstr "В файлі {0} немає даних."
-
-msgid "Open OsmChange file"
-msgstr "Відкрити файл OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "Непідтримувана версія: {0}"
 
@@ -14572,37 +14803,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "Неочікуване значення ''{1}'' параметру ''{0}''."
 
-msgid "OSM Server Files"
-msgstr "Файли сервера OSM"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>Виникла помилка під час збереження.<br>Помилка: <br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<html>Сталася помилка під час відновлення резервної копії файлу.<br>Помилка: "
-"<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "Файли сервера OSM стиснені gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Розбір даних історії OSM…"
 
-msgid "Invalid dataset"
-msgstr "Неправильні дані"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Дані для шару ''{0}'' не знайдені."
-
-msgid "No data found in file ''{0}''."
-msgstr "У файлі ''{0}'' дані не знайдені."
-
-msgid "Open OSM file"
-msgstr "Відкрити файл OSM"
-
 msgid "Reading was canceled"
 msgstr "Читання скасоване"
 
@@ -14748,6 +14951,9 @@ msgstr "З’єднання з сервером…"
 msgid "Downloading OSM notes..."
 msgstr "Завантаження нотаток…"
 
+msgid "Downloading data..."
+msgstr "Звантаження даних…"
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14810,14 +15016,8 @@ msgstr "Знайдено неочікуваний ідентифікатор 0 
 msgid "Failed to evaluate {0}"
 msgstr "Неможливо виконати {0}"
 
-msgid "Downloading data..."
-msgstr "Звантаження даних…"
-
-msgid "WMS Files (*.wms)"
-msgstr "Файли WMS (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "Непідтримувана версія файлу WMS; знайдено {0}, очікувалось {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "Неочікуване значення ''{1}'' для ключа ''{0}'' у налаштуваннях"
 
 msgid "{0} bytes have been read"
 msgstr "{0} байт було прочитано"
@@ -16006,39 +16206,6 @@ msgstr "Відкриття URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не містить {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "Застаріла версія Java"
-
-msgid "Update Java"
-msgstr "Оновити Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Ви використовуєте Java версії {0}."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Ця версія більше не підтримується {0}, починаючи з {1}, і її використання не "
-"рекомендується."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM дуже скоро перестане працювати з цією версією; рекомендуємо оновити "
-"Java до версії {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-"Ви можете зіткнутись з неочікуваними помилками Java; ми наполегливо радимо "
-"вам оновити Java до версії {0}."
-
-msgid "Would you like to update now ?"
-msgstr "Хочете оновити зараз?"
-
 msgid "reserved"
 msgstr "зарезервовано"
 
@@ -16110,22 +16277,6 @@ msgstr "Підозрілі символи в ключі:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Значення занадто довге (макс. {0} символів):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Ви бажаєте вставити ці теґи?"
-
-msgid "Clear buffer"
-msgstr "Очистити буфер"
-
-msgid "Ignore warnings"
-msgstr "Ігнорувати попередження"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<html><p> На жаль, неможливо вставити теґи з буферу обміну. Він не містить "
-"об’єктів JOSM чи відповідного тексту. </p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "Невдалось вилучити файл {0}"
 
@@ -16150,129 +16301,15 @@ msgstr[0] "день"
 msgstr[1] "дні"
 msgstr[2] "днів"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Параметр з ключем ''{0}'' не містить ''{1}''. Не вдається відновити "
-"геометрію вікна з налаштувань."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Параметр з ключем ''{0}'' не надає ціле (int) значення для ''{1}''. Отримано "
-"{2}. Не вдається відновити геометрію вікна з налаштувань."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Не вдалося розкласти поле ''{1}'' на складові в налаштуваннях з ключем "
-"''{0}''. Помилка: {2}. Не вдається відновити геометрію вікна з налаштувань."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Параметра з ключем ''{0}'' не існує. Не вдається відновити геометрію вікна з "
-"налаштувань."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Ігнорування спотвореної геометрії: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Помилка завантаження XML схеми"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Ви зіткнулися з помилкою в JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-"Виникла неочікувана ситуація.\n"
-"Це завжди помилки програмування. Якщо у вас свіжа версія JOSM, будь ласка, "
-"надішліть звіт про помилку."
-
-msgid "Debug information"
-msgstr "Інформація для відлагодження"
-
-msgid "Manually report at:"
-msgstr "Надіслати звіт вручну на:"
-
-msgid "Is JOSM up to date?"
-msgstr "Чи у вас свіжа версія JOSM?"
-
-msgid "Send bug report"
-msgstr "Надіслати звіт про помилку"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-"Якщо у вас остання версія JOSM та втулків, надішліть, будь ласка, звіт про "
-"помилку до нашої системи відстежування помилок.\n"
-"Деяку інформацію про помилку вже було зібрано для вас. Додайте потрібні дані "
-"про те, як відтворити ситуацію, що призвела до виникнення помилки, додайте "
-"якомога більше деталей."
-
-msgid "Report Bug"
-msgstr "Повідомити про помилку"
-
-msgid "Suppress this error for this session."
-msgstr "Не показувати повідомлення про цю помилку для цього сеансу."
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Не показувати наступні повідомлення про помилки для цього сеансу."
-
-msgid "Ignore this error."
-msgstr "Ігнорувати цю помилку."
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 "Збій створення повідомлення про помилку. Будь ласка, створіть повідомлення "
 "самі на цьому сайті:"
 
-msgid "Include the system status report."
-msgstr "Додати звіт про стан системи."
-
-msgid "Include information about the data you were working on."
-msgstr "Додати інформацію про дані, з якими ви працювали."
-
-msgid "Include all stack traces."
-msgstr "Додати всі трасування стеку."
-
-msgid "Your current version of JOSM is {0}"
-msgstr "Ваша поточна версія JOSM: {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM виконує пошук оновлень…"
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr "Під час перевірки актуальності поточної версії JOSM виникла помилка."
-
-msgid "JOSM is up to date."
-msgstr "Ваша версія JOSM є найновішою."
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM застарів. Поточна версія – {0}. Спробуйте оновити JOSM."
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-"Перед надсиланням звіту про помилку переконайтесь, що ви оновили JOSM до "
-"найновішої версії:"
-
-msgid "Update JOSM"
-msgstr "Оновити JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -20027,9 +20064,6 @@ msgstr "Вміст покажчика"
 msgid "notice"
 msgstr "повідомлення"
 
-msgid "history"
-msgstr "історична довідка"
-
 msgid "nature"
 msgstr "рослинність"
 
@@ -20609,6 +20643,9 @@ msgstr "Соціальні послуги"
 msgid "Nursing Home"
 msgstr "Будинок престарілих"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "Будинок групового мешкання"
 
@@ -23051,6 +23088,9 @@ msgstr "Подарунки/Сувеніри"
 msgid "Variety Store"
 msgstr "Універсам"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "Букмекер"
 
@@ -23932,6 +23972,78 @@ msgstr "Діловий район"
 msgid "Industrial"
 msgstr "Промзона"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Гаражі"
 
@@ -24635,6 +24747,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -25409,6 +25524,9 @@ msgstr "Кадастр"
 msgid "French land registry"
 msgstr "Земельний реєстр Франції"
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Овернь 2013 - 25 см"
 
@@ -25519,15 +25637,6 @@ msgstr "Стара мапа Пегау - TK25 Messtischblatt (4839; 1909; PROJ.4
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr "NRW-Atlas: ALKIS"
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: цифрова базова мапа 1:5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Топографічна мапа 1:10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Агломерація Рур: Аерофотозйомка (10 см)"
 
@@ -34216,15 +34325,21 @@ msgstr "на попереднє значення (незмінений mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "Втулок геопозначення фотографій"
 
-msgid "Writing position information to image files..."
-msgstr "Запис інформації про місце знаходження у файли зображень…"
-
 msgid "Could not read mtime."
 msgstr "Неможливо прочитати mtime."
 
 msgid "Could not write mtime."
 msgstr "Неможливо записати mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Запис інформації про місце знаходження у файли зображень…"
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "Файл не може бути знищений!"
 
@@ -34739,6 +34854,9 @@ msgstr "Виправити помилку"
 msgid "PT: dummy test warning"
 msgstr "ГТ: фіктивне попередження"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "ГТ: Маршрут містить прогалини, що можна усунути впорядкуванням ліній"
 
@@ -34749,6 +34867,9 @@ msgstr ""
 "ГТ: Кількість розривів в маршруті може бути зменшена після виконання "
 "сорутваня його елементів. Після цього потрібна додаткова перевірка."
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/ur.po b/i18n/po/ur.po
index 770457d..284a9af 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:04+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:04+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: ur\n"
 
@@ -55,54 +55,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr "مدد"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr "انتباہ"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr "متعلق"
 
@@ -180,6 +135,9 @@ msgstr "منسوخ"
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr "انتباہ"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -456,13 +414,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -470,9 +425,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -539,6 +491,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr "مدد"
+
 msgid "History"
 msgstr ""
 
@@ -1038,23 +993,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2309,36 +2247,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2625,86 +2533,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2722,9 +2550,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3071,57 +2896,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3211,6 +2991,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3339,6 +3125,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3353,6 +3148,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3389,15 +3187,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3423,21 +3274,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3471,6 +3312,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3548,6 +3499,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3732,9 +3798,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3919,9 +3982,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4460,9 +4520,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4574,47 +4631,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4705,6 +4731,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5166,6 +5252,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5860,6 +6019,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6416,9 +6589,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6529,9 +6699,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7924,49 +8091,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7978,36 +8183,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8052,9 +8268,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8592,6 +8805,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9069,9 +9294,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9150,6 +9372,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9257,6 +9651,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9360,6 +9781,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9433,6 +9857,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10002,9 +10429,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10014,6 +10438,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10427,55 +10854,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11561,19 +11967,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11653,12 +12046,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12124,9 +12511,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12144,12 +12528,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12330,69 +12708,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12636,6 +12951,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12748,9 +13086,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12853,86 +13188,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12942,18 +13197,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13005,36 +13248,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13122,27 +13338,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13188,35 +13389,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13348,6 +13523,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13405,13 +13583,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14347,33 +14519,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14432,20 +14577,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14469,109 +14600,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18284,9 +18319,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18866,6 +18898,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21306,6 +21341,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22166,6 +22204,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22861,6 +22971,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23613,6 +23726,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23723,15 +23839,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31583,13 +31690,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32087,6 +32200,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32095,6 +32211,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/vi.po b/i18n/po/vi.po
index a449e80..2644b9a 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:05+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:04+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: vi\n"
 
@@ -55,55 +55,9 @@ msgstr "Background Điều khoản sử dụng"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "liên kết mạc không được hỗ trợ trên nền tảng hiện tại ('' {0} '')"
 
-msgid "Executing platform startup hook"
-msgstr "nền tảng Thi startup móc"
-
-msgid "Building main menu"
-msgstr "Xây dựng trình đơn chính"
-
-msgid "Help"
-msgstr "Help"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "Đang khởi tạo OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "Đang khởi tạo trình xác nhận"
-
-msgid "Initializing presets"
-msgstr "Đang khởi tạo cài đặt trước"
-
-msgid "Initializing map styles"
-msgstr "Đang khởi tạo phong cách đồ"
-
-msgid "Loading imagery preferences"
-msgstr "sở thích tải hình ảnh"
-
-msgid "Updating user interface"
-msgstr "Đang cập nhật giao diện người dùng"
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Bỏ qua URL không hợp lệ: \" {0} \""
-
-msgid "Warning"
-msgstr "Cảnh báo"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Bỏ qua URL tập tin bị thay đổi: \" {0} \""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-"Thông số \" downloadgps \"không chấp nhận các tên file hoặc URL tập tin"
-
 msgid "About"
 msgstr "Giới thiệu"
 
@@ -182,6 +136,9 @@ msgstr "Hủy bỏ"
 msgid "Click to abort launching external browsers"
 msgstr "Nhấn vào đây để hủy bỏ tung ra trình duyệt bên ngoài"
 
+msgid "Warning"
+msgstr "Cảnh báo"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 "Hãy chọn ít nhất một trong những đã được tải lên nút, cách nào, hay một quan "
@@ -478,14 +435,11 @@ msgstr ""
 "* Một không có cách nào tự qua với ít nhất hai trong số các nút của nó; \n"
 "* Ba nút."
 
-msgid "Download from OSM..."
-msgstr "Tải từ OSM ..."
-
-msgid "Download map data from the OSM server."
-msgstr "dữ liệu Tải về bản đồ từ máy chủ OSM."
+msgid "Download data"
+msgstr "Tải dữ liệu"
 
-msgid "Please select a download area first."
-msgstr "Hãy chọn một khu vực tải về đầu tiên."
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
@@ -494,9 +448,6 @@ msgstr ""
 "<Html> Hành động này sẽ yêu cầu {0} cá nhân <br> yêu cầu download. Bạn "
 "cóMuốn <br> tiếp tục không? </ Html>"
 
-msgid "Download data"
-msgstr "Tải dữ liệu"
-
 msgid "Download notes in current view"
 msgstr "Tải về ghi chú trong quan điểm hiện tại"
 
@@ -563,6 +514,9 @@ msgstr "Không có gì để xuất khẩu. Nhận được một số dữ li
 msgid "Export GPX file"
 msgstr "Xuất GPX tập tin"
 
+msgid "Help"
+msgstr "Help"
+
 msgid "History"
 msgstr "History"
 
@@ -1111,23 +1065,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "Hãy chọn cách với góc khoảng 90 hoặc 180 độ."
 
-msgid "Download from Overpass API ..."
-msgstr "Tải về từ API Cầu vượt ..."
-
-msgid "Download map data from Overpass API server."
-msgstr "dữ liệu Tải về bản đồ từ máy chủ API Cầu vượt."
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "Dán"
 
@@ -2470,36 +2407,6 @@ msgstr "Chọn liên quan (thêm)"
 msgid "Select relation"
 msgstr "Chọn liên quan"
 
-msgid "<not>"
-msgstr "<không>"
-
-msgid "<or>"
-msgstr "<hoặc>"
-
-msgid "<xor>"
-msgstr "<xor>"
-
-msgid "<left parent>"
-msgstr "<mẹ lại>"
-
-msgid "<right parent>"
-msgstr "<mẹ phải>"
-
-msgid "<colon>"
-msgstr "<ruột>"
-
-msgid "<equals>"
-msgstr "<bằng>"
-
-msgid "<key>"
-msgstr "<key>"
-
-msgid "<question mark>"
-msgstr "<dấu hỏi>"
-
-msgid "<end-of-file>"
-msgstr "<end-of-file>"
-
 msgid "Search..."
 msgstr "Tìm kiếm ..."
 
@@ -2797,96 +2704,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"Các regex \" {0} \"đã có một lỗi phân tích cú pháp bù đắp {1}, toàn báo lỗi: "
-"\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"Các regex \" {0} \"đã có một lỗi phân tích cú pháp, lỗi đầy đủ: \n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr "Range của id nguyên thủy dự kiến"
-
-msgid "Range of changeset ids expected"
-msgstr "Range của id changeset dự kiến"
-
-msgid "Range of versions expected"
-msgstr "Phạm vi của các phiên bản dự kiến"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-"Key không thể để trống khi điều hành thẻ được sử dụng sử dụng mẫu:. key = "
-"valueKhóa không thể bị trống khi tác tử thẻ được dùng. Ví dụ: khóa=giá trị"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-"Unknown primitive type: {0}. Allowed values are node, way or relation"
-
-msgid "Positive integer expected"
-msgstr "số nguyên dương dự kiến"
-
-msgid "Range of numbers expected"
-msgstr "Phạm vi của các con số dự kiến"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "token Unexpected. Dự kiến ​​{0}, tìm thấy {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr "token Unexpected: {0}"
-
-msgid "Missing parameter for OR"
-msgstr "Thiếu tham số cho OR"
-
-msgid "Missing parameter for XOR"
-msgstr "Thiếu tham số cho XOR"
-
-msgid "Missing operator for NOT"
-msgstr "Thiếu điều hành cho không"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "Tự động cắt bỏ giá trị của thẻ '' {0} '' trên đối tượng bị xóa {1}"
 
@@ -2907,9 +2724,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr "Khả năng API vi phạm"
 
-msgid "Cyclic dependency between relations:"
-msgstr "phụ thuộc Cyclic giữa các mối quan hệ:"
-
 msgid "Removed obsolete tags"
 msgstr "Gỡ bỏ các thẻ lỗi thời"
 
@@ -3260,60 +3074,12 @@ msgstr "Vai trò trong quan hệ đề cập đến"
 msgid "Automatic tag correction"
 msgstr "Tự động điều chỉnh tag"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "Không thể tạo thư mục {0}, autosave sẽ bị vô hiệu hóa"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "Không thể tạo tập tin {0}, tên tập tin khác sẽ được sử dụng"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "IOError trong khi tạo ra tập tin, tự động lưu sẽ bị bỏ qua: {0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "Không thể xóa file backup cũ {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "Công việc của bạn đã được lưu tự động."
-
-msgid "Restoring files"
-msgstr "Khôi phục các tập tin"
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "giá trị vĩ độ bất hợp pháp '' {0} ''"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "giá trị kinh độ bất hợp pháp '' {0} ''"
 
-msgid "Question"
-msgstr "Câu hỏi"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Enter text"
-msgstr "Nhập văn bản"
-
-msgid "Installing plugins"
-msgstr "Cài đặt plugins"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-"<Html> Cài đặt tập tin yêu cầu để nối thêm ưu đãi để <b> {0} </ b>, <br/> "
-"nhưng nóGiá trị mặc định là không biết tại thời điểm này. <br/> Vui lòng "
-"kích hoạt tương ứngChức năng bằng tay và thử lại nhập khẩu."
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "Không thể tạo thư mục mất tích cache: {0}"
 
@@ -3415,6 +3181,15 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Preference thiết lập {0} đã được gỡ bỏ vì nó không còn được sử dụng."
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+"<Html> Cài đặt tập tin yêu cầu để nối thêm ưu đãi để <b> {0} </ b>, <br/> "
+"nhưng nóGiá trị mặc định là không biết tại thời điểm này. <br/> Vui lòng "
+"kích hoạt tương ứngChức năng bằng tay và thử lại nhập khẩu."
+
 msgid "Metric"
 msgstr "Metric"
 
@@ -3546,6 +3321,16 @@ msgstr ""
 msgid "Note"
 msgstr "Ghi chú"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "Không thể lấy OAuth truy cập token từ người quản lý ủy nhiệm"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "quản lý chứng chỉ hiện tại là loại '' {0} ''"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+"Không thể truy cập cửa hàng OAuth mã tự động cho các thông tin quản lý"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "ID> 0 dự kiến. Chấn {0}."
 
@@ -3562,6 +3347,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "Một nguyên thủy với ID = 0 không thể là vô hình."
 
+msgid "Cyclic dependency between relations:"
+msgstr "phụ thuộc Cyclic giữa các mối quan hệ:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3606,6 +3394,55 @@ msgstr "Kết hợp dữ liệu ..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "Kiểm tra '' {0} '' hoàn thành vào {1}"
 
+msgid "incomplete"
+msgstr "không đầy đủ"
+
+msgid "House {0}"
+msgstr "House {0}"
+
+msgid "House number {0} at {1}"
+msgstr "Nhà số {0} tại {1}"
+
+msgid "House number {0}"
+msgstr "Số nhà {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "nút"
+
+msgid "highway"
+msgstr "đường cao tốc"
+
+msgid "railway"
+msgstr "đường sắt"
+
+msgid "waterway"
+msgstr "đường thủy"
+
+msgid "landuse"
+msgstr "sử dụng đất"
+
+msgid "building"
+msgstr "xây dựng"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} nút"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} thành viên"
+
+msgid "public transport"
+msgstr "giao thông công cộng"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "quan hệ"
+
+msgid "Changeset {0}"
+msgstr "changeset {0}"
+
 msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
@@ -3641,18 +3478,10 @@ msgid ""
 msgstr ""
 "Không thể hợp nhất nguyên thủy với id khác nhau. Id này là {0}, khác là {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "nút"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "cách"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "quan hệ"
-
 msgid "closedway"
 msgstr "closedway"
 
@@ -3690,6 +3519,126 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "Thông số {0} không phải trong khoảng 0 .. {1}. Got '' {2} ''."
 
+msgid "<not>"
+msgstr "<không>"
+
+msgid "<or>"
+msgstr "<hoặc>"
+
+msgid "<xor>"
+msgstr "<xor>"
+
+msgid "<left parent>"
+msgstr "<mẹ lại>"
+
+msgid "<right parent>"
+msgstr "<mẹ phải>"
+
+msgid "<colon>"
+msgstr "<ruột>"
+
+msgid "<equals>"
+msgstr "<bằng>"
+
+msgid "<key>"
+msgstr "<key>"
+
+msgid "<question mark>"
+msgstr "<dấu hỏi>"
+
+msgid "<end-of-file>"
+msgstr "<end-of-file>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"Các regex \" {0} \"đã có một lỗi phân tích cú pháp bù đắp {1}, toàn báo lỗi: "
+"\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"Các regex \" {0} \"đã có một lỗi phân tích cú pháp, lỗi đầy đủ: \n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr "Range của id nguyên thủy dự kiến"
+
+msgid "Range of changeset ids expected"
+msgstr "Range của id changeset dự kiến"
+
+msgid "Range of versions expected"
+msgstr "Phạm vi của các phiên bản dự kiến"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+"Key không thể để trống khi điều hành thẻ được sử dụng sử dụng mẫu:. key = "
+"valueKhóa không thể bị trống khi tác tử thẻ được dùng. Ví dụ: khóa=giá trị"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+"Unknown primitive type: {0}. Allowed values are node, way or relation"
+
+msgid "Positive integer expected"
+msgstr "số nguyên dương dự kiến"
+
+msgid "Range of numbers expected"
+msgstr "Phạm vi của các con số dự kiến"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr "token Unexpected: {0}"
+
+msgid "Missing parameter for OR"
+msgstr "Thiếu tham số cho OR"
+
+msgid "Missing parameter for XOR"
+msgstr "Thiếu tham số cho XOR"
+
+msgid "Missing operator for NOT"
+msgstr "Thiếu điều hành cho không"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "token Unexpected. Dự kiến ​​{0}, tìm thấy {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 "Không thể tải lớp bản đồ renderer '' {0} ''. Các lớp wasn''t được tìm thấy."
@@ -3776,6 +3725,123 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "Mô tả ngắn:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "Tác giả:"
+
+msgid "Webpage:"
+msgstr "trang web:"
+
+msgid "Description:"
+msgstr "Mô tả:"
+
+msgid "Version:"
+msgstr "Version:"
+
+msgid "Minimum JOSM Version:"
+msgstr "tối thiểu JOSM Version:"
+
+msgid "by {0}"
+msgstr "bởi {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM mặc định (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+"Phong cách nội bộ sẽ được sử dụng như là cơ sở cho phong cách thời gian chạy "
+"overlay switchable"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "các chính Potlatch 2 phong cách"
+
+msgid "Internal Preset"
+msgstr "nội bộ Preset"
+
+msgid "The default preset for JOSM"
+msgstr "cài sẵn mặc định cho JOSM"
+
+msgid "Addresses"
+msgstr "Địa chỉ"
+
+msgid "Checks for errors on addresses"
+msgstr "Kiểm tra các lỗi trên các địa chỉ"
+
+msgid "Tag combinations"
+msgstr "Tag kết hợp"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "Kiểm tra mất tích tag hoặc nghi ngờ kết hợp"
+
+msgid "Deprecated features"
+msgstr "tính năng được tán"
+
+msgid "Checks for deprecated features"
+msgstr "Kiểm tra các tính năng lỗi thời"
+
+msgid "Geometry"
+msgstr "Geometry"
+
+msgid "Checks for geometry errors"
+msgstr "Kiểm tra các lỗi hình học"
+
+msgid "Highways"
+msgstr "Đường cao tốc"
+
+msgid "Checks for errors on highways"
+msgstr "Kiểm tra các lỗi trên đường cao tốc"
+
+msgid "Multiple values"
+msgstr "Nhiều giá trị"
+
+msgid "Checks for wrong multiple values"
+msgstr "Kiểm tra cho nhiều giá trị sai"
+
+msgid "Numeric values"
+msgstr "Các giá trị số"
+
+msgid "Checks for wrong numeric values"
+msgstr "Kiểm tra cho các giá trị số sai"
+
+msgid "Religion"
+msgstr "Tôn giáo"
+
+msgid "Checks for errors on religious objects"
+msgstr "Kiểm tra các lỗi trên đối tượng tôn giáo"
+
+msgid "Relations"
+msgstr "Quan hệ"
+
+msgid "Checks for errors on relations"
+msgstr "Kiểm tra các lỗi trên các mối quan hệ"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "thẻ không cần thiết"
+
+msgid "Checks for unnecessary tags"
+msgstr "Kiểm tra cho thẻ không cần thiết"
+
+msgid "Wikipedia"
+msgstr "Wikipedia"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "Kiểm tra cho các thẻ sai wikipedia"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3967,9 +4033,6 @@ msgstr "URL có chứa một đoạn không hợp lệ: {0}"
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr "Địa chỉ"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "Kiểm tra các lỗi trong các địa chỉ và quan hệ associatedStreet."
 
@@ -4160,9 +4223,6 @@ msgstr "cách hạch Nhân đôi"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "Kiểm tra cách với các nút giống hệt nhau liên tiếp."
 
-msgid "Highways"
-msgstr "Đường cao tốc"
-
 msgid "Performs semantic checks on highways."
 msgstr "Thực hiện kiểm tra ngữ nghĩa trên đường cao tốc."
 
@@ -4721,9 +4781,6 @@ msgstr "loại thủy {0}"
 msgid "boundary type {0}"
 msgstr "loại ranh giới {0}"
 
-msgid "building"
-msgstr "xây dựng"
-
 msgid "area"
 msgstr "khu vực"
 
@@ -4842,43 +4899,15 @@ msgstr "Không hiển thị lần nữa (phiên này)"
 msgid "Do not show again (remembers choice)"
 msgstr "Không hiển thị lần nữa (nhớ lựa chọn)"
 
-msgid "incomplete"
-msgstr "không đầy đủ"
-
-msgid "House {0}"
-msgstr "House {0}"
-
-msgid "House number {0} at {1}"
-msgstr "Nhà số {0} tại {1}"
-
-msgid "House number {0}"
-msgstr "Số nhà {0}"
-
-msgid "highway"
-msgstr "đường cao tốc"
-
-msgid "railway"
-msgstr "đường sắt"
-
-msgid "waterway"
-msgstr "đường thủy"
-
-msgid "landuse"
-msgstr "sử dụng đất"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} nút"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} thành viên"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "Bỏ qua URL không hợp lệ: \" {0} \""
 
-msgid "public transport"
-msgstr "giao thông công cộng"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "Bỏ qua URL tập tin bị thay đổi: \" {0} \""
 
-msgid "Changeset {0}"
-msgstr "changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr ""
+"Thông số \" downloadgps \"không chấp nhận các tên file hoặc URL tập tin"
 
 msgid "Precondition violation"
 msgstr "vi phạm Điều kiện tiên quyết"
@@ -4969,6 +4998,70 @@ msgstr ""
 "Dự kiến ​​sẽ không có sản phẩm nào có giá trị cho tham số '' {0} '', đã '' "
 "{1} ''"
 
+msgid "Outdated Java version"
+msgstr "phiên bản Java lỗi thời"
+
+msgid "Update Java"
+msgstr "Update Java"
+
+msgid "You are running version {0} of Java."
+msgstr "Bạn đang chạy phiên bản {0} của Java."
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+"Phiên bản này không còn được hỗ trợ bởi {0} từ {1} và không được khuyến "
+"cáoĐể sử dụng."
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+"JOSM sẽ sớm ngừng làm việc với phiên bản này, chúng tôi khuyên bạn nên "
+"bạnCập nhật cho Java {0}."
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "Bạn có muốn cập nhật bây giờ?"
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr "nền tảng Thi startup móc"
+
+msgid "Building main menu"
+msgstr "Xây dựng trình đơn chính"
+
+msgid "Updating user interface"
+msgstr "Đang cập nhật giao diện người dùng"
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr "Đang khởi tạo OSM API"
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr "Đang khởi tạo trình xác nhận"
+
+msgid "Initializing presets"
+msgstr "Đang khởi tạo cài đặt trước"
+
+msgid "Initializing map styles"
+msgstr "Đang khởi tạo phong cách đồ"
+
+msgid "Loading imagery preferences"
+msgstr "sở thích tải hình ảnh"
+
 msgid "usage"
 msgstr "sử dụng"
 
@@ -5455,6 +5548,79 @@ msgstr "Hãy nhập một số gạch"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "Giá trị hiện tại isn''ta chỉ số ngói hợp lệ cho mức zoom cho"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "Bạn đã gặp phải một lỗi trong JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "Báo cáo Bug"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "Ngăn chặn các hộp thoại báo lỗi hơn nữa cho phiên này."
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "Cập nhật JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "Xung đột nền: không có xung đột"
 
@@ -6201,6 +6367,22 @@ msgstr ""
 "Các dữ liệu sao chép chứa các đối tượng chưa đầy đủ. Khi dán không đầy đủCác "
 "đối tượng được loại bỏ. Bạn có muốn dán dữ liệu mà không có đầy đủĐối tượng?"
 
+msgid "Do you want to paste these tags?"
+msgstr "Bạn có muốn dán các thẻ này?"
+
+msgid "Clear buffer"
+msgstr "Clear đệm"
+
+msgid "Ignore warnings"
+msgstr "Bỏ qua cảnh báo"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+"<Html> <p> Xin lỗi, không thể để dán thẻ từ đệm. Nó khôngChứa bất kỳ đối "
+"tượng JOSM hoặc văn bản phù hợp. </ P> </ html>"
+
 msgid "For selected objects only"
 msgstr "đối tượng Đối với lựa chọn duy nhất"
 
@@ -6781,9 +6963,6 @@ msgstr "Nguồn"
 msgid "Title:"
 msgstr "Tiêu đề:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "Built-in Style, đường nội bộ:"
 
@@ -6896,9 +7075,6 @@ msgstr ""
 "Invalid danh sách ID quy \n"
 "Không thể tiếp tục."
 
-msgid "Relations"
-msgstr "Quan hệ"
-
 msgid "Open a list of all relations."
 msgstr "Mở một danh sách của tất cả các mối quan hệ."
 
@@ -8389,24 +8565,6 @@ msgstr "Giá trị vĩ độ trong khoảng [-90,90] yêu cầu."
 msgid "Value for longitude in range [-180,180] required."
 msgstr "Giá trị kinh độ trong phạm vi [-180.180] yêu cầu."
 
-msgid "Data Sources and Types:"
-msgstr "Nguồn gốc và các loại dữ liệu:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap dữ liệu"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "Chọn để tải dữ liệu OSM trong khu vực download được lựa chọn."
-
-msgid "Raw GPS data"
-msgstr "Raw GPS dữ liệu"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "Chọn để tải về dấu vết GPS trong khu vực download được lựa chọn."
-
-msgid "Select to download notes in the selected download area."
-msgstr "Chọn để tải về các ghi chú trong khu vực download được lựa chọn."
-
 msgid "Download as new layer"
 msgstr "Tải về dưới layer mới"
 
@@ -8440,30 +8598,12 @@ msgstr ""
 "Sử dụng trái nhấp chuột và kéo để chọn khu vực, mũi tên hoặc chuột phải để "
 "di chuyểnBản đồ, bánh xe hoặc +/- để phóng to."
 
-msgid "No area selected yet"
-msgstr "Không có lựa chọn khu vực nào"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "Tải về diện tích quá lớn, có thể sẽ bị từ chối bởi máy chủ"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "Tải khu vực ok, kích thước có thể chấp nhận được đến máy chủ"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "Nhấn vào đây để đóng hộp thoại và hủy bỏ tải"
 
 msgid "Click to download the currently selected area"
 msgstr "Nhấn vào đây để tải về các khu vực hiện đang được chọn"
 
-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> Không <strong> {0} </ strong> cũng <strong> {1} </ strong> cũng "
-"không<Strong> {2} </ strong> được kích hoạt. <br> Vui lòng chọn hoặc tải "
-"OSMDữ liệu, hoặc dữ liệu GPX, hoặc Notes, hoặc tất cả. </ Html>"
-
 msgid "Download referrers (parent relations)"
 msgstr "Tải referrers (quan hệ cha mẹ)"
 
@@ -8486,6 +8626,91 @@ msgstr "Chọn nếu các thành viên của một mối quan hệ cần đượ
 msgid "Download referrers (parent relations and ways)"
 msgstr "Tải referrers (quan hệ cha mẹ và cách)"
 
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "Nguồn gốc và các loại dữ liệu:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap dữ liệu"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "Chọn để tải dữ liệu OSM trong khu vực download được lựa chọn."
+
+msgid "Raw GPS data"
+msgstr "Raw GPS dữ liệu"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "Chọn để tải về dấu vết GPS trong khu vực download được lựa chọn."
+
+msgid "Select to download notes in the selected download area."
+msgstr "Chọn để tải về các ghi chú trong khu vực download được lựa chọn."
+
+msgid "Please select a download area first."
+msgstr "Hãy chọn một khu vực tải về đầu tiên."
+
+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> Không <strong> {0} </ strong> cũng <strong> {1} </ strong> cũng "
+"không<Strong> {2} </ strong> được kích hoạt. <br> Vui lòng chọn hoặc tải "
+"OSMDữ liệu, hoặc dữ liệu GPX, hoặc Notes, hoặc tất cả. </ Html>"
+
+msgid "No area selected yet"
+msgstr "Không có lựa chọn khu vực nào"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "Tải về diện tích quá lớn, có thể sẽ bị từ chối bởi máy chủ"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "Tải khu vực ok, kích thước có thể chấp nhận được đến máy chủ"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
+msgstr "lịch sử"
+
 msgid "Please select an item first"
 msgstr ""
 
@@ -8528,9 +8753,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -9131,6 +9353,18 @@ msgstr "Xác thực với tên người dùng và mật khẩu được cung c
 msgid "Cancel authentication"
 msgstr "Hủy xác thực"
 
+msgid "Question"
+msgstr "Câu hỏi"
+
+msgid "Message"
+msgstr "Message"
+
+msgid "Enter text"
+msgstr "Nhập văn bản"
+
+msgid "Installing plugins"
+msgstr "Cài đặt plugins"
+
 msgid "Downloading file"
 msgstr "Tải file"
 
@@ -9664,9 +9898,6 @@ msgstr "Chọn đối tượng để tải lên"
 msgid "Cancel uploading"
 msgstr "Hủy upload"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "giá trị bất ngờ cho chính '' {0} '' trong sở thích, có '' {1} ''"
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Đổ đầy một changeset và trở về Tải lên Dialog"
 
@@ -9747,6 +9978,191 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} đối tượng để xóa:"
 
+msgid "All Formats"
+msgstr "Tất cả định dạng"
+
+msgid "Could not export ''{0}''."
+msgstr "Không thể xuất '' {0} ''."
+
+msgid "Could not import ''{0}''."
+msgstr "Không thể nhập '' {0} ''."
+
+msgid "Could not import files."
+msgstr "Không thể nhập các tập tin."
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+"<html> Không thể đọc tập tin '' {0} '' <br> Lỗi là:. <br> {1} </ html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html> Không thể đọc các tập tin <br> Lỗi là:. <br> {0} </ html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON còn Files"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "Layer '' {0} '' không được hỗ trợ"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+"Lưu ý: GPL là không tương thích với giấy phép OSM Không tải lên GPL cấp "
+"phép.Bài hát.Chú ý: GPL không dùng  với bản quyền của OSM. Không tải lên các "
+"tracks có bản quyền GPL"
+
+msgid "GPS track description"
+msgstr "theo dõi GPS mô tả"
+
+msgid "Add author information"
+msgstr "Thêm thông tin tác giả"
+
+msgid "Real name"
+msgstr "tên Real"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "Copyright (URL)"
+
+msgid "Predefined"
+msgstr "Predefined"
+
+msgid "Copyright year"
+msgstr "Copyright năm"
+
+msgid "Keywords"
+msgstr "Từ khoá"
+
+msgid "Export options"
+msgstr "tùy chọn Export"
+
+msgid "Export and Save"
+msgstr "Xuất khẩu và Lưu"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"Lỗi trong khi xuất khẩu {0}: \n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "Chọn một giấy phép được xác định trước"
+
+msgid "GPX Files"
+msgstr "GPX Files"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "Phân tích dữ liệu cho lớp '' {0} '' thất bại"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+"Lỗi xảy ra khi phân tích dữ liệu GPX cho lớp '' {0} ''. Chỉ có một phần "
+"củaTập tin sẽ có sẵn."
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+"Lỗi xảy ra khi phân tích GPX tập tin '' {0} ''. Chỉ có một phần của tập tin "
+"sẽCó sẵn."
+
+msgid "Image Files"
+msgstr "Image Files"
+
+msgid "folder"
+msgstr "thư mục"
+
+msgid "Looking for image files"
+msgstr "Tìm kiếm các tập tin hình ảnh"
+
+msgid "No image files found."
+msgstr "Không có tập tin hình ảnh được tìm thấy."
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 Files"
+
+msgid "Coordinates imported: {0}"
+msgstr "tọa độ nhập khẩu: {0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "câu dạng sai: {0}"
+
+msgid "Checksum errors: {0}"
+msgstr "lỗi Checksum: {0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "câu Unknown: {0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "tọa độ Zero: {0}"
+
+msgid "NMEA import success:"
+msgstr "nhập khẩu NMEA thành công:"
+
+msgid "NMEA import failure!"
+msgstr "nhập khẩu NMEA thất bại!"
+
+msgid "Note Files"
+msgstr "Lưu ý Files"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM máy chủ tập tin nén bzip2"
+
+msgid "OsmChange File"
+msgstr "OsmChange File"
+
+msgid "File ''{0}'' does not exist."
+msgstr "File '' {0} '' không tồn tại."
+
+msgid "No data found in file {0}."
+msgstr "Không tìm thấy dữ liệu trong {0} tập tin."
+
+msgid "Open OsmChange file"
+msgstr "Mở tập tin OsmChange"
+
+msgid "OSM Server Files"
+msgstr "OSM chủ Files"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+"<html> Một lỗi xảy ra trong khi tiết kiệm <br> Lỗi là:. <br> {0} </ html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+"<Html> Một lỗi xảy ra trong khi khôi phục tập tin sao lưu. <br> ErrorLà: "
+"<br> {0} </ html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM máy chủ tập tin nén gzip"
+
+msgid "Invalid dataset"
+msgstr "bộ dữ liệu không hợp lệ"
+
+msgid "No data found for layer ''{0}''."
+msgstr "Không tìm thấy dữ liệu cho lớp '' {0} ''."
+
+msgid "No data found in file ''{0}''."
+msgstr "Không tìm thấy dữ liệu trong tập tin '' {0} ''."
+
+msgid "Open OSM file"
+msgstr "Mở tập tin OSM"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS Files (* .wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "không được hỗ trợ phiên bản WMS file; tìm thấy {0}, dự kiến ​​{1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9854,6 +10270,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr "Ẩn thư này và không bao giờ thấy nó một lần nữa"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "Không thể tạo thư mục {0}, autosave sẽ bị vô hiệu hóa"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "Không thể tạo tập tin {0}, tên tập tin khác sẽ được sử dụng"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "IOError trong khi tạo ra tập tin, tự động lưu sẽ bị bỏ qua: {0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "Không thể xóa file backup cũ {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "Công việc của bạn đã được lưu tự động."
+
+msgid "Restoring files"
+msgstr "Khôi phục các tập tin"
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr "Customize Color"
 
@@ -9953,6 +10396,9 @@ msgstr "Tổng số ghi chú:"
 msgid "Changes need uploading?"
 msgstr "Những thay đổi cần tải lên?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "khu vực bên ngoài tải về"
 
@@ -10028,6 +10474,9 @@ msgstr "lỗi Validation"
 msgid "No validation errors"
 msgstr "Không có lỗi xác nhận"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "Đặt WMS Bookmark"
 
@@ -10640,9 +11089,6 @@ msgstr "(URL là: "
 msgid "Select the map painting styles"
 msgstr "Chọn các kiểu vẽ bản đồ"
 
-msgid "loading style ''{0}''..."
-msgstr "bốc phong cách '' {0} '' ..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10653,6 +11099,9 @@ msgstr[0] ""
 "Có lỗi khi tải phong cách này. Chọn '' Thông tin '' từ bên phảiNhấp vào "
 "trình đơn để biết chi tiết."
 
+msgid "loading style ''{0}''..."
+msgstr "bốc phong cách '' {0} '' ..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "Không thể tải Mappaint phong cách từ '' {0} '' ngoại lệ là:. {1}"
 
@@ -11177,27 +11626,6 @@ msgstr "Download plugins"
 msgid "Icon paths:"
 msgstr "Biểu tượng con đường:"
 
-msgid "Short Description:"
-msgstr "Mô tả ngắn:"
-
-msgid "Author:"
-msgstr "Tác giả:"
-
-msgid "Webpage:"
-msgstr "trang web:"
-
-msgid "Description:"
-msgstr "Mô tả:"
-
-msgid "Version:"
-msgstr "Version:"
-
-msgid "Minimum JOSM Version:"
-msgstr "tối thiểu JOSM Version:"
-
-msgid "by {0}"
-msgstr "bởi {0}"
-
 msgid "Name (optional):"
 msgstr "Tên (không bắt buộc):"
 
@@ -12347,21 +12775,6 @@ msgstr ""
 "Cảnh báo:. định dạng bất hợp pháp của các mục trong danh sách phong cách '' "
 "{0} '' Chấn '' {1} ''"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM mặc định (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-"Phong cách nội bộ sẽ được sử dụng như là cơ sở cho phong cách thời gian chạy "
-"overlay switchable"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "các chính Potlatch 2 phong cách"
-
 msgid "Map Settings"
 msgstr "Map Settings"
 
@@ -12458,12 +12871,6 @@ msgstr ""
 "Cảnh báo:. định dạng bất hợp pháp của các mục trong danh sách định sẵn '' "
 "{0} '' Chấn '' {1} ''"
 
-msgid "Internal Preset"
-msgstr "nội bộ Preset"
-
-msgid "The default preset for JOSM"
-msgstr "cài sẵn mặc định cho JOSM"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "Plugin {0} vẫn yêu cầu của plugin này:"
@@ -12957,9 +13364,6 @@ msgstr "OSM password:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "Không thể lấy thông tin từ OSM quản lý có khả năng."
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "quản lý chứng chỉ hiện tại là loại '' {0} ''"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "Không thể lưu các thông tin OSM để ủy nhiệm quản lý."
 
@@ -12978,13 +13382,6 @@ msgid ""
 msgstr ""
 "Xác định số lượng ngày một lưu ý cần phải được đóng cửa để không cònTải về"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "Không thể lấy OAuth truy cập token từ người quản lý ủy nhiệm"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-"Không thể truy cập cửa hàng OAuth mã tự động cho các thông tin quản lý"
-
 msgid "Save to preferences"
 msgstr "Lưu vào sở thích"
 
@@ -13184,69 +13581,6 @@ msgstr ""
 "Cảnh báo:. định dạng bất hợp pháp của các mục trong danh sách quy tắc '' {0} "
 "'' Chấn '' {1} ''"
 
-msgid "Checks for errors on addresses"
-msgstr "Kiểm tra các lỗi trên các địa chỉ"
-
-msgid "Tag combinations"
-msgstr "Tag kết hợp"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "Kiểm tra mất tích tag hoặc nghi ngờ kết hợp"
-
-msgid "Deprecated features"
-msgstr "tính năng được tán"
-
-msgid "Checks for deprecated features"
-msgstr "Kiểm tra các tính năng lỗi thời"
-
-msgid "Geometry"
-msgstr "Geometry"
-
-msgid "Checks for geometry errors"
-msgstr "Kiểm tra các lỗi hình học"
-
-msgid "Checks for errors on highways"
-msgstr "Kiểm tra các lỗi trên đường cao tốc"
-
-msgid "Multiple values"
-msgstr "Nhiều giá trị"
-
-msgid "Checks for wrong multiple values"
-msgstr "Kiểm tra cho nhiều giá trị sai"
-
-msgid "Numeric values"
-msgstr "Các giá trị số"
-
-msgid "Checks for wrong numeric values"
-msgstr "Kiểm tra cho các giá trị số sai"
-
-msgid "Religion"
-msgstr "Tôn giáo"
-
-msgid "Checks for errors on religious objects"
-msgstr "Kiểm tra các lỗi trên đối tượng tôn giáo"
-
-msgid "Checks for errors on relations"
-msgstr "Kiểm tra các lỗi trên các mối quan hệ"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "thẻ không cần thiết"
-
-msgid "Checks for unnecessary tags"
-msgstr "Kiểm tra cho thẻ không cần thiết"
-
-msgid "Wikipedia"
-msgstr "Wikipedia"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "Kiểm tra cho các thẻ sai wikipedia"
-
 msgid "Tag checker rules"
 msgstr "quy tắc Tag checker"
 
@@ -13499,6 +13833,37 @@ msgstr "Tất cả các file (*. *)"
 msgid "Received error page:"
 msgstr "Nhận lỗi trang:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+"Preference khóa '' {0} '' không bao gồm '' {1} ''. Không thể khôi phục lại "
+"cửa sổHình học từ sở thích."
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+"Preference khóa '' {0} '' không cung cấp một giá trị int cho '' {1} ''. "
+"Chấn{2}. Không thể khôi phục lại vị trí cửa sổ từ sở thích."
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+". Không thể phân tích cú pháp trường '' {1} '' trong sở thích với phím '' "
+"{0} '' ngoại lệ là:{2}. Không thể khôi phục lại vị trí cửa sổ từ sở thích."
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+"Preference khóa '' {0} '' không tồn tại. Không thể khôi phục lại vị trí cửa "
+"sổTừ sở thích."
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "Bỏ qua hình học bị thay đổi: {0}"
+
 msgid "Min. latitude"
 msgstr "vĩ độ Min."
 
@@ -13634,9 +13999,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Xóa thành viên {0} được sử dụng bởi các mối quan hệ {1}"
 
-msgid "All Formats"
-msgstr "Tất cả định dạng"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "Tải điểm {0} đến {1} ..."
 
@@ -13759,96 +14121,6 @@ msgstr "Phân tích phản hồi từ máy chủ ..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "Unexpected phần tử XML với tên '' {0} ''"
 
-msgid "Could not export ''{0}''."
-msgstr "Không thể xuất '' {0} ''."
-
-msgid "Could not import ''{0}''."
-msgstr "Không thể nhập '' {0} ''."
-
-msgid "Could not import files."
-msgstr "Không thể nhập các tập tin."
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html> Không thể đọc tập tin '' {0} '' <br> Lỗi là:. <br> {1} </ html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html> Không thể đọc các tập tin <br> Lỗi là:. <br> {0} </ html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON còn Files"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "Layer '' {0} '' không được hỗ trợ"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-"Lưu ý: GPL là không tương thích với giấy phép OSM Không tải lên GPL cấp "
-"phép.Bài hát.Chú ý: GPL không dùng  với bản quyền của OSM. Không tải lên các "
-"tracks có bản quyền GPL"
-
-msgid "GPS track description"
-msgstr "theo dõi GPS mô tả"
-
-msgid "Add author information"
-msgstr "Thêm thông tin tác giả"
-
-msgid "Real name"
-msgstr "tên Real"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "Copyright (URL)"
-
-msgid "Predefined"
-msgstr "Predefined"
-
-msgid "Copyright year"
-msgstr "Copyright năm"
-
-msgid "Keywords"
-msgstr "Từ khoá"
-
-msgid "Export options"
-msgstr "tùy chọn Export"
-
-msgid "Export and Save"
-msgstr "Xuất khẩu và Lưu"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"Lỗi trong khi xuất khẩu {0}: \n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "Chọn một giấy phép được xác định trước"
-
-msgid "GPX Files"
-msgstr "GPX Files"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "Phân tích dữ liệu cho lớp '' {0} '' thất bại"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-"Lỗi xảy ra khi phân tích dữ liệu GPX cho lớp '' {0} ''. Chỉ có một phần "
-"củaTập tin sẽ có sẵn."
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-"Lỗi xảy ra khi phân tích GPX tập tin '' {0} ''. Chỉ có một phần của tập tin "
-"sẽCó sẵn."
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Parse error: cấu trúc tài liệu không hợp lệ cho tài liệu GPX."
 
@@ -13858,18 +14130,6 @@ msgstr "(ở dòng {0}, cột {1})"
 msgid "Unknown mode {0}."
 msgstr "chế độ Unknown {0}."
 
-msgid "Image Files"
-msgstr "Image Files"
-
-msgid "folder"
-msgstr "thư mục"
-
-msgid "Looking for image files"
-msgstr "Tìm kiếm các tập tin hình ảnh"
-
-msgid "No image files found."
-msgstr "Không có tập tin hình ảnh được tìm thấy."
-
 msgid "get number of unread messages"
 msgstr "có được số tin nhắn chưa đọc"
 
@@ -13921,36 +14181,9 @@ msgstr "Đang tìm nạp mối quan hệ với id {0} từ '' {1} ''"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Server trả lời bằng phản ứng mã 404 cho id {0}. Bỏ qua"
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 Files"
-
-msgid "Coordinates imported: {0}"
-msgstr "tọa độ nhập khẩu: {0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "câu dạng sai: {0}"
-
-msgid "Checksum errors: {0}"
-msgstr "lỗi Checksum: {0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "câu Unknown: {0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "tọa độ Zero: {0}"
-
-msgid "NMEA import success:"
-msgstr "nhập khẩu NMEA thành công:"
-
-msgid "NMEA import failure!"
-msgstr "nhập khẩu NMEA thất bại!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "Null pointer ngoại lệ, có thể một số thẻ mất tích."
 
-msgid "Note Files"
-msgstr "Lưu ý Files"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -14043,9 +14276,6 @@ msgstr "(Mã số = {0})"
 msgid "The server replied an error with code {0}."
 msgstr "Các máy chủ trả lời một lỗi với mã {0}."
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM máy chủ tập tin nén bzip2"
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr "Prolog của OsmChange tài liệu đã viết. Hãy viết một lần."
 
@@ -14053,18 +14283,6 @@ msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 "Prolog của tài liệu OsmChange không bằng văn bản. Vui lòng viết đầu tiên."
 
-msgid "OsmChange File"
-msgstr "OsmChange File"
-
-msgid "File ''{0}'' does not exist."
-msgstr "File '' {0} '' không tồn tại."
-
-msgid "No data found in file {0}."
-msgstr "Không tìm thấy dữ liệu trong {0} tập tin."
-
-msgid "Open OsmChange file"
-msgstr "Mở tập tin OsmChange"
-
 msgid "Unsupported version: {0}"
 msgstr "phiên bản được hỗ trợ: {0}"
 
@@ -14117,38 +14335,9 @@ msgstr "Không thể ký một kết nối HTTP với một tiêu đề OAuth x
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "giá trị bất ngờ cho sở thích '' {0} ''. Chấn '' {1} ''."
 
-msgid "OSM Server Files"
-msgstr "OSM chủ Files"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-"<html> Một lỗi xảy ra trong khi tiết kiệm <br> Lỗi là:. <br> {0} </ html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-"<Html> Một lỗi xảy ra trong khi khôi phục tập tin sao lưu. <br> ErrorLà: "
-"<br> {0} </ html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM máy chủ tập tin nén gzip"
-
 msgid "Parsing OSM history data ..."
 msgstr "Phân tích lịch sử dữ liệu OSM ..."
 
-msgid "Invalid dataset"
-msgstr "bộ dữ liệu không hợp lệ"
-
-msgid "No data found for layer ''{0}''."
-msgstr "Không tìm thấy dữ liệu cho lớp '' {0} ''."
-
-msgid "No data found in file ''{0}''."
-msgstr "Không tìm thấy dữ liệu trong tập tin '' {0} ''."
-
-msgid "Open OSM file"
-msgstr "Mở tập tin OSM"
-
 msgid "Reading was canceled"
 msgstr "Reading đã bị hủy bỏ"
 
@@ -14291,6 +14480,9 @@ msgstr "Liên hệ với Server ..."
 msgid "Downloading OSM notes..."
 msgstr "Tải ghi chú OSM ..."
 
+msgid "Downloading data..."
+msgstr "Tải dữ liệu ..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -14350,14 +14542,8 @@ msgstr "Unexpected id 0 cho OSM nguyên thủy được tìm thấy"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "Tải dữ liệu ..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS Files (* .wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "không được hỗ trợ phiên bản WMS file; tìm thấy {0}, dự kiến ​​{1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "giá trị bất ngờ cho chính '' {0} '' trong sở thích, có '' {1} ''"
 
 msgid "{0} bytes have been read"
 msgstr "{0} byte đã được đọc"
@@ -15437,37 +15623,6 @@ msgstr "Mở URL: {0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL không chứa {0} / {1} / {2}"
 
-msgid "Outdated Java version"
-msgstr "phiên bản Java lỗi thời"
-
-msgid "Update Java"
-msgstr "Update Java"
-
-msgid "You are running version {0} of Java."
-msgstr "Bạn đang chạy phiên bản {0} của Java."
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-"Phiên bản này không còn được hỗ trợ bởi {0} từ {1} và không được khuyến "
-"cáoĐể sử dụng."
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-"JOSM sẽ sớm ngừng làm việc với phiên bản này, chúng tôi khuyên bạn nên "
-"bạnCập nhật cho Java {0}."
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "Bạn có muốn cập nhật bây giờ?"
-
 msgid "reserved"
 msgstr "dành riêng"
 
@@ -15539,22 +15694,6 @@ msgstr "nhân vật đáng ngờ trong khóa:"
 msgid "Value is too long (max {0} characters):"
 msgstr "Giá trị quá dài (tối đa {0} ký tự):"
 
-msgid "Do you want to paste these tags?"
-msgstr "Bạn có muốn dán các thẻ này?"
-
-msgid "Clear buffer"
-msgstr "Clear đệm"
-
-msgid "Ignore warnings"
-msgstr "Bỏ qua cảnh báo"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-"<Html> <p> Xin lỗi, không thể để dán thẻ từ đệm. Nó khôngChứa bất kỳ đối "
-"tượng JOSM hoặc văn bản phù hợp. </ P> </ html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -15577,117 +15716,13 @@ msgid "day"
 msgid_plural "days"
 msgstr[0] "ngày"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-"Preference khóa '' {0} '' không bao gồm '' {1} ''. Không thể khôi phục lại "
-"cửa sổHình học từ sở thích."
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-"Preference khóa '' {0} '' không cung cấp một giá trị int cho '' {1} ''. "
-"Chấn{2}. Không thể khôi phục lại vị trí cửa sổ từ sở thích."
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-". Không thể phân tích cú pháp trường '' {1} '' trong sở thích với phím '' "
-"{0} '' ngoại lệ là:{2}. Không thể khôi phục lại vị trí cửa sổ từ sở thích."
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-"Preference khóa '' {0} '' không tồn tại. Không thể khôi phục lại vị trí cửa "
-"sổTừ sở thích."
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "Bỏ qua hình học bị thay đổi: {0}"
-
 msgid "Failed to load XML schema."
 msgstr "Không thể tải giản đồ XML."
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Bạn đã gặp phải một lỗi trong JOSM"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "Báo cáo Bug"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "Ngăn chặn các hộp thoại báo lỗi hơn nữa cho phiên này."
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "Cập nhật JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -19440,9 +19475,6 @@ msgstr "Ban Nội dung"
 msgid "notice"
 msgstr "thông báo"
 
-msgid "history"
-msgstr "lịch sử"
-
 msgid "nature"
 msgstr "thiên nhiên"
 
@@ -20022,6 +20054,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr "Nursing Home"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -22464,6 +22499,9 @@ msgstr "quà tặng / lưu niệm"
 msgid "Variety Store"
 msgstr "Variety Store"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "cược"
 
@@ -23342,6 +23380,78 @@ msgstr "thương mại"
 msgid "Industrial"
 msgstr "công nghiệp"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "Nhà xe"
 
@@ -24042,6 +24152,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -24794,6 +24907,9 @@ msgstr "Địa chính"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr "CRAIG - Auvergne 2013-25 cm"
 
@@ -24906,15 +25022,6 @@ msgstr "đồ cổ của Pegau - TK25 Messtischblatt (4839; 1909; PROJ.4-rect)"
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr "NRW-Atlas: Digitale GrundKarte 1: 5000"
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr "NRW-Atlas: Topographische Karte 1: 10000"
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr "Metropole Ruhr: Luftbilder (10 cm)"
 
@@ -33220,15 +33327,21 @@ msgstr "với giá trị trước đó (mtime không thay đổi)"
 msgid "Photo Geotagging Plugin"
 msgstr "Ảnh Geotagging Plugin"
 
-msgid "Writing position information to image files..."
-msgstr "Viết thông tin vị trí các tập tin ảnh ..."
-
 msgid "Could not read mtime."
 msgstr "Không thể đọc mtime."
 
 msgid "Could not write mtime."
 msgstr "Không thể ghi mtime."
 
+msgid "Writing position information to image files..."
+msgstr "Viết thông tin vị trí các tập tin ảnh ..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "File không thể xóa được!"
 
@@ -33736,6 +33849,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -33744,6 +33860,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/wae.po b/i18n/po/wae.po
index d78327f..31c9cd1 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\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,7 +15,7 @@ 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-08-13 05:09+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:08+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -54,54 +54,9 @@ msgstr ""
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr ""
 
-msgid "Executing platform startup hook"
-msgstr ""
-
-msgid "Building main menu"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr ""
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr ""
-
-msgid "Initializing presets"
-msgstr ""
-
-msgid "Initializing map styles"
-msgstr ""
-
-msgid "Loading imagery preferences"
-msgstr ""
-
-msgid "Updating user interface"
-msgstr ""
-
 msgid "Failed to save default preferences."
 msgstr ""
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr ""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -179,6 +134,9 @@ msgstr ""
 msgid "Click to abort launching external browsers"
 msgstr ""
 
+msgid "Warning"
+msgstr ""
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr ""
 
@@ -455,13 +413,10 @@ msgid ""
 "* Three nodes."
 msgstr ""
 
-msgid "Download from OSM..."
-msgstr ""
-
-msgid "Download map data from the OSM server."
+msgid "Download data"
 msgstr ""
 
-msgid "Please select a download area first."
+msgid "Download map data from a server of your choice"
 msgstr ""
 
 msgid ""
@@ -469,9 +424,6 @@ msgid ""
 "wish<br>to continue?</html>"
 msgstr ""
 
-msgid "Download data"
-msgstr ""
-
 msgid "Download notes in current view"
 msgstr ""
 
@@ -538,6 +490,9 @@ msgstr ""
 msgid "Export GPX file"
 msgstr ""
 
+msgid "Help"
+msgstr ""
+
 msgid "History"
 msgstr ""
 
@@ -1037,23 +992,6 @@ msgstr ""
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
 
-msgid "Download from Overpass API ..."
-msgstr ""
-
-msgid "Download map data from Overpass API server."
-msgstr ""
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr ""
 
@@ -2308,36 +2246,6 @@ msgstr ""
 msgid "Select relation"
 msgstr ""
 
-msgid "<not>"
-msgstr ""
-
-msgid "<or>"
-msgstr ""
-
-msgid "<xor>"
-msgstr ""
-
-msgid "<left parent>"
-msgstr ""
-
-msgid "<right parent>"
-msgstr ""
-
-msgid "<colon>"
-msgstr ""
-
-msgid "<equals>"
-msgstr ""
-
-msgid "<key>"
-msgstr ""
-
-msgid "<question mark>"
-msgstr ""
-
-msgid "<end-of-file>"
-msgstr ""
-
 msgid "Search..."
 msgstr ""
 
@@ -2624,86 +2532,6 @@ msgid_plural "Searching in {0} objects"
 msgstr[0] ""
 msgstr[1] ""
 
-msgctxt "search"
-msgid "CS"
-msgstr ""
-
-msgctxt "search"
-msgid "CI"
-msgstr ""
-
-msgctxt "search"
-msgid "RX"
-msgstr ""
-
-msgctxt "search"
-msgid "CSS"
-msgstr ""
-
-msgctxt "search"
-msgid "A"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr ""
-
-msgid "Expecting {0} after {1}"
-msgstr ""
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr ""
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr ""
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr ""
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr ""
-
-msgid "Failed to parse MapCSS selector"
-msgstr ""
-
-msgid "Unexpected token: {0}"
-msgstr ""
-
-msgid "Missing parameter for OR"
-msgstr ""
-
-msgid "Missing parameter for XOR"
-msgstr ""
-
-msgid "Missing operator for NOT"
-msgstr ""
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2721,9 +2549,6 @@ msgstr ""
 msgid "API Capabilities Violation"
 msgstr ""
 
-msgid "Cyclic dependency between relations:"
-msgstr ""
-
 msgid "Removed obsolete tags"
 msgstr ""
 
@@ -3070,57 +2895,12 @@ msgstr ""
 msgid "Automatic tag correction"
 msgstr ""
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr ""
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr ""
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr ""
-
-msgid "Unable to delete old backup file {0}"
-msgstr ""
-
-msgid "Your work has been saved automatically."
-msgstr ""
-
-msgid "Restoring files"
-msgstr ""
-
-msgid "Unable to delete backup file {0}"
-msgstr ""
-
-msgid "Unable to delete PID file {0}"
-msgstr ""
-
-msgid "Unable to delete archived backup file {0}"
-msgstr ""
-
 msgid "Illegal latitude value ''{0}''"
 msgstr ""
 
 msgid "Illegal longitude value ''{0}''"
 msgstr ""
 
-msgid "Question"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Enter text"
-msgstr ""
-
-msgid "Installing plugins"
-msgstr ""
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr ""
 
@@ -3210,6 +2990,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr ""
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr ""
 
@@ -3338,6 +3124,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr ""
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr ""
 
@@ -3352,6 +3147,9 @@ msgstr ""
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr ""
 
+msgid "Cyclic dependency between relations:"
+msgstr ""
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr ""
@@ -3388,15 +3186,68 @@ msgstr ""
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
 msgstr ""
 
-msgid "Error in filter"
+msgid "House {0}"
 msgstr ""
 
-msgid "<p><b>{0}</b> object hidden"
-msgid_plural "<p><b>{0}</b> objects hidden"
-msgstr[0] ""
+msgid "House number {0} at {1}"
+msgstr ""
+
+msgid "House number {0}"
+msgstr ""
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "highway"
+msgstr ""
+
+msgid "railway"
+msgstr ""
+
+msgid "waterway"
+msgstr ""
+
+msgid "landuse"
+msgstr ""
+
+msgid "building"
+msgstr ""
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "public transport"
+msgstr ""
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Changeset {0}"
+msgstr ""
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgstr ""
+
+msgid "Error in filter"
+msgstr ""
+
+msgid "<p><b>{0}</b> object hidden"
+msgid_plural "<p><b>{0}</b> objects hidden"
+msgstr[0] ""
 msgstr[1] ""
 
 msgid "<b>{0}</b> object disabled"
@@ -3422,21 +3273,11 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr ""
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "closedway"
 msgstr ""
 
@@ -3470,6 +3311,116 @@ msgstr ""
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr ""
 
+msgid "<not>"
+msgstr ""
+
+msgid "<or>"
+msgstr ""
+
+msgid "<xor>"
+msgstr ""
+
+msgid "<left parent>"
+msgstr ""
+
+msgid "<right parent>"
+msgstr ""
+
+msgid "<colon>"
+msgstr ""
+
+msgid "<equals>"
+msgstr ""
+
+msgid "<key>"
+msgstr ""
+
+msgid "<question mark>"
+msgstr ""
+
+msgid "<end-of-file>"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr ""
+
+msgid "Expecting {0} after {1}"
+msgstr ""
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr ""
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr ""
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr ""
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr ""
+
+msgid "Unexpected token: {0}"
+msgstr ""
+
+msgid "Missing parameter for OR"
+msgstr ""
+
+msgid "Missing parameter for XOR"
+msgstr ""
+
+msgid "Missing operator for NOT"
+msgstr ""
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr ""
+
+msgctxt "search"
+msgid "CS"
+msgstr ""
+
+msgctxt "search"
+msgid "CI"
+msgstr ""
+
+msgctxt "search"
+msgid "RX"
+msgstr ""
+
+msgctxt "search"
+msgid "CSS"
+msgstr ""
+
+msgctxt "search"
+msgid "A"
+msgstr ""
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3547,6 +3498,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr ""
+
+msgid "URL:"
+msgstr ""
+
+msgid "Author:"
+msgstr ""
+
+msgid "Webpage:"
+msgstr ""
+
+msgid "Description:"
+msgstr ""
+
+msgid "Version:"
+msgstr ""
+
+msgid "Minimum JOSM Version:"
+msgstr ""
+
+msgid "by {0}"
+msgstr ""
+
+msgid "JOSM default (MapCSS)"
+msgstr ""
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr ""
+
+msgid "Potlatch 2"
+msgstr ""
+
+msgid "the main Potlatch 2 style"
+msgstr ""
+
+msgid "Internal Preset"
+msgstr ""
+
+msgid "The default preset for JOSM"
+msgstr ""
+
+msgid "Addresses"
+msgstr ""
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr ""
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr ""
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr ""
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr ""
+
+msgid "Checks for wrong wikipedia tags"
+msgstr ""
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr ""
 
@@ -3731,9 +3797,6 @@ msgstr ""
 msgid "URL validator"
 msgstr ""
 
-msgid "Addresses"
-msgstr ""
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3918,9 +3981,6 @@ msgstr ""
 msgid "Checks for ways with identical consecutive nodes."
 msgstr ""
 
-msgid "Highways"
-msgstr ""
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4459,9 +4519,6 @@ msgstr ""
 msgid "boundary type {0}"
 msgstr ""
 
-msgid "building"
-msgstr ""
-
 msgid "area"
 msgstr ""
 
@@ -4573,47 +4630,16 @@ msgstr ""
 msgid "Do not show again (this session)"
 msgstr ""
 
-msgid "Do not show again (remembers choice)"
-msgstr ""
-
-msgid "incomplete"
-msgstr ""
-
-msgid "House {0}"
-msgstr ""
-
-msgid "House number {0} at {1}"
-msgstr ""
-
-msgid "House number {0}"
-msgstr ""
-
-msgid "highway"
-msgstr ""
-
-msgid "railway"
-msgstr ""
-
-msgid "waterway"
-msgstr ""
-
-msgid "landuse"
-msgstr ""
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Do not show again (remembers choice)"
+msgstr ""
 
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr ""
 
-msgid "public transport"
+msgid "Ignoring malformed file URL: \"{0}\""
 msgstr ""
 
-msgid "Changeset {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
 msgid "Precondition violation"
@@ -4704,6 +4730,66 @@ msgstr ""
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
 msgstr ""
 
+msgid "Outdated Java version"
+msgstr ""
+
+msgid "Update Java"
+msgstr ""
+
+msgid "You are running version {0} of Java."
+msgstr ""
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr ""
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr ""
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr ""
+
+msgid "Starting file watcher"
+msgstr ""
+
+msgid "Executing platform startup hook"
+msgstr ""
+
+msgid "Building main menu"
+msgstr ""
+
+msgid "Updating user interface"
+msgstr ""
+
+msgid "Initializing internal boundaries data"
+msgstr ""
+
+msgid "Initializing OSM API"
+msgstr ""
+
+msgid "Initializing internal traffic data"
+msgstr ""
+
+msgid "Initializing validator"
+msgstr ""
+
+msgid "Initializing presets"
+msgstr ""
+
+msgid "Initializing map styles"
+msgstr ""
+
+msgid "Loading imagery preferences"
+msgstr ""
+
 msgid "usage"
 msgstr ""
 
@@ -5165,6 +5251,79 @@ msgstr ""
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
 
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr ""
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr ""
+
 msgid "Conflict background: no conflict"
 msgstr ""
 
@@ -5859,6 +6018,20 @@ msgid ""
 "objects?"
 msgstr ""
 
+msgid "Do you want to paste these tags?"
+msgstr ""
+
+msgid "Clear buffer"
+msgstr ""
+
+msgid "Ignore warnings"
+msgstr ""
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6415,9 +6588,6 @@ msgstr ""
 msgid "Title:"
 msgstr ""
 
-msgid "URL:"
-msgstr ""
-
 msgid "Built-in Style, internal path:"
 msgstr ""
 
@@ -6528,9 +6698,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr ""
-
 msgid "Open a list of all relations."
 msgstr ""
 
@@ -7923,49 +8090,87 @@ msgstr ""
 msgid "Value for longitude in range [-180,180] required."
 msgstr ""
 
-msgid "Data Sources and Types:"
+msgid "Download as new layer"
 msgstr ""
 
-msgid "OpenStreetMap data"
+msgid ""
+"<html>Select to download data into a new data layer.<br>Unselect to download "
+"into the currently active data layer.</html>"
 msgstr ""
 
-msgid "Select to download OSM data in the selected download area."
+msgid "Open this dialog on startup"
 msgstr ""
 
-msgid "Raw GPS data"
+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 ""
 
-msgid "Select to download GPS traces in the selected download area."
+msgid "Zoom to downloaded data"
 msgstr ""
 
-msgid "Select to download notes in the selected download area."
+msgid "Select to zoom to entire newly downloaded data."
 msgstr ""
 
-msgid "Download as new layer"
+msgid ""
+"Use left click&drag to select area, arrows or right mouse button to scroll "
+"map, wheel or +/- to zoom."
 msgstr ""
 
-msgid ""
-"<html>Select to download data into a new data layer.<br>Unselect to download "
-"into the currently active data layer.</html>"
+msgid "Click to close the dialog and to abort downloading"
 msgstr ""
 
-msgid "Open this dialog on startup"
+msgid "Click to download the currently selected area"
+msgstr ""
+
+msgid "Download referrers (parent relations)"
+msgstr ""
+
+msgid "Download object"
+msgstr ""
+
+msgid "Start downloading"
 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>"
+"Select if the referrers of the object should be downloaded as well, "
+"i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Zoom to downloaded data"
+msgid "Select if the members of a relation should be downloaded as well"
 msgstr ""
 
-msgid "Select to zoom to entire newly downloaded data."
+msgid "Download referrers (parent relations and ways)"
+msgstr ""
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr ""
+
+msgid "OpenStreetMap data"
+msgstr ""
+
+msgid "Select to download OSM data in the selected download area."
+msgstr ""
+
+msgid "Raw GPS data"
+msgstr ""
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr ""
+
+msgid "Select to download notes in the selected download area."
+msgstr ""
+
+msgid "Please select a download area first."
 msgstr ""
 
 msgid ""
-"Use left click&drag to select area, arrows or right mouse button to scroll "
-"map, wheel or +/- to zoom."
+"<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 ""
 
 msgid "No area selected yet"
@@ -7977,36 +8182,47 @@ msgstr ""
 msgid "Download area ok, size probably acceptable to server"
 msgstr ""
 
-msgid "Click to close the dialog and to abort downloading"
+msgid "Download from Overpass API"
 msgstr ""
 
-msgid "Click to download the currently selected area"
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
 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>"
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
 msgstr ""
 
-msgid "Download referrers (parent relations)"
+msgid "Your saved queries:"
 msgstr ""
 
-msgid "Download object"
+msgid "Show/hide Overpass snippet list"
 msgstr ""
 
-msgid "Start downloading"
+msgid "Overpass query:"
 msgstr ""
 
 msgid ""
-"Select if the referrers of the object should be downloaded as well, "
-"i.e.,parent relations and for nodes, additionally, parent ways"
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
+msgid "Delete selected snippet"
 msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
+msgid "Edit selected snippet"
+msgstr ""
+
+msgid "history"
 msgstr ""
 
 msgid "Please select an item first"
@@ -8051,9 +8267,6 @@ msgstr ""
 msgid "Parse error"
 msgstr ""
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8591,6 +8804,18 @@ msgstr ""
 msgid "Cancel authentication"
 msgstr ""
 
+msgid "Question"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Enter text"
+msgstr ""
+
+msgid "Installing plugins"
+msgstr ""
+
 msgid "Downloading file"
 msgstr ""
 
@@ -9068,9 +9293,6 @@ msgstr ""
 msgid "Cancel uploading"
 msgstr ""
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr ""
 
@@ -9149,6 +9371,178 @@ msgid_plural "{0} objects to delete:"
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "All Formats"
+msgstr ""
+
+msgid "Could not export ''{0}''."
+msgstr ""
+
+msgid "Could not import ''{0}''."
+msgstr ""
+
+msgid "Could not import files."
+msgstr ""
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr ""
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid "GeoJSON Files"
+msgstr ""
+
+msgid "Layer ''{0}'' not supported"
+msgstr ""
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr ""
+
+msgid "GPS track description"
+msgstr ""
+
+msgid "Add author information"
+msgstr ""
+
+msgid "Real name"
+msgstr ""
+
+msgid "E-Mail"
+msgstr ""
+
+msgid "Copyright (URL)"
+msgstr ""
+
+msgid "Predefined"
+msgstr ""
+
+msgid "Copyright year"
+msgstr ""
+
+msgid "Keywords"
+msgstr ""
+
+msgid "Export options"
+msgstr ""
+
+msgid "Export and Save"
+msgstr ""
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+
+msgid "Choose a predefined license"
+msgstr ""
+
+msgid "GPX Files"
+msgstr ""
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr ""
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr ""
+
+msgid "Image Files"
+msgstr ""
+
+msgid "folder"
+msgstr ""
+
+msgid "Looking for image files"
+msgstr ""
+
+msgid "No image files found."
+msgstr ""
+
+msgid "NMEA-0183 Files"
+msgstr ""
+
+msgid "Coordinates imported: {0}"
+msgstr ""
+
+msgid "Malformed sentences: {0}"
+msgstr ""
+
+msgid "Checksum errors: {0}"
+msgstr ""
+
+msgid "Unknown sentences: {0}"
+msgstr ""
+
+msgid "Zero coordinates: {0}"
+msgstr ""
+
+msgid "NMEA import success:"
+msgstr ""
+
+msgid "NMEA import failure!"
+msgstr ""
+
+msgid "Note Files"
+msgstr ""
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr ""
+
+msgid "OsmChange File"
+msgstr ""
+
+msgid "File ''{0}'' does not exist."
+msgstr ""
+
+msgid "No data found in file {0}."
+msgstr ""
+
+msgid "Open OsmChange file"
+msgstr ""
+
+msgid "OSM Server Files"
+msgstr ""
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr ""
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr ""
+
+msgid "OSM Server Files gzip compressed"
+msgstr ""
+
+msgid "Invalid dataset"
+msgstr ""
+
+msgid "No data found for layer ''{0}''."
+msgstr ""
+
+msgid "No data found in file ''{0}''."
+msgstr ""
+
+msgid "Open OSM file"
+msgstr ""
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr ""
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr ""
+
 msgid "Native projections"
 msgstr ""
 
@@ -9256,6 +9650,33 @@ msgstr ""
 msgid "Hide this message and never show it again"
 msgstr ""
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr ""
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr ""
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr ""
+
+msgid "Unable to delete old backup file {0}"
+msgstr ""
+
+msgid "Your work has been saved automatically."
+msgstr ""
+
+msgid "Restoring files"
+msgstr ""
+
+msgid "Unable to delete backup file {0}"
+msgstr ""
+
+msgid "Unable to delete PID file {0}"
+msgstr ""
+
+msgid "Unable to delete archived backup file {0}"
+msgstr ""
+
 msgid "Customize Color"
 msgstr ""
 
@@ -9359,6 +9780,9 @@ msgstr ""
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr ""
 
@@ -9432,6 +9856,9 @@ msgstr ""
 msgid "No validation errors"
 msgstr ""
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr ""
 
@@ -10001,9 +10428,6 @@ msgstr ""
 msgid "Select the map painting styles"
 msgstr ""
 
-msgid "loading style ''{0}''..."
-msgstr ""
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10013,6 +10437,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr ""
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
 
@@ -10426,55 +10853,34 @@ msgid ""
 "''{1}''.<br>The token ist probably invalid.</html>"
 msgstr ""
 
-msgid ""
-"<html>The test failed because the server responded with an internal "
-"error.<br>JOSM could not decide whether the token is valid. Please try again "
-"later.</html>"
-msgstr ""
-
-msgid "Retrieving user info..."
-msgstr ""
-
-msgid "Expert mode"
-msgstr ""
-
-msgid "Close the preferences dialog and discard preference updates"
-msgstr ""
-
-msgid "Save the preferences and close the dialog"
-msgstr ""
-
-msgid "You have to restart JOSM for some settings to take effect."
-msgstr ""
-
-msgid "Would you like to restart now?"
-msgstr ""
-
-msgid "Download plugins"
+msgid ""
+"<html>The test failed because the server responded with an internal "
+"error.<br>JOSM could not decide whether the token is valid. Please try again "
+"later.</html>"
 msgstr ""
 
-msgid "Icon paths:"
+msgid "Retrieving user info..."
 msgstr ""
 
-msgid "Short Description:"
+msgid "Expert mode"
 msgstr ""
 
-msgid "Author:"
+msgid "Close the preferences dialog and discard preference updates"
 msgstr ""
 
-msgid "Webpage:"
+msgid "Save the preferences and close the dialog"
 msgstr ""
 
-msgid "Description:"
+msgid "You have to restart JOSM for some settings to take effect."
 msgstr ""
 
-msgid "Version:"
+msgid "Would you like to restart now?"
 msgstr ""
 
-msgid "Minimum JOSM Version:"
+msgid "Download plugins"
 msgstr ""
 
-msgid "by {0}"
+msgid "Icon paths:"
 msgstr ""
 
 msgid "Name (optional):"
@@ -11560,19 +11966,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "JOSM default (MapCSS)"
-msgstr ""
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr ""
-
-msgid "Potlatch 2"
-msgstr ""
-
-msgid "the main Potlatch 2 style"
-msgstr ""
-
 msgid "Map Settings"
 msgstr ""
 
@@ -11652,12 +12045,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Internal Preset"
-msgstr ""
-
-msgid "The default preset for JOSM"
-msgstr ""
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12123,9 +12510,6 @@ msgstr ""
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr ""
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12143,12 +12527,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr ""
 
@@ -12329,69 +12707,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr ""
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr ""
-
-msgid "Checks for wrong wikipedia tags"
-msgstr ""
-
 msgid "Tag checker rules"
 msgstr ""
 
@@ -12635,6 +12950,29 @@ msgstr ""
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr ""
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr ""
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr ""
 
@@ -12747,9 +13085,6 @@ msgstr ""
 msgid "Deleted member {0} is used by relation {1}"
 msgstr ""
 
-msgid "All Formats"
-msgstr ""
-
 msgid "Downloading points {0} to {1}..."
 msgstr ""
 
@@ -12852,86 +13187,6 @@ msgstr ""
 msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
-msgid "Could not export ''{0}''."
-msgstr ""
-
-msgid "Could not import ''{0}''."
-msgstr ""
-
-msgid "Could not import files."
-msgstr ""
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid "GeoJSON Files"
-msgstr ""
-
-msgid "Layer ''{0}'' not supported"
-msgstr ""
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr ""
-
-msgid "GPS track description"
-msgstr ""
-
-msgid "Add author information"
-msgstr ""
-
-msgid "Real name"
-msgstr ""
-
-msgid "E-Mail"
-msgstr ""
-
-msgid "Copyright (URL)"
-msgstr ""
-
-msgid "Predefined"
-msgstr ""
-
-msgid "Copyright year"
-msgstr ""
-
-msgid "Keywords"
-msgstr ""
-
-msgid "Export options"
-msgstr ""
-
-msgid "Export and Save"
-msgstr ""
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-
-msgid "Choose a predefined license"
-msgstr ""
-
-msgid "GPX Files"
-msgstr ""
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr ""
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr ""
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr ""
 
@@ -12941,18 +13196,6 @@ msgstr ""
 msgid "Unknown mode {0}."
 msgstr ""
 
-msgid "Image Files"
-msgstr ""
-
-msgid "folder"
-msgstr ""
-
-msgid "Looking for image files"
-msgstr ""
-
-msgid "No image files found."
-msgstr ""
-
 msgid "get number of unread messages"
 msgstr ""
 
@@ -13004,36 +13247,9 @@ msgstr ""
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr ""
 
-msgid "NMEA-0183 Files"
-msgstr ""
-
-msgid "Coordinates imported: {0}"
-msgstr ""
-
-msgid "Malformed sentences: {0}"
-msgstr ""
-
-msgid "Checksum errors: {0}"
-msgstr ""
-
-msgid "Unknown sentences: {0}"
-msgstr ""
-
-msgid "Zero coordinates: {0}"
-msgstr ""
-
-msgid "NMEA import success:"
-msgstr ""
-
-msgid "NMEA import failure!"
-msgstr ""
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr ""
 
-msgid "Note Files"
-msgstr ""
-
 msgid "OSM API"
 msgstr ""
 
@@ -13121,27 +13337,12 @@ msgstr ""
 msgid "The server replied an error with code {0}."
 msgstr ""
 
-msgid "OSM Server Files bzip2 compressed"
-msgstr ""
-
 msgid "Prolog of OsmChange document already written. Please write only once."
 msgstr ""
 
 msgid "Prolog of OsmChange document not written yet. Please write first."
 msgstr ""
 
-msgid "OsmChange File"
-msgstr ""
-
-msgid "File ''{0}'' does not exist."
-msgstr ""
-
-msgid "No data found in file {0}."
-msgstr ""
-
-msgid "Open OsmChange file"
-msgstr ""
-
 msgid "Unsupported version: {0}"
 msgstr ""
 
@@ -13187,35 +13388,9 @@ msgstr ""
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr ""
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr ""
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr ""
-
-msgid "OSM Server Files gzip compressed"
-msgstr ""
-
 msgid "Parsing OSM history data ..."
 msgstr ""
 
-msgid "Invalid dataset"
-msgstr ""
-
-msgid "No data found for layer ''{0}''."
-msgstr ""
-
-msgid "No data found in file ''{0}''."
-msgstr ""
-
-msgid "Open OSM file"
-msgstr ""
-
 msgid "Reading was canceled"
 msgstr ""
 
@@ -13347,6 +13522,9 @@ msgstr ""
 msgid "Downloading OSM notes..."
 msgstr ""
 
+msgid "Downloading data..."
+msgstr ""
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr ""
@@ -13404,13 +13582,7 @@ msgstr ""
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr ""
-
-msgid "WMS Files (*.wms)"
-msgstr ""
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
 msgstr ""
 
 msgid "{0} bytes have been read"
@@ -14346,33 +14518,6 @@ msgstr ""
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "Outdated Java version"
-msgstr ""
-
-msgid "Update Java"
-msgstr ""
-
-msgid "You are running version {0} of Java."
-msgstr ""
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr ""
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr ""
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14431,20 +14576,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr ""
-
-msgid "Clear buffer"
-msgstr ""
-
-msgid "Ignore warnings"
-msgstr ""
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr ""
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14468,109 +14599,13 @@ msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr ""
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr ""
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr ""
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr ""
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr ""
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18283,9 +18318,6 @@ msgstr ""
 msgid "notice"
 msgstr ""
 
-msgid "history"
-msgstr ""
-
 msgid "nature"
 msgstr ""
 
@@ -18865,6 +18897,9 @@ msgstr ""
 msgid "Nursing Home"
 msgstr ""
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr ""
 
@@ -21305,6 +21340,9 @@ msgstr ""
 msgid "Variety Store"
 msgstr ""
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr ""
 
@@ -22165,6 +22203,78 @@ msgstr ""
 msgid "Industrial"
 msgstr ""
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr ""
 
@@ -22860,6 +22970,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -23612,6 +23725,9 @@ msgstr ""
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23722,15 +23838,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31582,13 +31689,19 @@ msgstr ""
 msgid "Photo Geotagging Plugin"
 msgstr ""
 
+msgid "Could not read mtime."
+msgstr ""
+
+msgid "Could not write mtime."
+msgstr ""
+
 msgid "Writing position information to image files..."
 msgstr ""
 
-msgid "Could not read mtime."
+msgid "Retry"
 msgstr ""
 
-msgid "Could not write mtime."
+msgid "Unable to process file ''{0}'':"
 msgstr ""
 
 msgid "File could not be deleted!"
@@ -32086,6 +32199,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32094,6 +32210,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/zh_CN.po b/i18n/po/zh_CN.po
index 26e5040..65fa235 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-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2016-10-23 14:49+0000\n"
 "Last-Translator: mmyfl <Unknown>\n"
 "Language-Team: 汉语 <>\n"
@@ -18,7 +18,7 @@ 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-08-13 05:07+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:07+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: zh_CN\n"
 
@@ -58,54 +58,9 @@ msgstr "背景使用条款"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "当前平台不支持打开链接(“{0}”)"
 
-msgid "Executing platform startup hook"
-msgstr "执行平台启动挂钩中"
-
-msgid "Building main menu"
-msgstr "构建主菜单中"
-
-msgid "Help"
-msgstr "帮助(H)"
-
-msgid "Initializing internal boundaries data"
-msgstr ""
-
-msgid "Initializing OSM API"
-msgstr "初始化 OSM API 中"
-
-msgid "Initializing internal traffic data"
-msgstr ""
-
-msgid "Initializing validator"
-msgstr "初始化验证器中"
-
-msgid "Initializing presets"
-msgstr "初始化预设组合中"
-
-msgid "Initializing map styles"
-msgstr "初始化地图样式中"
-
-msgid "Loading imagery preferences"
-msgstr "加载图像首选项中"
-
-msgid "Updating user interface"
-msgstr "更新用户界面中"
-
 msgid "Failed to save default preferences."
 msgstr "无法保存默认首选项。"
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "忽略不正确的 URL:“{0}”"
-
-msgid "Warning"
-msgstr "警告"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "忽略格式不良的文件 URL:“{0}”"
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "参数“downloadgps”不能使用文件名或文件 URL"
-
 msgid "About"
 msgstr "关于"
 
@@ -181,6 +136,9 @@ msgstr "取消"
 msgid "Click to abort launching external browsers"
 msgstr "单击以中止外部浏览器的启动"
 
+msgid "Warning"
+msgstr "警告"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "请至少选择一个已上传的节点、路径或关系。"
 
@@ -459,23 +417,17 @@ msgstr ""
 "* 一条不自我交叉、至少有两个节点的路径;\n"
 "* 三个节点。"
 
-msgid "Download from OSM..."
-msgstr "从 OSM 下载..."
-
-msgid "Download map data from the OSM server."
-msgstr "从 OSM 服务器下载地图数据"
+msgid "Download data"
+msgstr "下载数据"
 
-msgid "Please select a download area first."
-msgstr "请先选择下载区域。"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr "<html>这个动作会发出 {0} 个<br>个别的下载要求。您是否希望<br>继续?</html>"
 
-msgid "Download data"
-msgstr "下载数据"
-
 msgid "Download notes in current view"
 msgstr "在当前视图中下载笔记"
 
@@ -542,6 +494,9 @@ msgstr "没有东西可输出。请先取得一些数据。"
 msgid "Export GPX file"
 msgstr "输出 GPX 文件"
 
+msgid "Help"
+msgstr "帮助(H)"
+
 msgid "History"
 msgstr "历史记录"
 
@@ -1049,23 +1004,6 @@ msgstr "<html>请确定所有选定的路径都朝着类似的方向<br>或是
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "请选择角度大约为 90 或 180 度的路径。"
 
-msgid "Download from Overpass API ..."
-msgstr "从 Overpass API 下载..."
-
-msgid "Download map data from Overpass API server."
-msgstr "从 Overpass API 服务器下载地图数据。"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr ""
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr ""
-
-msgid "Show/hide Overpass snippet list"
-msgstr ""
-
 msgid "Paste"
 msgstr "粘贴"
 
@@ -2308,36 +2246,6 @@ msgstr "选择关系(添加)"
 msgid "Select relation"
 msgstr "选择关系"
 
-msgid "<not>"
-msgstr "<非>"
-
-msgid "<or>"
-msgstr "<或>"
-
-msgid "<xor>"
-msgstr "<异或>"
-
-msgid "<left parent>"
-msgstr "<左父对象>"
-
-msgid "<right parent>"
-msgstr "<右父对象>"
-
-msgid "<colon>"
-msgstr "<冒号>"
-
-msgid "<equals>"
-msgstr "<等于>"
-
-msgid "<key>"
-msgstr "<设定键>"
-
-msgid "<question mark>"
-msgstr "<问号>"
-
-msgid "<end-of-file>"
-msgstr "<文件末尾>"
-
 msgid "Search..."
 msgstr "查找..."
 
@@ -2628,92 +2536,6 @@ msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
 msgstr[0] "在 {0} 个对象中搜索"
 
-msgctxt "search"
-msgid "CS"
-msgstr "区分大小写"
-
-msgctxt "search"
-msgid "CI"
-msgstr "不区分大小写"
-
-msgctxt "search"
-msgid "RX"
-msgstr "正则表达式搜索"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "所有元素"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"正则表达式“{0}”在 {1} 处解析错误,完整的错误信息:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"正则表达式“{0}”有解析错误,完整的错误信息:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "无法解析时间戳“{0}”"
-
-msgid "Expecting {0} after {1}"
-msgstr "{1} 后期望 {0}"
-
-msgid "Range of primitive ids expected"
-msgstr "预期元素 id 范围"
-
-msgid "Range of changeset ids expected"
-msgstr "预期修改集合 id 范围"
-
-msgid "Range of versions expected"
-msgstr "预期版本范围"
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "使用标签操作时,设定键不能为空。使用例子:key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "未知的原型类型:{0}。允许的数值为node、way或relation"
-
-msgid "Positive integer expected"
-msgstr "需要正整数"
-
-msgid "Range of numbers expected"
-msgstr "预计的数字范围"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "意外的令牌。预期 {0},发现 {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "解析 MapCSS 选择器失败"
-
-msgid "Unexpected token: {0}"
-msgstr "意外的令牌:{0}"
-
-msgid "Missing parameter for OR"
-msgstr "缺少 与 的参数"
-
-msgid "Missing parameter for XOR"
-msgstr "缺少 异或 的参数"
-
-msgid "Missing operator for NOT"
-msgstr "缺少 非 的运算子"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr "在已删除的对象 {1} 中自动截断标签的值“{0}”"
 
@@ -2731,9 +2553,6 @@ msgstr "路径 {1} 中的 {0} 个节点超过最大值。允许的节点数为 {
 msgid "API Capabilities Violation"
 msgstr "违反 API 能力"
 
-msgid "Cyclic dependency between relations:"
-msgstr "在关系间有循环相依性:"
-
 msgid "Removed obsolete tags"
 msgstr "已删除过时的标签"
 
@@ -3063,57 +2882,12 @@ msgstr "关系中的角色参照到"
 msgid "Automatic tag correction"
 msgstr "自动修正标签"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "无法创建目录 {0},自动保存将被禁用"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "无法创建文件 {0},将使用其他文件名"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "创建文件时发生 IO 错误,将跳过自动保存:{0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "无法删除旧备份文件 {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "您的工作已自动保存。"
-
-msgid "Restoring files"
-msgstr "正在还原文件"
-
-msgid "Unable to delete backup file {0}"
-msgstr "无法删除备份文件 {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "无法删除 PID 文件 {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "无法删除已归档的备份文件 {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "非法纬度值“{0}”"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "非法经度值“{0}”"
 
-msgid "Question"
-msgstr "问题"
-
-msgid "Message"
-msgstr "消息"
-
-msgid "Enter text"
-msgstr "输入文字"
-
-msgid "Installing plugins"
-msgstr "安装插件"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr "<html>设置文件要求追加首选项到<b>{0}</b>,<br/>但此时,它的默认值未知。<br/>请手动激活相应的功能,并重试导入。"
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "无法创建丢失的缓存目录:{0}"
 
@@ -3203,6 +2977,12 @@ msgstr "尝试启用 IPv6 网络,优先使用 IPv6(只适用于 IPv6 早期启
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "首选项 {0} 已经被删除,因为它已不再使用了。"
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr "<html>设置文件要求追加首选项到<b>{0}</b>,<br/>但此时,它的默认值未知。<br/>请手动激活相应的功能,并重试导入。"
+
 msgid "Metric"
 msgstr "公制"
 
@@ -3333,6 +3113,15 @@ msgstr "仅支持方形瓦片。服务器对 TileMatrix 标识符 {2} 返回了
 msgid "Note"
 msgstr "笔记"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr "无法从凭据管理器获取 OAuth 访问令牌"
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "目前的凭证管理程序类型为“{0}”"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr "无法将 OAuth 访问令牌存储至凭据管理器"
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "期望 ID > 0。收到 {0}。"
 
@@ -3347,6 +3136,9 @@ msgstr "不能将修改集合 ID > 0 指派给新的原型。修改集合 ID 的
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "ID = 0 的原型不能为不可视。"
 
+msgid "Cyclic dependency between relations:"
+msgstr "在关系间有循环相依性:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "无法将原型 {0} 添加到数据集合中,因为它已在其中"
@@ -3383,7 +3175,56 @@ msgstr "合并数据..."
 msgid "Test ''{0}'' completed in {1}"
 msgstr "测试“{0}”于 {1} 完成"
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "不完整"
+
+msgid "House {0}"
+msgstr "房屋 {0}"
+
+msgid "House number {0} at {1}"
+msgstr "房屋门牌号码 {0} 于 {1}"
+
+msgid "House number {0}"
+msgstr "房屋门牌号码 {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "节点"
+
+msgid "highway"
+msgstr "公路"
+
+msgid "railway"
+msgstr "铁路"
+
+msgid "waterway"
+msgstr "航道"
+
+msgid "landuse"
+msgstr "土地用途"
+
+msgid "building"
+msgstr "建筑"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} 个节点"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} 个成员"
+
+msgid "public transport"
+msgstr "公共交通"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "关系"
+
+msgid "Changeset {0}"
+msgstr "修改集合 {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr "<html>过滤器 <code>{0}</code> 错误:<br>{1}"
 
 msgid "Error in filter"
@@ -3415,18 +3256,10 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr "不能合并不同 id 的原型。这个 id 是 {0},另一个是 {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "节点"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "路径"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "关系"
-
 msgid "closedway"
 msgstr "封闭路径"
 
@@ -3460,6 +3293,122 @@ msgstr "不能比较 ID“{0}”和 ID“{1}”的原型。"
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "参数“{0}”不应使用范围 0..{1},却收到“{2}”"
 
+msgid "<not>"
+msgstr "<非>"
+
+msgid "<or>"
+msgstr "<或>"
+
+msgid "<xor>"
+msgstr "<异或>"
+
+msgid "<left parent>"
+msgstr "<左父对象>"
+
+msgid "<right parent>"
+msgstr "<右父对象>"
+
+msgid "<colon>"
+msgstr "<冒号>"
+
+msgid "<equals>"
+msgstr "<等于>"
+
+msgid "<key>"
+msgstr "<设定键>"
+
+msgid "<question mark>"
+msgstr "<问号>"
+
+msgid "<end-of-file>"
+msgstr "<文件末尾>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"正则表达式“{0}”在 {1} 处解析错误,完整的错误信息:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"正则表达式“{0}”有解析错误,完整的错误信息:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "无法解析时间戳“{0}”"
+
+msgid "Expecting {0} after {1}"
+msgstr "{1} 后期望 {0}"
+
+msgid "Range of primitive ids expected"
+msgstr "预期元素 id 范围"
+
+msgid "Range of changeset ids expected"
+msgstr "预期修改集合 id 范围"
+
+msgid "Range of versions expected"
+msgstr "预期版本范围"
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "使用标签操作时,设定键不能为空。使用例子:key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "未知的原型类型:{0}。允许的数值为node、way或relation"
+
+msgid "Positive integer expected"
+msgstr "需要正整数"
+
+msgid "Range of numbers expected"
+msgstr "预计的数字范围"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "解析 MapCSS 选择器失败"
+
+msgid "Unexpected token: {0}"
+msgstr "意外的令牌:{0}"
+
+msgid "Missing parameter for OR"
+msgstr "缺少 与 的参数"
+
+msgid "Missing parameter for XOR"
+msgstr "缺少 异或 的参数"
+
+msgid "Missing operator for NOT"
+msgstr "缺少 非 的运算子"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "意外的令牌。预期 {0},发现 {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "区分大小写"
+
+msgctxt "search"
+msgid "CI"
+msgstr "不区分大小写"
+
+msgctxt "search"
+msgid "RX"
+msgstr "正则表达式搜索"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "所有元素"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr "无法启用地图渲染类“{0}”,类未找到。"
 
@@ -3537,6 +3486,121 @@ msgstr "期望元素“{0}”,得到“{1}”"
 msgid "value expected"
 msgstr "预期值"
 
+msgid "Short Description:"
+msgstr "简要说明:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "作者:"
+
+msgid "Webpage:"
+msgstr "网址:"
+
+msgid "Description:"
+msgstr "说明:"
+
+msgid "Version:"
+msgstr "版本:"
+
+msgid "Minimum JOSM Version:"
+msgstr "最低 JOSM 版本:"
+
+msgid "by {0}"
+msgstr "由 {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM 默认(MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr "做为执行阶段可切换覆盖样式基础的内部样式"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "Potlatch 2 的主样式"
+
+msgid "Internal Preset"
+msgstr "内部预设组合"
+
+msgid "The default preset for JOSM"
+msgstr "JOSM 的预设组合"
+
+msgid "Addresses"
+msgstr "地址"
+
+msgid "Checks for errors on addresses"
+msgstr "检查地址错误"
+
+msgid "Tag combinations"
+msgstr "标签组合"
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr "检查缺漏标签或可疑标签组合"
+
+msgid "Deprecated features"
+msgstr "不建议使用的特征"
+
+msgid "Checks for deprecated features"
+msgstr "检查不建议使用的特征"
+
+msgid "Geometry"
+msgstr "几何"
+
+msgid "Checks for geometry errors"
+msgstr "检查几何错误"
+
+msgid "Highways"
+msgstr "公路"
+
+msgid "Checks for errors on highways"
+msgstr "检查道路错误"
+
+msgid "Multiple values"
+msgstr "多重值"
+
+msgid "Checks for wrong multiple values"
+msgstr "检查错误的多重值"
+
+msgid "Numeric values"
+msgstr "数值"
+
+msgid "Checks for wrong numeric values"
+msgstr "检查数值错误"
+
+msgid "Religion"
+msgstr "宗教"
+
+msgid "Checks for errors on religious objects"
+msgstr "检查宗教设施错误"
+
+msgid "Relations"
+msgstr "关系"
+
+msgid "Checks for errors on relations"
+msgstr "检查关系错误"
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr "不必要的标签"
+
+msgid "Checks for unnecessary tags"
+msgstr "检查不必要的标签"
+
+msgid "Wikipedia"
+msgstr "维基百科"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "检查错误的维基百科标签"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM 投影(''+proj=utm'')需要“+zone=...”参数。"
 
@@ -3723,9 +3787,6 @@ msgstr "URL 包含无效分段:{0}"
 msgid "URL validator"
 msgstr "URL 验证器"
 
-msgid "Addresses"
-msgstr "地址"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr "检查地址和相关街道关系中的错误。"
 
@@ -3910,9 +3971,6 @@ msgstr "重复的路径节点"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "检查是否有相同连续节点的路径。"
 
-msgid "Highways"
-msgstr "公路"
-
 msgid "Performs semantic checks on highways."
 msgstr "在公路上执行语义检查。"
 
@@ -4454,9 +4512,6 @@ msgstr "水路类型 {0}"
 msgid "boundary type {0}"
 msgstr "边界类型 {0}"
 
-msgid "building"
-msgstr "建筑"
-
 msgid "area"
 msgstr "区域"
 
@@ -4571,43 +4626,14 @@ msgstr "不要再显示(此会话)"
 msgid "Do not show again (remembers choice)"
 msgstr "不要再显示(记住选择)"
 
-msgid "incomplete"
-msgstr "不完整"
-
-msgid "House {0}"
-msgstr "房屋 {0}"
-
-msgid "House number {0} at {1}"
-msgstr "房屋门牌号码 {0} 于 {1}"
-
-msgid "House number {0}"
-msgstr "房屋门牌号码 {0}"
-
-msgid "highway"
-msgstr "公路"
-
-msgid "railway"
-msgstr "铁路"
-
-msgid "waterway"
-msgstr "航道"
-
-msgid "landuse"
-msgstr "土地用途"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} 个节点"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} 个成员"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "忽略不正确的 URL:“{0}”"
 
-msgid "public transport"
-msgstr "公共交通"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "忽略格式不良的文件 URL:“{0}”"
 
-msgid "Changeset {0}"
-msgstr "修改集合 {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "参数“downloadgps”不能使用文件名或文件 URL"
 
 msgid "Precondition violation"
 msgstr "违反先决条件"
@@ -4657,44 +4683,104 @@ msgstr "超出带宽限制"
 msgid "Communication with OSM server failed"
 msgstr "与 OSM 连接失败"
 
-msgid "Authentication failed"
-msgstr "验证失败"
+msgid "Authentication failed"
+msgstr "验证失败"
+
+msgid "Unknown host"
+msgstr "不明的主机"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "对象已删除"
+
+msgid "Show help information"
+msgstr "显示帮助信息"
+
+msgid "Downloading \"Message of the day\""
+msgstr "正在下载“当天的信息”"
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr "无法读取今日消息。意外为:{0}"
+
+msgid "Message of the day not available"
+msgstr "无法取得当天的信息。"
+
+msgid "Click to close the dialog"
+msgstr "点击以关闭对话框"
+
+msgid "Imagery offset"
+msgstr "图像偏移"
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr "图像(I)"
+
+msgctxt "layer"
+msgid "Offset"
+msgstr "偏移"
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr "参数“{0}”应为非空的数值,得到“{1}”"
+
+msgid "Outdated Java version"
+msgstr "过时的 Java 版本"
+
+msgid "Update Java"
+msgstr "升级 Java"
+
+msgid "You are running version {0} of Java."
+msgstr "您正在运行 Java 版本 {0}。"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr "从 {1} 起,此版本不再受 {0} 支持,因此不推荐使用。"
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr "JOSM 即将停止支持这一 Java 版本,强烈建议您升级至 Java {0}。"
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
+
+msgid "Would you like to update now ?"
+msgstr "您希望立即更新吗?"
 
-msgid "Unknown host"
-msgstr "不明的主机"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "对象已删除"
+msgid "Executing platform startup hook"
+msgstr "执行平台启动挂钩中"
 
-msgid "Show help information"
-msgstr "显示帮助信息"
+msgid "Building main menu"
+msgstr "构建主菜单中"
 
-msgid "Downloading \"Message of the day\""
-msgstr "正在下载“当天的信息”"
+msgid "Updating user interface"
+msgstr "更新用户界面中"
 
-msgid "Failed to read MOTD. Exception was: {0}"
-msgstr "无法读取今日消息。意外为:{0}"
+msgid "Initializing internal boundaries data"
+msgstr ""
 
-msgid "Message of the day not available"
-msgstr "无法取得当天的信息。"
+msgid "Initializing OSM API"
+msgstr "初始化 OSM API 中"
 
-msgid "Click to close the dialog"
-msgstr "点击以关闭对话框"
+msgid "Initializing internal traffic data"
+msgstr ""
 
-msgid "Imagery offset"
-msgstr "图像偏移"
+msgid "Initializing validator"
+msgstr "初始化验证器中"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr "图像(I)"
+msgid "Initializing presets"
+msgstr "初始化预设组合中"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr "偏移"
+msgid "Initializing map styles"
+msgstr "初始化地图样式中"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr "参数“{0}”应为非空的数值,得到“{1}”"
+msgid "Loading imagery preferences"
+msgstr "加载图像首选项中"
 
 msgid "usage"
 msgstr "用法"
@@ -5161,6 +5247,79 @@ msgstr "请输入瓦片索引"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "在指定的缩放等级中,目前的数值是无法使用的瓦片索引"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "您遇到了 JOSM 程序缺陷"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "报告程序缺陷"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr "阻止此会话再显示该错误对话框。"
+
+msgid "Ignore this error."
+msgstr ""
+
+msgid "Include the system status report."
+msgstr ""
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr ""
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "升级 JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "冲突背景:没有冲突"
 
@@ -5853,6 +6012,20 @@ msgid ""
 "objects?"
 msgstr "复制的资料包含不完整的对象。在粘贴时会删除不完整的对象。您想要粘贴没有不完整对象的数据吗?"
 
+msgid "Do you want to paste these tags?"
+msgstr "您想要粘贴这些标签吗?"
+
+msgid "Clear buffer"
+msgstr "清空缓存"
+
+msgid "Ignore warnings"
+msgstr "忽略警告"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr "<html><p>对不起,无法解析缓存中的标签,缓存中没有 JOSM 对象或适当的文本。</p></html>"
+
 msgid "For selected objects only"
 msgstr "只用于选定的对象"
 
@@ -6421,9 +6594,6 @@ msgstr "来源"
 msgid "Title:"
 msgstr "标题:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "内建样式,内部路径:"
 
@@ -6537,9 +6707,6 @@ msgstr ""
 "指定了无效的 ID 列表\n"
 "无法继续。"
 
-msgid "Relations"
-msgstr "关系"
-
 msgid "Open a list of all relations."
 msgstr "打开所有关系的列表。"
 
@@ -7928,24 +8095,6 @@ msgstr "纬度的数值范围必须为 [-90,90]。"
 msgid "Value for longitude in range [-180,180] required."
 msgstr "经度的数值范围必须为 [-180,180]。"
 
-msgid "Data Sources and Types:"
-msgstr "数据来源和类型:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap 数据"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "选择以下载选定下载区域中的 OSM 数据。"
-
-msgid "Raw GPS data"
-msgstr "原始 GPS 数据"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "选择以下载选定下载区域中的 GPS 轨迹。"
-
-msgid "Select to download notes in the selected download area."
-msgstr "选择下载选定区域内的笔记"
-
 msgid "Download as new layer"
 msgstr "下载为新图层"
 
@@ -7973,29 +8122,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr "使用左键点击并拖拉以选择区域​​,箭头或鼠标右键以滚动地图,滚轮或 +/- 以缩放。"
 
-msgid "No area selected yet"
-msgstr "尚未选定区域"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "下载区域太大;可能会被服务器拒绝"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "下载区域合适,大小应该会被服务器接受"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "点击以关闭此对话框,并放弃下载"
 
 msgid "Click to download the currently selected area"
 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 "下载参照者(父关系)"
 
@@ -8010,11 +8142,95 @@ msgid ""
 "i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr "如果对象的参照者也应被下载(即父关系,还有节点的父路径),则选择"
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "如果一个关系的成员也应被下载,则选择"
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "如果一个关系的成员也应被下载,则选择"
+
+msgid "Download referrers (parent relations and ways)"
+msgstr "下载参照者(父关系和路径)"
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "数据来源和类型:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap 数据"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "选择以下载选定下载区域中的 OSM 数据。"
+
+msgid "Raw GPS data"
+msgstr "原始 GPS 数据"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "选择以下载选定下载区域中的 GPS 轨迹。"
+
+msgid "Select to download notes in the selected download area."
+msgstr "选择下载选定区域内的笔记"
+
+msgid "Please select a download area first."
+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 "No area selected yet"
+msgstr "尚未选定区域"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "下载区域太大;可能会被服务器拒绝"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "下载区域合适,大小应该会被服务器接受"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr ""
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr ""
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr ""
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "下载参照者(父关系和路径)"
+msgid "history"
+msgstr "历史"
 
 msgid "Please select an item first"
 msgstr ""
@@ -8058,9 +8274,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "解析错误"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8615,6 +8828,18 @@ msgstr "以指定的用户名和密码进行验证"
 msgid "Cancel authentication"
 msgstr "取消验证"
 
+msgid "Question"
+msgstr "问题"
+
+msgid "Message"
+msgstr "消息"
+
+msgid "Enter text"
+msgstr "输入文字"
+
+msgid "Installing plugins"
+msgstr "安装插件"
+
 msgid "Downloading file"
 msgstr "正在下载文件"
 
@@ -9098,9 +9323,6 @@ msgstr "选择要上传的对象"
 msgid "Cancel uploading"
 msgstr "正在取消上传"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr "首选项中意外的键\"{0}\"值\"{1}\""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "填满一个修改集合并回到上传对话框"
 
@@ -9175,6 +9397,180 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} 个对象要删除:"
 
+msgid "All Formats"
+msgstr "所有的格式"
+
+msgid "Could not export ''{0}''."
+msgstr "无法导出“{0}”。"
+
+msgid "Could not import ''{0}''."
+msgstr "无法导入“{0}”。"
+
+msgid "Could not import files."
+msgstr "无法导入文件。"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>无法读取文件“{0}”。<br>错误为:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>无法读取文件。<br>错误为:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON 文件"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "不支持图层“{0}”"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr "注意:GPL 与 OSM 许可并不兼容,请勿上传 GPL 许可的轨迹。"
+
+msgid "GPS track description"
+msgstr "GPS 轨迹描述"
+
+msgid "Add author information"
+msgstr "添加作者信息"
+
+msgid "Real name"
+msgstr "真实姓名"
+
+msgid "E-Mail"
+msgstr "电子邮件"
+
+msgid "Copyright (URL)"
+msgstr "版权(URL)"
+
+msgid "Predefined"
+msgstr "预定义的"
+
+msgid "Copyright year"
+msgstr "版权年份"
+
+msgid "Keywords"
+msgstr "关键词"
+
+msgid "Export options"
+msgstr "导出选项"
+
+msgid "Export and Save"
+msgstr "导出并保存"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"导出时发生错误 {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "选择一个预定义的许可"
+
+msgid "GPX Files"
+msgstr "GPX 文件"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "解析图层“{0}”的数据时失败"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr "为图层“{0}”解析 GPX 数据时发生错误。只有文件的一部分将可用。"
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr "解析 GPX 文件“{0}”时发生错误。只有文件的一部分将可用。"
+
+msgid "Image Files"
+msgstr "图像文件"
+
+msgid "folder"
+msgstr "文件夹"
+
+msgid "Looking for image files"
+msgstr "寻找图像文件"
+
+msgid "No image files found."
+msgstr "找不到图像文件。"
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 文件"
+
+msgid "Coordinates imported: {0}"
+msgstr "导入的坐标:{0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "格式错误的语句:{0}"
+
+msgid "Checksum errors: {0}"
+msgstr "校验错误:{0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "未知语句:{0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "零坐标:{0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA 导入成功:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA 导入失败!"
+
+msgid "Note Files"
+msgstr "笔记文件"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM 服务器文件(bzip2 压缩)"
+
+msgid "OsmChange File"
+msgstr "OsmChange 文件"
+
+msgid "File ''{0}'' does not exist."
+msgstr "文件“{0}”不存在。"
+
+msgid "No data found in file {0}."
+msgstr "没有在文件 {0} 中找到数据。"
+
+msgid "Open OsmChange file"
+msgstr "打开 OsmChange 文件"
+
+msgid "OSM Server Files"
+msgstr "OSM 服务器文件"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>在保存时发生错误。<br>错误为:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr "<html>从备份文件还原时发生错误。<br>错误为:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM 服务器文件(gzip 压缩)"
+
+msgid "Invalid dataset"
+msgstr "无效的数据集合"
+
+msgid "No data found for layer ''{0}''."
+msgstr "图层“{0}”中未找到数据。"
+
+msgid "No data found in file ''{0}''."
+msgstr "文件“{0}”中未找到数据。"
+
+msgid "Open OSM file"
+msgstr "打开 OSM 文件"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS 文件(*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "不支持的 WMS 文件版本;发现 {0},应为 {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9282,6 +9678,33 @@ msgstr "不再显示此消息"
 msgid "Hide this message and never show it again"
 msgstr "隐藏此消息,并不再显示"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "无法创建目录 {0},自动保存将被禁用"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "无法创建文件 {0},将使用其他文件名"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "创建文件时发生 IO 错误,将跳过自动保存:{0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "无法删除旧备份文件 {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "您的工作已自动保存。"
+
+msgid "Restoring files"
+msgstr "正在还原文件"
+
+msgid "Unable to delete backup file {0}"
+msgstr "无法删除备份文件 {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "无法删除 PID 文件 {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "无法删除已归档的备份文件 {0}"
+
 msgid "Customize Color"
 msgstr "自定义颜色"
 
@@ -9381,6 +9804,9 @@ msgstr "总笔记:"
 msgid "Changes need uploading?"
 msgstr "需要上传修改吗?"
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "超出下载的区域"
 
@@ -9453,6 +9879,9 @@ msgstr "验证错误"
 msgid "No validation errors"
 msgstr "没有验证错误"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "设定 WMS 书签"
 
@@ -10035,9 +10464,6 @@ msgstr "(URL 为: "
 msgid "Select the map painting styles"
 msgstr "选择地图的绘画样式"
 
-msgid "loading style ''{0}''..."
-msgstr "加载样式“{0}”中..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10046,6 +10472,9 @@ msgid_plural ""
 "right click menu for details."
 msgstr[0] "加载这种样式时发生了 {0} 个错误。查看详细信息,请从右键菜单中选择“信息”。"
 
+msgid "loading style ''{0}''..."
+msgstr "加载样式“{0}”中..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "从“{0}”加载地图绘画风格失败。异常为:{1}"
 
@@ -10522,27 +10951,6 @@ msgstr "下载插件"
 msgid "Icon paths:"
 msgstr "图标路径:"
 
-msgid "Short Description:"
-msgstr "简要说明:"
-
-msgid "Author:"
-msgstr "作者:"
-
-msgid "Webpage:"
-msgstr "网址:"
-
-msgid "Description:"
-msgstr "说明:"
-
-msgid "Version:"
-msgstr "版本:"
-
-msgid "Minimum JOSM Version:"
-msgstr "最低 JOSM 版本:"
-
-msgid "by {0}"
-msgstr "由 {0}"
-
 msgid "Name (optional):"
 msgstr "名称(可选):"
 
@@ -11632,19 +12040,6 @@ msgstr "<html>无法从这里加载样式来源列表:<br>“{0}”。<br><br>
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "警告:样式列表“{0}”中项目的格式不正确。得到“{1}”。"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM 默认(MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr "做为执行阶段可切换覆盖样式基础的内部样式"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "Potlatch 2 的主样式"
-
 msgid "Map Settings"
 msgstr "地图设定值"
 
@@ -11734,12 +12129,6 @@ msgstr "<html>无法从下列地址加载预设组合来源列表<br>“{0}”
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr "警告:预设组合列表“{0}”的项目格式无效。得到“{1}”"
 
-msgid "Internal Preset"
-msgstr "内部预设组合"
-
-msgid "The default preset for JOSM"
-msgstr "JOSM 的预设组合"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] "插件 {0} 仍需要这 {1} 个插件:"
@@ -12208,9 +12597,6 @@ msgstr "OSM 密码:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr "无法从凭据管理器获取 OSM 凭据。"
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "目前的凭证管理程序类型为“{0}”"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr "无法将 OSM 凭据保存至凭据管理器。"
 
@@ -12228,12 +12614,6 @@ msgid ""
 "downloaded"
 msgstr "设定下载未处理笔记的最长追溯天数:"
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr "无法从凭据管理器获取 OAuth 访问令牌"
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr "无法将 OAuth 访问令牌存储至凭据管理器"
-
 msgid "Save to preferences"
 msgstr "保存到首选项"
 
@@ -12415,69 +12795,6 @@ msgstr "<html>从 {0} 加载规则源失败。<br><br>详细信息(未翻译):
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr "警告:规则列表“{0}”中条目格式非法。得到“{1}”"
 
-msgid "Checks for errors on addresses"
-msgstr "检查地址错误"
-
-msgid "Tag combinations"
-msgstr "标签组合"
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr "检查缺漏标签或可疑标签组合"
-
-msgid "Deprecated features"
-msgstr "不建议使用的特征"
-
-msgid "Checks for deprecated features"
-msgstr "检查不建议使用的特征"
-
-msgid "Geometry"
-msgstr "几何"
-
-msgid "Checks for geometry errors"
-msgstr "检查几何错误"
-
-msgid "Checks for errors on highways"
-msgstr "检查道路错误"
-
-msgid "Multiple values"
-msgstr "多重值"
-
-msgid "Checks for wrong multiple values"
-msgstr "检查错误的多重值"
-
-msgid "Numeric values"
-msgstr "数值"
-
-msgid "Checks for wrong numeric values"
-msgstr "检查数值错误"
-
-msgid "Religion"
-msgstr "宗教"
-
-msgid "Checks for errors on religious objects"
-msgstr "检查宗教设施错误"
-
-msgid "Checks for errors on relations"
-msgstr "检查关系错误"
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr "不必要的标签"
-
-msgid "Checks for unnecessary tags"
-msgstr "检查不必要的标签"
-
-msgid "Wikipedia"
-msgstr "维基百科"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "检查错误的维基百科标签"
-
 msgid "Tag checker rules"
 msgstr "标签检查器规则"
 
@@ -12719,6 +13036,29 @@ msgstr "所有文件(*.*)"
 msgid "Received error page:"
 msgstr "收到错误页:"
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr "首选项的设定键“{0}”不包含“{1}”。不能从首选项中回复窗口位置大小。"
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr "首选项的设定键“{0}”没有提供“{1}”的整数值。得到“{2}”。不能从首选项中恢复窗口位置大小。"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr "无法解析首选项的设定键“{0}”的栏位“{1}”。异常为:{2}。不能从首选项中恢复窗口位置大小。"
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr "首选项的设定键“{0}”不存在。不能从首选项中恢复窗口位置大小。"
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr "忽略格式错误的几何形状:{0}"
+
 msgid "Min. latitude"
 msgstr "最小纬度"
 
@@ -12831,9 +13171,6 @@ msgstr "外部 id“{0}”的关系包含了缺失的外部 id“{1}”的原型
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "删除的成员 {0} 正由关系 {1} 使用"
 
-msgid "All Formats"
-msgstr "所有的格式"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "正在下载点 {0} 到 {1}..."
 
@@ -12936,88 +13273,6 @@ msgstr "正在分析服务器的回应..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "XML 元素意外名称“{0}”"
 
-msgid "Could not export ''{0}''."
-msgstr "无法导出“{0}”。"
-
-msgid "Could not import ''{0}''."
-msgstr "无法导入“{0}”。"
-
-msgid "Could not import files."
-msgstr "无法导入文件。"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>无法读取文件“{0}”。<br>错误为:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>无法读取文件。<br>错误为:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON 文件"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "不支持图层“{0}”"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr "注意:GPL 与 OSM 许可并不兼容,请勿上传 GPL 许可的轨迹。"
-
-msgid "GPS track description"
-msgstr "GPS 轨迹描述"
-
-msgid "Add author information"
-msgstr "添加作者信息"
-
-msgid "Real name"
-msgstr "真实姓名"
-
-msgid "E-Mail"
-msgstr "电子邮件"
-
-msgid "Copyright (URL)"
-msgstr "版权(URL)"
-
-msgid "Predefined"
-msgstr "预定义的"
-
-msgid "Copyright year"
-msgstr "版权年份"
-
-msgid "Keywords"
-msgstr "关键词"
-
-msgid "Export options"
-msgstr "导出选项"
-
-msgid "Export and Save"
-msgstr "导出并保存"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"导出时发生错误 {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "选择一个预定义的许可"
-
-msgid "GPX Files"
-msgstr "GPX 文件"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "解析图层“{0}”的数据时失败"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr "为图层“{0}”解析 GPX 数据时发生错误。只有文件的一部分将可用。"
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr "解析 GPX 文件“{0}”时发生错误。只有文件的一部分将可用。"
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "分析错误:GPX 文件有无效的文件结构"
 
@@ -13027,18 +13282,6 @@ msgstr "(在第 {0} 行,第 {1} 列)"
 msgid "Unknown mode {0}."
 msgstr "未知模式 {0}。"
 
-msgid "Image Files"
-msgstr "图像文件"
-
-msgid "folder"
-msgstr "文件夹"
-
-msgid "Looking for image files"
-msgstr "寻找图像文件"
-
-msgid "No image files found."
-msgstr "找不到图像文件。"
-
 msgid "get number of unread messages"
 msgstr "获取未读消息数"
 
@@ -13088,36 +13331,9 @@ msgstr "从“{1}”合并 id {0} 的关系"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "服务器对 id {0} 响应代码 404。正在跳过。"
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 文件"
-
-msgid "Coordinates imported: {0}"
-msgstr "导入的坐标:{0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "格式错误的语句:{0}"
-
-msgid "Checksum errors: {0}"
-msgstr "校验错误:{0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "未知语句:{0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "零坐标:{0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA 导入成功:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA 导入失败!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "空指针异常,可能遗漏某些标签。"
 
-msgid "Note Files"
-msgstr "笔记文件"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -13202,29 +13418,14 @@ msgstr "解析服务器返回的笔记响应失败"
 msgid "(Code={0})"
 msgstr "(代码={0})"
 
-msgid "The server replied an error with code {0}."
-msgstr "服务器返回错误,代码 {0}。"
-
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM 服务器文件(bzip2 压缩)"
-
-msgid "Prolog of OsmChange document already written. Please write only once."
-msgstr "OsmChange 文件的序言已写入。请只写入一次。"
-
-msgid "Prolog of OsmChange document not written yet. Please write first."
-msgstr "OsmChange 文件的序言尚未写入。请先写入。"
-
-msgid "OsmChange File"
-msgstr "OsmChange 文件"
-
-msgid "File ''{0}'' does not exist."
-msgstr "文件“{0}”不存在。"
-
-msgid "No data found in file {0}."
-msgstr "没有在文件 {0} 中找到数据。"
+msgid "The server replied an error with code {0}."
+msgstr "服务器返回错误,代码 {0}。"
 
-msgid "Open OsmChange file"
-msgstr "打开 OsmChange 文件"
+msgid "Prolog of OsmChange document already written. Please write only once."
+msgstr "OsmChange 文件的序言已写入。请只写入一次。"
+
+msgid "Prolog of OsmChange document not written yet. Please write first."
+msgstr "OsmChange 文件的序言尚未写入。请先写入。"
 
 msgid "Unsupported version: {0}"
 msgstr "不支持的版本:{0}"
@@ -13271,35 +13472,9 @@ msgstr "无法以 OAuth 验证标头签署 HTTP 连接"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr "首选项\"{0}\"值意外。得到\"{1}\"。"
 
-msgid "OSM Server Files"
-msgstr "OSM 服务器文件"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>在保存时发生错误。<br>错误为:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr "<html>从备份文件还原时发生错误。<br>错误为:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM 服务器文件(gzip 压缩)"
-
 msgid "Parsing OSM history data ..."
 msgstr "正在分析 OSM 历史记录数据 ..."
 
-msgid "Invalid dataset"
-msgstr "无效的数据集合"
-
-msgid "No data found for layer ''{0}''."
-msgstr "图层“{0}”中未找到数据。"
-
-msgid "No data found in file ''{0}''."
-msgstr "文件“{0}”中未找到数据。"
-
-msgid "Open OSM file"
-msgstr "打开 OSM 文件"
-
 msgid "Reading was canceled"
 msgstr "读取已取消"
 
@@ -13430,6 +13605,9 @@ msgstr "正在连接服务器..."
 msgid "Downloading OSM notes..."
 msgstr "正在下载 OSM 笔记..."
 
+msgid "Downloading data..."
+msgstr "正在下载数据..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "无法连接到 OSM 服务器。请检查您的网络连接。"
@@ -13486,14 +13664,8 @@ msgstr "发现意外的 id 0 osm 原型"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "正在下载数据..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS 文件(*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "不支持的 WMS 文件版本;发现 {0},应为 {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr "首选项中意外的键\"{0}\"值\"{1}\""
 
 msgid "{0} bytes have been read"
 msgstr "已读入 {0} 字节"
@@ -14446,33 +14618,6 @@ msgstr "正在打开 URL:{0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL 不包含{0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "过时的 Java 版本"
-
-msgid "Update Java"
-msgstr "升级 Java"
-
-msgid "You are running version {0} of Java."
-msgstr "您正在运行 Java 版本 {0}。"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr "从 {1} 起,此版本不再受 {0} 支持,因此不推荐使用。"
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr "JOSM 即将停止支持这一 Java 版本,强烈建议您升级至 Java {0}。"
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "您希望立即更新吗?"
-
 msgid "reserved"
 msgstr "保留"
 
@@ -14535,20 +14680,6 @@ msgstr "键中有可疑字符:"
 msgid "Value is too long (max {0} characters):"
 msgstr "值太长(最长为 {0} 个字符):"
 
-msgid "Do you want to paste these tags?"
-msgstr "您想要粘贴这些标签吗?"
-
-msgid "Clear buffer"
-msgstr "清空缓存"
-
-msgid "Ignore warnings"
-msgstr "忽略警告"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr "<html><p>对不起,无法解析缓存中的标签,缓存中没有 JOSM 对象或适当的文本。</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr "无法删除文件 {0}"
 
@@ -14571,109 +14702,13 @@ msgid "day"
 msgid_plural "days"
 msgstr[0] "天"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr "首选项的设定键“{0}”不包含“{1}”。不能从首选项中回复窗口位置大小。"
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr "首选项的设定键“{0}”没有提供“{1}”的整数值。得到“{2}”。不能从首选项中恢复窗口位置大小。"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr "无法解析首选项的设定键“{0}”的栏位“{1}”。异常为:{2}。不能从首选项中恢复窗口位置大小。"
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr "首选项的设定键“{0}”不存在。不能从首选项中恢复窗口位置大小。"
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr "忽略格式错误的几何形状:{0}"
-
 msgid "Failed to load XML schema."
 msgstr "无法加载 XML 架构。"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "您遇到了 JOSM 程序缺陷"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr ""
-
-msgid "Manually report at:"
-msgstr ""
-
-msgid "Is JOSM up to date?"
-msgstr ""
-
-msgid "Send bug report"
-msgstr ""
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "报告程序缺陷"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr "阻止此会话再显示该错误对话框。"
-
-msgid "Ignore this error."
-msgstr ""
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr "打开错误报告失败。请使用此网站手动报告:"
 
-msgid "Include the system status report."
-msgstr ""
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr ""
-
-msgid "JOSM is searching for updates..."
-msgstr ""
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr ""
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr ""
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "升级 JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18386,9 +18421,6 @@ msgstr "信息板内容"
 msgid "notice"
 msgstr "提示"
 
-msgid "history"
-msgstr "历史"
-
 msgid "nature"
 msgstr "自然"
 
@@ -18968,6 +19000,9 @@ msgstr "社会"
 msgid "Nursing Home"
 msgstr "疗养院"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "教养院"
 
@@ -21408,6 +21443,9 @@ msgstr "礼品/纪念品"
 msgid "Variety Store"
 msgstr "杂货店"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "博彩"
 
@@ -22268,6 +22306,78 @@ msgstr "商业"
 msgid "Industrial"
 msgstr "工业"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "车库"
 
@@ -22963,6 +23073,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -23715,6 +23828,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23825,15 +23941,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31806,15 +31913,21 @@ msgstr "回到前一个数值(未修改 mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "相片地理标签插件"
 
-msgid "Writing position information to image files..."
-msgstr "将地点信息写入图片文件..."
-
 msgid "Could not read mtime."
 msgstr "无法读取 mtime。"
 
 msgid "Could not write mtime."
 msgstr "无法写入 mtime。"
 
+msgid "Writing position information to image files..."
+msgstr "将地点信息写入图片文件..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "无法删除文件!"
 
@@ -32310,6 +32423,9 @@ msgstr ""
 msgid "PT: dummy test warning"
 msgstr ""
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr ""
 
@@ -32318,6 +32434,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/i18n/po/zh_TW.po b/i18n/po/zh_TW.po
index f2c1a33..9a3ef1a 100644
--- a/i18n/po/zh_TW.po
+++ b/i18n/po/zh_TW.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-13 03:42+0200\n"
+"POT-Creation-Date: 2017-09-02 22:59+0200\n"
 "PO-Revision-Date: 2017-08-09 11:34+0000\n"
 "Last-Translator: Supaplex <Unknown>\n"
 "Language-Team: Traditional Chinese\n"
@@ -15,7 +15,7 @@ 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-08-13 05:07+0000\n"
+"X-Launchpad-Export-Date: 2017-09-03 05:06+0000\n"
 "X-Generator: Launchpad (build 18446)\n"
 "Language: zh_TW\n"
 
@@ -55,54 +55,9 @@ msgstr "背景使用條款"
 msgid "Opening link not supported on current platform (''{0}'')"
 msgstr "目前的平臺不支援開啟連結(「{0}」)"
 
-msgid "Executing platform startup hook"
-msgstr "執行平臺啟動掛鉤"
-
-msgid "Building main menu"
-msgstr "正在建立主選單"
-
-msgid "Help"
-msgstr "輔助說明"
-
-msgid "Initializing internal boundaries data"
-msgstr "初始化內部邊界資料"
-
-msgid "Initializing OSM API"
-msgstr "初始化 OSM API"
-
-msgid "Initializing internal traffic data"
-msgstr "初始化內部資料"
-
-msgid "Initializing validator"
-msgstr "正在載入 validator"
-
-msgid "Initializing presets"
-msgstr "初始化預設組合"
-
-msgid "Initializing map styles"
-msgstr "正在初始化地圖樣式"
-
-msgid "Loading imagery preferences"
-msgstr "正在載入圖片偏好設定"
-
-msgid "Updating user interface"
-msgstr "正在更新使用者介面"
-
 msgid "Failed to save default preferences."
 msgstr "預設選項儲存失敗。"
 
-msgid "Ignoring malformed URL: \"{0}\""
-msgstr "忽略不正確的 URL: \"{0}\""
-
-msgid "Warning"
-msgstr "警告"
-
-msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "忽略格式不良的檔案 URL: \"{0}\""
-
-msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "參數「downloadgps」不能使用檔案名稱或檔案 URL"
-
 msgid "About"
 msgstr "關於"
 
@@ -178,6 +133,9 @@ msgstr "取消"
 msgid "Click to abort launching external browsers"
 msgstr "請點選以放棄執行外部瀏覽器"
 
+msgid "Warning"
+msgstr "警告"
+
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "請至少選擇一個已上傳的節點、路徑或關聯。"
 
@@ -456,23 +414,17 @@ msgstr ""
 "* 一條不自我交匯、並至少有兩個節點的路徑;\n"
 "* 三個節點。"
 
-msgid "Download from OSM..."
-msgstr "從 OSM 下載"
-
-msgid "Download map data from the OSM server."
-msgstr "從 OSM 主機下載圖資"
+msgid "Download data"
+msgstr "下載資料"
 
-msgid "Please select a download area first."
-msgstr "請先選擇下載區域。"
+msgid "Download map data from a server of your choice"
+msgstr ""
 
 msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr "<html>這個動作會發出 {0} 個<br>個別的下載要求。你是否希望<br>繼續?</html>"
 
-msgid "Download data"
-msgstr "下載資料"
-
 msgid "Download notes in current view"
 msgstr "目前畫面裏下載的註解"
 
@@ -539,6 +491,9 @@ msgstr "沒有東西可匯出。請先取得一些資料。"
 msgid "Export GPX file"
 msgstr "匯出 GPX 檔案"
 
+msgid "Help"
+msgstr "輔助說明"
+
 msgid "History"
 msgstr "歷史紀錄"
 
@@ -1046,23 +1001,6 @@ msgstr "<html>請確定所有選取的路徑都朝著類似的方向<br>或是
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr "請選擇角度大約為 90 或 180 度的路徑。"
 
-msgid "Download from Overpass API ..."
-msgstr "從 Overpass API 下載..."
-
-msgid "Download map data from Overpass API server."
-msgstr "自 Overpass API 伺服器下載地圖數據。"
-
-msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
-msgstr "使用 Overpass Turbo 檢索精靈工具建構 Overpass 檢索"
-
-msgid ""
-"Place your Overpass query below or generate one using the Overpass Turbo "
-"Query Wizard"
-msgstr "在下面貼上 Overpass 檢索,或是用 Overpass Turbo 檢索精靈產生檢索"
-
-msgid "Show/hide Overpass snippet list"
-msgstr "顯示/隱藏 Overpass 片段清單"
-
 msgid "Paste"
 msgstr "貼上"
 
@@ -2304,36 +2242,6 @@ msgstr "選擇關聯 (增選)"
 msgid "Select relation"
 msgstr "選擇關聯"
 
-msgid "<not>"
-msgstr "<非>"
-
-msgid "<or>"
-msgstr "<或>"
-
-msgid "<xor>"
-msgstr "<互斥或>"
-
-msgid "<left parent>"
-msgstr "左父母"
-
-msgid "<right parent>"
-msgstr "右父母"
-
-msgid "<colon>"
-msgstr "<冒號>"
-
-msgid "<equals>"
-msgstr "<等於>"
-
-msgid "<key>"
-msgstr "<設定鍵>"
-
-msgid "<question mark>"
-msgstr "<問號>"
-
-msgid "<end-of-file>"
-msgstr "<檔案尾端>"
-
 msgid "Search..."
 msgstr "搜尋..."
 
@@ -2622,92 +2530,6 @@ msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
 msgstr[0] "正在搜尋 {0} 個物件"
 
-msgctxt "search"
-msgid "CS"
-msgstr "CS"
-
-msgctxt "search"
-msgid "CI"
-msgstr "CI"
-
-msgctxt "search"
-msgid "RX"
-msgstr "RX"
-
-msgctxt "search"
-msgid "CSS"
-msgstr "CSS"
-
-msgctxt "search"
-msgid "A"
-msgstr "A"
-
-msgid ""
-"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
-"\n"
-"{2}"
-msgstr ""
-"正規表示式「{0}」在 {1} 處解析錯誤,完整的錯誤訊息:\n"
-"\n"
-"{2}"
-
-msgid ""
-"The regex \"{0}\" had a parse error, full error:\n"
-"\n"
-"{1}"
-msgstr ""
-"正規表示式「{0}」有解析錯誤,完整的錯誤訊息:\n"
-"\n"
-"{1}"
-
-msgid "Cannot parse timestamp ''{0}''"
-msgstr "無法分析時間戳記「{0}」"
-
-msgid "Expecting {0} after {1}"
-msgstr "{1} 後面應該有 {0}"
-
-msgid "Range of primitive ids expected"
-msgstr ""
-
-msgid "Range of changeset ids expected"
-msgstr ""
-
-msgid "Range of versions expected"
-msgstr ""
-
-msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
-msgstr "使用標籤(tag)運算子時設定鍵不能空白。使用範例:key=value"
-
-msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
-msgstr "不明的原型類型:{0}。允許的數值為 node、 way 或 relation"
-
-msgid "Positive integer expected"
-msgstr ""
-
-msgid "Range of numbers expected"
-msgstr "預期的數字範圍"
-
-msgid "Unknown preset name: "
-msgstr ""
-
-msgid "Unexpected token. Expected {0}, found {1}"
-msgstr "未預期的記號。應該為 {0},卻發現 {1}"
-
-msgid "Failed to parse MapCSS selector"
-msgstr "無法解析 MapCSS 選擇工具"
-
-msgid "Unexpected token: {0}"
-msgstr "未預期的記號:{0}"
-
-msgid "Missing parameter for OR"
-msgstr "缺少 OR 的參數"
-
-msgid "Missing parameter for XOR"
-msgstr "缺少 XOR 的參數"
-
-msgid "Missing operator for NOT"
-msgstr "缺少 NOT 的運算子"
-
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
 msgstr ""
 
@@ -2725,9 +2547,6 @@ msgstr "路徑 {1} 中的 {0} 個節點超過最大值。允許的節點數為 {
 msgid "API Capabilities Violation"
 msgstr "違反 API 能力"
 
-msgid "Cyclic dependency between relations:"
-msgstr "在關聯間有循環相依性:"
-
 msgid "Removed obsolete tags"
 msgstr "已移除逾期標籤"
 
@@ -3056,57 +2875,12 @@ msgstr "關聯中的角色參照到"
 msgid "Automatic tag correction"
 msgstr "自動修正標籤"
 
-msgid "Unable to create directory {0}, autosave will be disabled"
-msgstr "無法建立目錄 {0},自動儲存將會停用"
-
-msgid "Unable to create file {0}, other filename will be used"
-msgstr "無法建立檔案 {0},將使用其他的檔案名稱"
-
-msgid "IOError while creating file, autosave will be skipped: {0}"
-msgstr "建立檔案時發生 IOError,自動儲存會被略過:{0}"
-
-msgid "Unable to delete old backup file {0}"
-msgstr "無法刪除舊的備份檔案 {0}"
-
-msgid "Your work has been saved automatically."
-msgstr "你的作業已自動儲存。"
-
-msgid "Restoring files"
-msgstr "正在還原檔案"
-
-msgid "Unable to delete backup file {0}"
-msgstr "無法刪除備份檔案 {0}"
-
-msgid "Unable to delete PID file {0}"
-msgstr "無法刪除 PID 檔案 {0}"
-
-msgid "Unable to delete archived backup file {0}"
-msgstr "無法刪除壓縮的備份檔案 {0}"
-
 msgid "Illegal latitude value ''{0}''"
 msgstr "不合規定的緯度數值「{0}」"
 
 msgid "Illegal longitude value ''{0}''"
 msgstr "不合規定的經度數值「{0}」"
 
-msgid "Question"
-msgstr "問題"
-
-msgid "Message"
-msgstr "訊息"
-
-msgid "Enter text"
-msgstr "輸入文字"
-
-msgid "Installing plugins"
-msgstr "安裝外掛程式"
-
-msgid ""
-"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
-"default value is unknown at this moment.<br/> Please activate corresponding "
-"function manually and retry importing."
-msgstr ""
-
 msgid "Failed to create missing cache directory: {0}"
 msgstr "無法建立消失的快取目錄:{0}"
 
@@ -3196,6 +2970,12 @@ msgstr ""
 msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "偏好設定 {0} 已經被移除,因為它已不再使用了。"
 
+msgid ""
+"<html>Settings file asks to append preferences to <b>{0}</b>,<br/> but its "
+"default value is unknown at this moment.<br/> Please activate corresponding "
+"function manually and retry importing."
+msgstr ""
+
 msgid "Metric"
 msgstr "公制"
 
@@ -3326,6 +3106,15 @@ msgstr ""
 msgid "Note"
 msgstr "註解"
 
+msgid "Failed to retrieve OAuth Access Token from credential manager"
+msgstr ""
+
+msgid "Current credential manager is of type ''{0}''"
+msgstr "目前的憑證管理程式類型為「{0}」"
+
+msgid "Failed to store OAuth Access Token to credentials manager"
+msgstr ""
+
 msgid "ID > 0 expected. Got {0}."
 msgstr "預期 ID > 0。收到 {0}。"
 
@@ -3340,6 +3129,9 @@ msgstr "不能將 changesetId > 0 指派給新的原型。changesetId 的數值
 msgid "A primitive with ID = 0 cannot be invisible."
 msgstr "ID = 0 的原型不能為不可視。"
 
+msgid "Cyclic dependency between relations:"
+msgstr "在關聯間有循環相依性:"
+
 msgid ""
 "Unable to add primitive {0} to the dataset because it is already included"
 msgstr "無法將原型 {0} 加入資料組合,因為它已在其中"
@@ -3376,7 +3168,56 @@ msgstr "合併資料…"
 msgid "Test ''{0}'' completed in {1}"
 msgstr ""
 
-msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
+msgid "incomplete"
+msgstr "不完整"
+
+msgid "House {0}"
+msgstr "房屋 {0}"
+
+msgid "House number {0} at {1}"
+msgstr "房屋門牌號碼 {0} 於 {1}"
+
+msgid "House number {0}"
+msgstr "房屋門牌號碼 {0}"
+
+msgid "node"
+msgid_plural "nodes"
+msgstr[0] "節點"
+
+msgid "highway"
+msgstr "公路"
+
+msgid "railway"
+msgstr "鐵路"
+
+msgid "waterway"
+msgstr "水路"
+
+msgid "landuse"
+msgstr "土地利用"
+
+msgid "building"
+msgstr "建築物"
+
+msgid "{0} node"
+msgid_plural "{0} nodes"
+msgstr[0] "{0} 節點"
+
+msgid "{0} member"
+msgid_plural "{0} members"
+msgstr[0] "{0} 成員"
+
+msgid "public transport"
+msgstr "大眾運輸"
+
+msgid "relation"
+msgid_plural "relations"
+msgstr[0] "關聯"
+
+msgid "Changeset {0}"
+msgstr "變更集 {0}"
+
+msgid "<html>Error in filter <code>{0}</code>:<br>{1}"
 msgstr ""
 
 msgid "Error in filter"
@@ -3410,18 +3251,10 @@ msgid ""
 "Cannot merge primitives with different ids. This id is {0}, the other is {1}"
 msgstr "不能合併不同 id 的原型。這個 id 是 {0},另一個是 {1}"
 
-msgid "node"
-msgid_plural "nodes"
-msgstr[0] "節點"
-
 msgid "way"
 msgid_plural "ways"
 msgstr[0] "路徑"
 
-msgid "relation"
-msgid_plural "relations"
-msgstr[0] "關聯"
-
 msgid "closedway"
 msgstr "封閉路徑"
 
@@ -3455,6 +3288,122 @@ msgstr "不能比較 ID「{0}」和 ID「{1}」的原型。"
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
 msgstr "參數「{0}」不應使用範圍 0..{1},卻收到 {2}"
 
+msgid "<not>"
+msgstr "<非>"
+
+msgid "<or>"
+msgstr "<或>"
+
+msgid "<xor>"
+msgstr "<互斥或>"
+
+msgid "<left parent>"
+msgstr "左父母"
+
+msgid "<right parent>"
+msgstr "右父母"
+
+msgid "<colon>"
+msgstr "<冒號>"
+
+msgid "<equals>"
+msgstr "<等於>"
+
+msgid "<key>"
+msgstr "<設定鍵>"
+
+msgid "<question mark>"
+msgstr "<問號>"
+
+msgid "<end-of-file>"
+msgstr "<檔案尾端>"
+
+msgid ""
+"The regex \"{0}\" had a parse error at offset {1}, full error:\n"
+"\n"
+"{2}"
+msgstr ""
+"正規表示式「{0}」在 {1} 處解析錯誤,完整的錯誤訊息:\n"
+"\n"
+"{2}"
+
+msgid ""
+"The regex \"{0}\" had a parse error, full error:\n"
+"\n"
+"{1}"
+msgstr ""
+"正規表示式「{0}」有解析錯誤,完整的錯誤訊息:\n"
+"\n"
+"{1}"
+
+msgid "Cannot parse timestamp ''{0}''"
+msgstr "無法分析時間戳記「{0}」"
+
+msgid "Expecting {0} after {1}"
+msgstr "{1} 後面應該有 {0}"
+
+msgid "Range of primitive ids expected"
+msgstr ""
+
+msgid "Range of changeset ids expected"
+msgstr ""
+
+msgid "Range of versions expected"
+msgstr ""
+
+msgid "Key cannot be empty when tag operator is used. Sample use: key=value"
+msgstr "使用標籤(tag)運算子時設定鍵不能空白。使用範例:key=value"
+
+msgid "Unknown primitive type: {0}. Allowed values are node, way or relation"
+msgstr "不明的原型類型:{0}。允許的數值為 node、 way 或 relation"
+
+msgid "Positive integer expected"
+msgstr ""
+
+msgid "Range of numbers expected"
+msgstr "預期的數字範圍"
+
+msgid "Unknown preset name: "
+msgstr ""
+
+msgid "Failed to parse MapCSS selector"
+msgstr "無法解析 MapCSS 選擇工具"
+
+msgid "Unexpected token: {0}"
+msgstr "未預期的記號:{0}"
+
+msgid "Missing parameter for OR"
+msgstr "缺少 OR 的參數"
+
+msgid "Missing parameter for XOR"
+msgstr "缺少 XOR 的參數"
+
+msgid "Missing operator for NOT"
+msgstr "缺少 NOT 的運算子"
+
+msgid "Unexpected token. Expected {0}, found {1}"
+msgstr "未預期的記號。應該為 {0},卻發現 {1}"
+
+msgctxt "search"
+msgid "CS"
+msgstr "CS"
+
+msgctxt "search"
+msgid "CI"
+msgstr "CI"
+
+msgctxt "search"
+msgid "RX"
+msgstr "RX"
+
+msgctxt "search"
+msgid "CSS"
+msgstr "CSS"
+
+msgctxt "search"
+msgid "A"
+msgstr "A"
+
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
 msgstr ""
 
@@ -3532,6 +3481,121 @@ msgstr ""
 msgid "value expected"
 msgstr ""
 
+msgid "Short Description:"
+msgstr "簡短描述:"
+
+msgid "URL:"
+msgstr "URL:"
+
+msgid "Author:"
+msgstr "作者:"
+
+msgid "Webpage:"
+msgstr "網頁:"
+
+msgid "Description:"
+msgstr "描述:"
+
+msgid "Version:"
+msgstr "版本:"
+
+msgid "Minimum JOSM Version:"
+msgstr "最低的 JOSM 版本:"
+
+msgid "by {0}"
+msgstr "由 {0}"
+
+msgid "JOSM default (MapCSS)"
+msgstr "JOSM 預設 (MapCSS)"
+
+msgid ""
+"Internal style to be used as base for runtime switchable overlay styles"
+msgstr "做為執行階段可切換覆蓋樣式基礎的內部樣式"
+
+msgid "Potlatch 2"
+msgstr "Potlatch 2"
+
+msgid "the main Potlatch 2 style"
+msgstr "主要 Potlatch 2 樣式"
+
+msgid "Internal Preset"
+msgstr "內部預設組合"
+
+msgid "The default preset for JOSM"
+msgstr "JOSM 的預設組合"
+
+msgid "Addresses"
+msgstr "地址"
+
+msgid "Checks for errors on addresses"
+msgstr ""
+
+msgid "Tag combinations"
+msgstr ""
+
+msgid "Checks for missing tag or suspicious combinations"
+msgstr ""
+
+msgid "Deprecated features"
+msgstr ""
+
+msgid "Checks for deprecated features"
+msgstr ""
+
+msgid "Geometry"
+msgstr ""
+
+msgid "Checks for geometry errors"
+msgstr ""
+
+msgid "Highways"
+msgstr "公路"
+
+msgid "Checks for errors on highways"
+msgstr ""
+
+msgid "Multiple values"
+msgstr ""
+
+msgid "Checks for wrong multiple values"
+msgstr ""
+
+msgid "Numeric values"
+msgstr ""
+
+msgid "Checks for wrong numeric values"
+msgstr ""
+
+msgid "Religion"
+msgstr "宗教"
+
+msgid "Checks for errors on religious objects"
+msgstr ""
+
+msgid "Relations"
+msgstr "關聯"
+
+msgid "Checks for errors on relations"
+msgstr ""
+
+msgid "Territories"
+msgstr ""
+
+msgid "Checks for territories-specific features"
+msgstr ""
+
+msgid "Unnecessary tags"
+msgstr ""
+
+msgid "Checks for unnecessary tags"
+msgstr ""
+
+msgid "Wikipedia"
+msgstr "維基百科"
+
+msgid "Checks for wrong wikipedia tags"
+msgstr "檢查錯誤的維基百科標籤"
+
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
 msgstr "UTM 投影法 (''+proj=utm'') 需要 ''+zone=...'' 參數。"
 
@@ -3718,9 +3782,6 @@ msgstr "URL 網址有無效的片段:{0}"
 msgid "URL validator"
 msgstr "URL 網址認證"
 
-msgid "Addresses"
-msgstr "地址"
-
 msgid "Checks for errors in addresses and associatedStreet relations."
 msgstr ""
 
@@ -3905,9 +3966,6 @@ msgstr "重複的路徑節點"
 msgid "Checks for ways with identical consecutive nodes."
 msgstr "檢查是否有整個節點都相同的路徑。"
 
-msgid "Highways"
-msgstr "公路"
-
 msgid "Performs semantic checks on highways."
 msgstr ""
 
@@ -4448,9 +4506,6 @@ msgstr "水路類型 {0}"
 msgid "boundary type {0}"
 msgstr "邊界類型 {0}"
 
-msgid "building"
-msgstr "建築物"
-
 msgid "area"
 msgstr "區域"
 
@@ -4565,43 +4620,14 @@ msgstr "不再顯示 (本次作業階段)"
 msgid "Do not show again (remembers choice)"
 msgstr "別再顯示 (記住這次選擇)"
 
-msgid "incomplete"
-msgstr "不完整"
-
-msgid "House {0}"
-msgstr "房屋 {0}"
-
-msgid "House number {0} at {1}"
-msgstr "房屋門牌號碼 {0} 於 {1}"
-
-msgid "House number {0}"
-msgstr "房屋門牌號碼 {0}"
-
-msgid "highway"
-msgstr "公路"
-
-msgid "railway"
-msgstr "鐵路"
-
-msgid "waterway"
-msgstr "水路"
-
-msgid "landuse"
-msgstr "土地利用"
-
-msgid "{0} node"
-msgid_plural "{0} nodes"
-msgstr[0] "{0} 節點"
-
-msgid "{0} member"
-msgid_plural "{0} members"
-msgstr[0] "{0} 成員"
+msgid "Ignoring malformed URL: \"{0}\""
+msgstr "忽略不正確的 URL: \"{0}\""
 
-msgid "public transport"
-msgstr "大眾運輸"
+msgid "Ignoring malformed file URL: \"{0}\""
+msgstr "忽略格式不良的檔案 URL: \"{0}\""
 
-msgid "Changeset {0}"
-msgstr "變更集 {0}"
+msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
+msgstr "參數「downloadgps」不能使用檔案名稱或檔案 URL"
 
 msgid "Precondition violation"
 msgstr "違反先決條件"
@@ -4648,47 +4674,107 @@ msgstr "客戶端逾時"
 msgid "Bandwidth Limit Exceeded"
 msgstr "超過頻寬限制"
 
-msgid "Communication with OSM server failed"
-msgstr "與 OSM 連線失敗"
+msgid "Communication with OSM server failed"
+msgstr "與 OSM 連線失敗"
+
+msgid "Authentication failed"
+msgstr "驗證失敗"
+
+msgid "Unknown host"
+msgstr "不明的主機"
+
+msgid "Object deleted"
+msgid_plural "Objects deleted"
+msgstr[0] "個物件已刪除"
+
+msgid "Show help information"
+msgstr "顯示求助資訊"
+
+msgid "Downloading \"Message of the day\""
+msgstr "正在下載「當天的訊息」"
+
+msgid "Failed to read MOTD. Exception was: {0}"
+msgstr ""
+
+msgid "Message of the day not available"
+msgstr "無法取得當天的訊息。"
+
+msgid "Click to close the dialog"
+msgstr "點選以關閉對話盒"
+
+msgid "Imagery offset"
+msgstr "圖片偏移"
+
+msgctxt "menu"
+msgid "Imagery"
+msgstr "圖磚"
+
+msgctxt "layer"
+msgid "Offset"
+msgstr "偏移"
+
+msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
+msgstr "參數「{0}」應為非空的數值,卻收到「{1}」"
+
+msgid "Outdated Java version"
+msgstr "過期的 JAVA 版本"
+
+msgid "Update Java"
+msgstr "更新 JAVA"
+
+msgid "You are running version {0} of Java."
+msgstr "你使用的 JAVA 版本是 {0}"
+
+msgid ""
+"This version is no longer supported by {0} since {1} and is not recommended "
+"for use."
+msgstr "此版本從 {1} 後已不再由 {0} 支援,不建議繼續使用。"
+
+msgid ""
+"JOSM will soon stop working with this version; we highly recommend you to "
+"update to Java {0}."
+msgstr "JOSM 之後會不能在這版本下執行,我們非常建議你更新到 JAVA {0}。"
+
+msgid ""
+"You may face critical Java bugs; we highly recommend you to update to Java "
+"{0}."
+msgstr ""
 
-msgid "Authentication failed"
-msgstr "驗證失敗"
+msgid "Would you like to update now ?"
+msgstr "你想要現在就更新嗎?"
 
-msgid "Unknown host"
-msgstr "不明的主機"
+msgid "Starting file watcher"
+msgstr ""
 
-msgid "Object deleted"
-msgid_plural "Objects deleted"
-msgstr[0] "個物件已刪除"
+msgid "Executing platform startup hook"
+msgstr "執行平臺啟動掛鉤"
 
-msgid "Show help information"
-msgstr "顯示求助資訊"
+msgid "Building main menu"
+msgstr "正在建立主選單"
 
-msgid "Downloading \"Message of the day\""
-msgstr "正在下載「當天的訊息」"
+msgid "Updating user interface"
+msgstr "正在更新使用者介面"
 
-msgid "Failed to read MOTD. Exception was: {0}"
-msgstr ""
+msgid "Initializing internal boundaries data"
+msgstr "初始化內部邊界資料"
 
-msgid "Message of the day not available"
-msgstr "無法取得當天的訊息。"
+msgid "Initializing OSM API"
+msgstr "初始化 OSM API"
 
-msgid "Click to close the dialog"
-msgstr "點選以關閉對話盒"
+msgid "Initializing internal traffic data"
+msgstr "初始化內部資料"
 
-msgid "Imagery offset"
-msgstr "圖片偏移"
+msgid "Initializing validator"
+msgstr "正在載入 validator"
 
-msgctxt "menu"
-msgid "Imagery"
-msgstr "圖磚"
+msgid "Initializing presets"
+msgstr "初始化預設組合"
 
-msgctxt "layer"
-msgid "Offset"
-msgstr "偏移"
+msgid "Initializing map styles"
+msgstr "正在初始化地圖樣式"
 
-msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr "參數「{0}」應為非空的數值,卻收到「{1}」"
+msgid "Loading imagery preferences"
+msgstr "正在載入圖片偏好設定"
 
 msgid "usage"
 msgstr "用法"
@@ -5151,6 +5237,79 @@ msgstr "請輸入拼貼索引"
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr "目前的數值在指定的縮放等級中是無法使用的拼貼索引"
 
+msgid "You have encountered a bug in JOSM"
+msgstr "你遇到了 JOSM 的程式錯誤"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr "除錯資訊"
+
+msgid "Manually report at:"
+msgstr "手動報告到:"
+
+msgid "Is JOSM up to date?"
+msgstr "JOSM 是最新板嗎?"
+
+msgid "Send bug report"
+msgstr "傳送臭蟲報告"
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
+
+msgid "Report Bug"
+msgstr "回報程式錯誤"
+
+msgid "Suppress this error for this session."
+msgstr ""
+
+msgid "Suppress further error dialogs for this session."
+msgstr ""
+
+msgid "Ignore this error."
+msgstr "忽略這個錯誤。"
+
+msgid "Include the system status report."
+msgstr "附帶系統狀態報告。"
+
+msgid "Include information about the data you were working on."
+msgstr ""
+
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr "你目前使用的 JOSM 版本是 {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM 正在搜尋更新..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr "JOSM 已是最新版。"
+
+msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
+msgstr "JOSM 是舊版,最新版是 {0},請記得更新。"
+
+msgid ""
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "更新 JOSM"
+
 msgid "Conflict background: no conflict"
 msgstr "衝突背景:沒有衝突"
 
@@ -5835,6 +5994,20 @@ msgid ""
 "objects?"
 msgstr "複製的資料包含不完整的物件。在貼上時會移除不完整的物件。你想要貼上沒有不完整物件的資料嗎?"
 
+msgid "Do you want to paste these tags?"
+msgstr "你要貼上這些標籤?"
+
+msgid "Clear buffer"
+msgstr "清除緩衝區"
+
+msgid "Ignore warnings"
+msgstr "忽略警告"
+
+msgid ""
+"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
+"contain any JOSM object or suitable text. </p></html>"
+msgstr "<html><p> 抱歉,無法從緩衝區貼上標籤,裡面沒有任何JOSM物件或是適當的文字。</p></html>"
+
 msgid "For selected objects only"
 msgstr "只用於選取的物件"
 
@@ -6391,9 +6564,6 @@ msgstr "來源"
 msgid "Title:"
 msgstr "標題:"
 
-msgid "URL:"
-msgstr "URL:"
-
 msgid "Built-in Style, internal path:"
 msgstr "內建樣式,內部路徑:"
 
@@ -6504,9 +6674,6 @@ msgid ""
 "Cannot continue."
 msgstr ""
 
-msgid "Relations"
-msgstr "關聯"
-
 msgid "Open a list of all relations."
 msgstr "開啓所有關聯的清單。"
 
@@ -7895,24 +8062,6 @@ msgstr "緯度的數值範圍必須為 [-90,90]。"
 msgid "Value for longitude in range [-180,180] required."
 msgstr "經度的數值範圍必須為 [-180,180]。"
 
-msgid "Data Sources and Types:"
-msgstr "資料來源和類型:"
-
-msgid "OpenStreetMap data"
-msgstr "OpenStreetMap 資料"
-
-msgid "Select to download OSM data in the selected download area."
-msgstr "選擇以下載選取下載區域中的 OSM 資料。"
-
-msgid "Raw GPS data"
-msgstr "原始 GPS 資料"
-
-msgid "Select to download GPS traces in the selected download area."
-msgstr "選擇以下載選取下載區域中的 GPS 軌跡。"
-
-msgid "Select to download notes in the selected download area."
-msgstr "在選取的下載區域選擇下載註解。"
-
 msgid "Download as new layer"
 msgstr "下載為新圖層"
 
@@ -7940,27 +8089,12 @@ msgid ""
 "map, wheel or +/- to zoom."
 msgstr "使用左鍵點選&拖拉以選擇區域,箭頭或滑鼠右鍵可以捲動地圖,滾輪或 +/- 則是縮放。"
 
-msgid "No area selected yet"
-msgstr "尚未選取區域"
-
-msgid "Download area too large; will probably be rejected by server"
-msgstr "下載區域太大;可能會被伺服器拒絕"
-
-msgid "Download area ok, size probably acceptable to server"
-msgstr "下載區域確定,大小應該會被伺服器接受"
-
 msgid "Click to close the dialog and to abort downloading"
 msgstr "點選以關閉此對話盒並放棄下載"
 
 msgid "Click to download the currently selected area"
 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 ""
-
 msgid "Download referrers (parent relations)"
 msgstr "下載參照 (上層關聯)"
 
@@ -7975,11 +8109,93 @@ msgid ""
 "i.e.,parent relations and for nodes, additionally, parent ways"
 msgstr ""
 
-msgid "Select if the members of a relation should be downloaded as well"
-msgstr "如果關聯的成員也要下載請選擇"
+msgid "Select if the members of a relation should be downloaded as well"
+msgstr "如果關聯的成員也要下載請選擇"
+
+msgid "Download referrers (parent relations and ways)"
+msgstr "下載參照 (上層關聯與路徑)"
+
+msgid "Download from OSM"
+msgstr ""
+
+msgid "Data Sources and Types:"
+msgstr "資料來源和類型:"
+
+msgid "OpenStreetMap data"
+msgstr "OpenStreetMap 資料"
+
+msgid "Select to download OSM data in the selected download area."
+msgstr "選擇以下載選取下載區域中的 OSM 資料。"
+
+msgid "Raw GPS data"
+msgstr "原始 GPS 資料"
+
+msgid "Select to download GPS traces in the selected download area."
+msgstr "選擇以下載選取下載區域中的 GPS 軌跡。"
+
+msgid "Select to download notes in the selected download area."
+msgstr "在選取的下載區域選擇下載註解。"
+
+msgid "Please select a download area first."
+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 ""
+
+msgid "No area selected yet"
+msgstr "尚未選取區域"
+
+msgid "Download area too large; will probably be rejected by server"
+msgstr "下載區域太大;可能會被伺服器拒絕"
+
+msgid "Download area ok, size probably acceptable to server"
+msgstr "下載區域確定,大小應該會被伺服器接受"
+
+msgid "Download from Overpass API"
+msgstr ""
+
+msgid "Build an Overpass query using the Overpass Turbo Query Wizard tool"
+msgstr "使用 Overpass Turbo 檢索精靈工具建構 Overpass 檢索"
+
+msgid "Query Wizard"
+msgstr ""
+
+msgid ""
+"Place your Overpass query below or generate one using the Overpass Turbo "
+"Query Wizard"
+msgstr "在下面貼上 Overpass 檢索,或是用 Overpass Turbo 檢索精靈產生檢索"
+
+msgid "Your saved queries:"
+msgstr ""
+
+msgid "Show/hide Overpass snippet list"
+msgstr "顯示/隱藏 Overpass 片段清單"
+
+msgid "Overpass query:"
+msgstr ""
+
+msgid ""
+"You entered an empty query. Do you want to download all data in this area "
+"instead?"
+msgstr ""
+
+msgid "Download all data?"
+msgstr ""
+
+msgid "Add new snippet"
+msgstr ""
+
+msgid "Delete selected snippet"
+msgstr ""
+
+msgid "Edit selected snippet"
+msgstr ""
 
-msgid "Download referrers (parent relations and ways)"
-msgstr "下載參照 (上層關聯與路徑)"
+msgid "history"
+msgstr "歷史"
 
 msgid "Please select an item first"
 msgstr ""
@@ -8023,9 +8239,6 @@ msgstr ""
 msgid "Parse error"
 msgstr "解析錯誤"
 
-msgid "Query Wizard"
-msgstr ""
-
 msgid ""
 "Allows you to interact with <i>Overpass API</i> by writing declarative, "
 "human-readable terms."
@@ -8575,6 +8788,18 @@ msgstr "以指定的使用者名稱和密碼進行驗證"
 msgid "Cancel authentication"
 msgstr "取消驗證"
 
+msgid "Question"
+msgstr "問題"
+
+msgid "Message"
+msgstr "訊息"
+
+msgid "Enter text"
+msgstr "輸入文字"
+
+msgid "Installing plugins"
+msgstr "安裝外掛程式"
+
 msgid "Downloading file"
 msgstr "正在下載檔案"
 
@@ -9058,9 +9283,6 @@ msgstr "選擇要上傳的物件"
 msgid "Cancel uploading"
 msgstr "正在取消上傳"
 
-msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "填滿一個變更集並回到上傳對話盒"
 
@@ -9135,6 +9357,180 @@ msgid "{0} object to delete:"
 msgid_plural "{0} objects to delete:"
 msgstr[0] "{0} 個物件要刪除:"
 
+msgid "All Formats"
+msgstr "所有的格式"
+
+msgid "Could not export ''{0}''."
+msgstr "無法匯出「{0}」。"
+
+msgid "Could not import ''{0}''."
+msgstr "無法匯入「{0}」。"
+
+msgid "Could not import files."
+msgstr "無法匯入檔案。"
+
+msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
+msgstr "<html>無法讀取檔案「{0}」。<br>錯誤為:<br>{1}</html>"
+
+msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
+msgstr "<html>無法讀取檔案。<br>錯誤為:<br>{0}</html>"
+
+msgid "GeoJSON Files"
+msgstr "GeoJSON 檔案"
+
+msgid "Layer ''{0}'' not supported"
+msgstr "不支援 ''{0}'' 圖層"
+
+msgid ""
+"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
+"tracks."
+msgstr "注意:GPL 與 OSM 授權並不相容,請勿上傳 GPL 授權的軌跡。"
+
+msgid "GPS track description"
+msgstr "gps 軌跡描述"
+
+msgid "Add author information"
+msgstr "加入作者資訊"
+
+msgid "Real name"
+msgstr "本名"
+
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgid "Copyright (URL)"
+msgstr "授權 (URL)"
+
+msgid "Predefined"
+msgstr "預先定義的"
+
+msgid "Copyright year"
+msgstr "版權年份"
+
+msgid "Keywords"
+msgstr "設定鍵"
+
+msgid "Export options"
+msgstr "匯出選項"
+
+msgid "Export and Save"
+msgstr "匯出並存檔"
+
+msgid ""
+"Error while exporting {0}:\n"
+"{1}"
+msgstr ""
+"匯出時發生錯誤 {0}:\n"
+"{1}"
+
+msgid "Choose a predefined license"
+msgstr "選擇預先定義的授權"
+
+msgid "GPX Files"
+msgstr "GPX 檔案"
+
+msgid "Parsing data for layer ''{0}'' failed"
+msgstr "解析圖層「{0}」的資料失敗"
+
+msgid ""
+"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
+"file will be available."
+msgstr "當解析圖層「{0}」的 gpx 資料時發生錯誤。只有部分檔案能使用。"
+
+msgid ""
+"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
+"be available."
+msgstr "當解析 gpx 檔案「{0}」時發生錯誤。只有部分檔案能使用。"
+
+msgid "Image Files"
+msgstr "照片檔案"
+
+msgid "folder"
+msgstr "資料夾"
+
+msgid "Looking for image files"
+msgstr "尋找圖片檔案"
+
+msgid "No image files found."
+msgstr "找不到圖片檔案。"
+
+msgid "NMEA-0183 Files"
+msgstr "NMEA-0183 檔案"
+
+msgid "Coordinates imported: {0}"
+msgstr "匯入的坐標:{0}"
+
+msgid "Malformed sentences: {0}"
+msgstr "格式不良的段落:{0}"
+
+msgid "Checksum errors: {0}"
+msgstr "Checksum 錯誤:{0}"
+
+msgid "Unknown sentences: {0}"
+msgstr "不明的段落:{0}"
+
+msgid "Zero coordinates: {0}"
+msgstr "零坐標:{0}"
+
+msgid "NMEA import success:"
+msgstr "NMEA 匯入成功:"
+
+msgid "NMEA import failure!"
+msgstr "NMEA 匯入失敗!"
+
+msgid "Note Files"
+msgstr "註解檔案"
+
+msgid "OSM Server Files bzip2 compressed"
+msgstr "OSM 伺服器檔案(bzip2 壓縮)"
+
+msgid "OsmChange File"
+msgstr "OsmChange 檔案"
+
+msgid "File ''{0}'' does not exist."
+msgstr "檔案「{0}」不存在"
+
+msgid "No data found in file {0}."
+msgstr "檔案 {0} 裏找不到資料。"
+
+msgid "Open OsmChange file"
+msgstr "開啟 OsmChange 檔案"
+
+msgid "OSM Server Files"
+msgstr "OSM 伺服器檔案"
+
+msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
+msgstr "<html>在儲存時發生錯誤。<br>錯誤為:<br>{0}</html>"
+
+msgid ""
+"<html>An error occurred while restoring backup file.<br>Error "
+"is:<br>{0}</html>"
+msgstr "<html>從備份檔案還原時發生錯誤。<br>錯誤為:<br>{0}</html>"
+
+msgid "OSM Server Files gzip compressed"
+msgstr "OSM 伺服器檔案(以 gzip 壓縮)"
+
+msgid "Invalid dataset"
+msgstr "不正確的資料組合"
+
+msgid "No data found for layer ''{0}''."
+msgstr "沒找到「{0}」圖層的資料。"
+
+msgid "No data found in file ''{0}''."
+msgstr "在「{0}」檔案中沒找到資料。"
+
+msgid "Open OSM file"
+msgstr "開啟 OSM 檔案"
+
+msgid "Validation Error Files"
+msgstr ""
+
+msgid "WMS Files (*.wms)"
+msgstr "WMS 檔案 (*.wms)"
+
+msgid "Unsupported WMS file version; found {0}, expected {1}"
+msgstr "不支援的 WMS 檔案版本;發現 {0},應為 {1}"
+
 msgid "Native projections"
 msgstr ""
 
@@ -9242,6 +9638,33 @@ msgstr "不再顯示這個訊息"
 msgid "Hide this message and never show it again"
 msgstr "隱藏這個訊息並且不再顯示它"
 
+msgid "Unable to create directory {0}, autosave will be disabled"
+msgstr "無法建立目錄 {0},自動儲存將會停用"
+
+msgid "Unable to create file {0}, other filename will be used"
+msgstr "無法建立檔案 {0},將使用其他的檔案名稱"
+
+msgid "IOError while creating file, autosave will be skipped: {0}"
+msgstr "建立檔案時發生 IOError,自動儲存會被略過:{0}"
+
+msgid "Unable to delete old backup file {0}"
+msgstr "無法刪除舊的備份檔案 {0}"
+
+msgid "Your work has been saved automatically."
+msgstr "你的作業已自動儲存。"
+
+msgid "Restoring files"
+msgstr "正在還原檔案"
+
+msgid "Unable to delete backup file {0}"
+msgstr "無法刪除備份檔案 {0}"
+
+msgid "Unable to delete PID file {0}"
+msgstr "無法刪除 PID 檔案 {0}"
+
+msgid "Unable to delete archived backup file {0}"
+msgstr "無法刪除壓縮的備份檔案 {0}"
+
 msgid "Customize Color"
 msgstr "自訂顏色"
 
@@ -9340,6 +9763,9 @@ msgstr "總註解數:"
 msgid "Changes need uploading?"
 msgstr ""
 
+msgid "Save Note file"
+msgstr ""
+
 msgid "outside downloaded area"
 msgstr "超出下載的區域"
 
@@ -9412,6 +9838,9 @@ msgstr "驗證的錯誤"
 msgid "No validation errors"
 msgstr "沒有驗證上的錯誤"
 
+msgid "Save Validation errors file"
+msgstr ""
+
 msgid "Set WMS Bookmark"
 msgstr "設定 WMS 書籤"
 
@@ -9992,9 +10421,6 @@ msgstr "(URL 是: "
 msgid "Select the map painting styles"
 msgstr "選取地圖繪製樣式"
 
-msgid "loading style ''{0}''..."
-msgstr "載入樣式「{0}」..."
-
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
 "click menu for details."
@@ -10004,6 +10430,9 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "loading style ''{0}''..."
+msgstr "載入樣式「{0}」..."
+
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr "無法從 ''{0}'' 載入地圖繪製樣式,異常:{1}"
 
@@ -10473,27 +10902,6 @@ msgstr "下載外掛程式"
 msgid "Icon paths:"
 msgstr "圖示路徑:"
 
-msgid "Short Description:"
-msgstr "簡短描述:"
-
-msgid "Author:"
-msgstr "作者:"
-
-msgid "Webpage:"
-msgstr "網頁:"
-
-msgid "Description:"
-msgstr "描述:"
-
-msgid "Version:"
-msgstr "版本:"
-
-msgid "Minimum JOSM Version:"
-msgstr "最低的 JOSM 版本:"
-
-msgid "by {0}"
-msgstr "由 {0}"
-
 msgid "Name (optional):"
 msgstr "名稱 (選擇性):"
 
@@ -11582,19 +11990,6 @@ msgstr "<html>無法從這裡載入樣式來源清單:<br>「{0}」。<br><br>
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr "警告:樣式清單「{0}」中項目的格式不合規定。得到「{1}」。"
 
-msgid "JOSM default (MapCSS)"
-msgstr "JOSM 預設 (MapCSS)"
-
-msgid ""
-"Internal style to be used as base for runtime switchable overlay styles"
-msgstr "做為執行階段可切換覆蓋樣式基礎的內部樣式"
-
-msgid "Potlatch 2"
-msgstr "Potlatch 2"
-
-msgid "the main Potlatch 2 style"
-msgstr "主要 Potlatch 2 樣式"
-
 msgid "Map Settings"
 msgstr "地圖設定值"
 
@@ -11684,12 +12079,6 @@ msgstr "<html>無法從下列載入預設組合來源清單<br>「{0}」.<br><br
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr "警告:預設組合清單「{0}」的項目格式不合規定。得到「{1}」"
 
-msgid "Internal Preset"
-msgstr "內部預設組合"
-
-msgid "The default preset for JOSM"
-msgstr "JOSM 的預設組合"
-
 msgid "Plugin {0} is still required by this plugin:"
 msgid_plural "Plugin {0} is still required by these {1} plugins:"
 msgstr[0] ""
@@ -12157,9 +12546,6 @@ msgstr "OSM 密碼:"
 msgid "Failed to retrieve OSM credentials from credential manager."
 msgstr ""
 
-msgid "Current credential manager is of type ''{0}''"
-msgstr "目前的憑證管理程式類型為「{0}」"
-
 msgid "Failed to save OSM credentials to credential manager."
 msgstr ""
 
@@ -12177,12 +12563,6 @@ msgid ""
 "downloaded"
 msgstr ""
 
-msgid "Failed to retrieve OAuth Access Token from credential manager"
-msgstr ""
-
-msgid "Failed to store OAuth Access Token to credentials manager"
-msgstr ""
-
 msgid "Save to preferences"
 msgstr "儲存到偏好設定"
 
@@ -12364,69 +12744,6 @@ msgstr ""
 msgid "Warning: illegal format of entry in rule list ''{0}''. Got ''{1}''"
 msgstr ""
 
-msgid "Checks for errors on addresses"
-msgstr ""
-
-msgid "Tag combinations"
-msgstr ""
-
-msgid "Checks for missing tag or suspicious combinations"
-msgstr ""
-
-msgid "Deprecated features"
-msgstr ""
-
-msgid "Checks for deprecated features"
-msgstr ""
-
-msgid "Geometry"
-msgstr ""
-
-msgid "Checks for geometry errors"
-msgstr ""
-
-msgid "Checks for errors on highways"
-msgstr ""
-
-msgid "Multiple values"
-msgstr ""
-
-msgid "Checks for wrong multiple values"
-msgstr ""
-
-msgid "Numeric values"
-msgstr ""
-
-msgid "Checks for wrong numeric values"
-msgstr ""
-
-msgid "Religion"
-msgstr "宗教"
-
-msgid "Checks for errors on religious objects"
-msgstr ""
-
-msgid "Checks for errors on relations"
-msgstr ""
-
-msgid "Territories"
-msgstr ""
-
-msgid "Checks for territories-specific features"
-msgstr ""
-
-msgid "Unnecessary tags"
-msgstr ""
-
-msgid "Checks for unnecessary tags"
-msgstr ""
-
-msgid "Wikipedia"
-msgstr "維基百科"
-
-msgid "Checks for wrong wikipedia tags"
-msgstr "檢查錯誤的維基百科標籤"
-
 msgid "Tag checker rules"
 msgstr "標籤檢查器規則"
 
@@ -12670,6 +12987,29 @@ msgstr "所有檔案 (*.*)"
 msgid "Received error page:"
 msgstr ""
 
+msgid ""
+"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
+"geometry from preferences."
+msgstr "偏好設定的設定鍵「{0}」不包含「{1}」。不能從偏好設定中回復視窗位置大小。"
+
+msgid ""
+"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
+"{2}. Cannot restore window geometry from preferences."
+msgstr "偏好設定的設定鍵「{0}」沒有提供「{1}」的整數值。得到「{2}」。不能從偏好設定中回復視窗位置大小。"
+
+msgid ""
+"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
+"{2}. Cannot restore window geometry from preferences."
+msgstr "無法解析偏好設定的設定鍵「{0}」的欄位「{1}」。異常為:「{2}」。不能從偏好設定中回復視窗位置大小。"
+
+msgid ""
+"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
+"from preferences."
+msgstr "偏好設定的設定鍵「{0}」不存在。不能從偏好設定中回復視窗位置大小。"
+
+msgid "Ignoring malformed geometry: {0}"
+msgstr ""
+
 msgid "Min. latitude"
 msgstr "最小緯度"
 
@@ -12782,9 +13122,6 @@ msgstr "外部 id「{0}」的關聯包含了缺少的外部 id「{1}」的原型
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "刪除的成員 {0} 正由關聯 {1} 使用"
 
-msgid "All Formats"
-msgstr "所有的格式"
-
 msgid "Downloading points {0} to {1}..."
 msgstr "正在下載點 {0} 到 {1}..."
 
@@ -12887,88 +13224,6 @@ msgstr "正在分析伺服器的回應..."
 msgid "Unexpected XML element with name ''{0}''"
 msgstr "未預期的名稱為「{0}」的 XML 元素"
 
-msgid "Could not export ''{0}''."
-msgstr "無法匯出「{0}」。"
-
-msgid "Could not import ''{0}''."
-msgstr "無法匯入「{0}」。"
-
-msgid "Could not import files."
-msgstr "無法匯入檔案。"
-
-msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>無法讀取檔案「{0}」。<br>錯誤為:<br>{1}</html>"
-
-msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
-msgstr "<html>無法讀取檔案。<br>錯誤為:<br>{0}</html>"
-
-msgid "GeoJSON Files"
-msgstr "GeoJSON 檔案"
-
-msgid "Layer ''{0}'' not supported"
-msgstr "不支援 ''{0}'' 圖層"
-
-msgid ""
-"Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
-"tracks."
-msgstr "注意:GPL 與 OSM 授權並不相容,請勿上傳 GPL 授權的軌跡。"
-
-msgid "GPS track description"
-msgstr "gps 軌跡描述"
-
-msgid "Add author information"
-msgstr "加入作者資訊"
-
-msgid "Real name"
-msgstr "本名"
-
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgid "Copyright (URL)"
-msgstr "授權 (URL)"
-
-msgid "Predefined"
-msgstr "預先定義的"
-
-msgid "Copyright year"
-msgstr "版權年份"
-
-msgid "Keywords"
-msgstr "設定鍵"
-
-msgid "Export options"
-msgstr "匯出選項"
-
-msgid "Export and Save"
-msgstr "匯出並存檔"
-
-msgid ""
-"Error while exporting {0}:\n"
-"{1}"
-msgstr ""
-"匯出時發生錯誤 {0}:\n"
-"{1}"
-
-msgid "Choose a predefined license"
-msgstr "選擇預先定義的授權"
-
-msgid "GPX Files"
-msgstr "GPX 檔案"
-
-msgid "Parsing data for layer ''{0}'' failed"
-msgstr "解析圖層「{0}」的資料失敗"
-
-msgid ""
-"Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
-"file will be available."
-msgstr "當解析圖層「{0}」的 gpx 資料時發生錯誤。只有部分檔案能使用。"
-
-msgid ""
-"Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
-"be available."
-msgstr "當解析 gpx 檔案「{0}」時發生錯誤。只有部分檔案能使用。"
-
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "分析錯誤:gpx 文件有無效的文件結構"
 
@@ -12978,18 +13233,6 @@ msgstr "(第 {0} 行,第 {1} 欄)"
 msgid "Unknown mode {0}."
 msgstr "不明的模式 {0}。"
 
-msgid "Image Files"
-msgstr "照片檔案"
-
-msgid "folder"
-msgstr "資料夾"
-
-msgid "Looking for image files"
-msgstr "尋找圖片檔案"
-
-msgid "No image files found."
-msgstr "找不到圖片檔案。"
-
 msgid "get number of unread messages"
 msgstr "取得未讀訊息數量"
 
@@ -13039,36 +13282,9 @@ msgstr "從「{1}」合併 id {0} 的關聯"
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "伺服器對 id {0} 傳回回應代碼 404。正在略過它。"
 
-msgid "NMEA-0183 Files"
-msgstr "NMEA-0183 檔案"
-
-msgid "Coordinates imported: {0}"
-msgstr "匯入的坐標:{0}"
-
-msgid "Malformed sentences: {0}"
-msgstr "格式不良的段落:{0}"
-
-msgid "Checksum errors: {0}"
-msgstr "Checksum 錯誤:{0}"
-
-msgid "Unknown sentences: {0}"
-msgstr "不明的段落:{0}"
-
-msgid "Zero coordinates: {0}"
-msgstr "零坐標:{0}"
-
-msgid "NMEA import success:"
-msgstr "NMEA 匯入成功:"
-
-msgid "NMEA import failure!"
-msgstr "NMEA 匯入失敗!"
-
 msgid "Null pointer exception, possibly some missing tags."
 msgstr "空指標異常 (Null pointer exception),可能遺漏某些標籤。"
 
-msgid "Note Files"
-msgstr "註解檔案"
-
 msgid "OSM API"
 msgstr "OSM API"
 
@@ -13153,29 +13369,14 @@ msgstr "伺服器回傳註解分析錯誤"
 msgid "(Code={0})"
 msgstr "(代碼={0})"
 
-msgid "The server replied an error with code {0}."
-msgstr "伺服器回覆錯誤,代碼 {0}。"
-
-msgid "OSM Server Files bzip2 compressed"
-msgstr "OSM 伺服器檔案(bzip2 壓縮)"
-
-msgid "Prolog of OsmChange document already written. Please write only once."
-msgstr "OsmChange 文件的序言已寫入。請只寫入一次。"
-
-msgid "Prolog of OsmChange document not written yet. Please write first."
-msgstr ""
-
-msgid "OsmChange File"
-msgstr "OsmChange 檔案"
-
-msgid "File ''{0}'' does not exist."
-msgstr "檔案「{0}」不存在"
-
-msgid "No data found in file {0}."
-msgstr "檔案 {0} 裏找不到資料。"
+msgid "The server replied an error with code {0}."
+msgstr "伺服器回覆錯誤,代碼 {0}。"
 
-msgid "Open OsmChange file"
-msgstr "開啟 OsmChange 檔案"
+msgid "Prolog of OsmChange document already written. Please write only once."
+msgstr "OsmChange 文件的序言已寫入。請只寫入一次。"
+
+msgid "Prolog of OsmChange document not written yet. Please write first."
+msgstr ""
 
 msgid "Unsupported version: {0}"
 msgstr "不支援的版本:{0}"
@@ -13222,35 +13423,9 @@ msgstr "無法以 OAuth 驗證標頭簽署 HTTP 連線"
 msgid "Unexpected value for preference ''{0}''. Got ''{1}''."
 msgstr ""
 
-msgid "OSM Server Files"
-msgstr "OSM 伺服器檔案"
-
-msgid "<html>An error occurred while saving.<br>Error is:<br>{0}</html>"
-msgstr "<html>在儲存時發生錯誤。<br>錯誤為:<br>{0}</html>"
-
-msgid ""
-"<html>An error occurred while restoring backup file.<br>Error "
-"is:<br>{0}</html>"
-msgstr "<html>從備份檔案還原時發生錯誤。<br>錯誤為:<br>{0}</html>"
-
-msgid "OSM Server Files gzip compressed"
-msgstr "OSM 伺服器檔案(以 gzip 壓縮)"
-
 msgid "Parsing OSM history data ..."
 msgstr "正在分析 OSM 歷史紀錄資料 ..."
 
-msgid "Invalid dataset"
-msgstr "不正確的資料組合"
-
-msgid "No data found for layer ''{0}''."
-msgstr "沒找到「{0}」圖層的資料。"
-
-msgid "No data found in file ''{0}''."
-msgstr "在「{0}」檔案中沒找到資料。"
-
-msgid "Open OSM file"
-msgstr "開啟 OSM 檔案"
-
 msgid "Reading was canceled"
 msgstr "讀取已被取消"
 
@@ -13381,6 +13556,9 @@ msgstr "正在連接伺服器..."
 msgid "Downloading OSM notes..."
 msgstr "正在下載 OSM 註解..."
 
+msgid "Downloading data..."
+msgstr "正在下載資料..."
+
 msgid ""
 "Could not connect to the OSM server. Please check your internet connection."
 msgstr "無法連線到 osm 伺服器。請檢查你的網際網路連線。"
@@ -13437,14 +13615,8 @@ msgstr "發現未預期的 id 0 osm 原型"
 msgid "Failed to evaluate {0}"
 msgstr ""
 
-msgid "Downloading data..."
-msgstr "正在下載資料..."
-
-msgid "WMS Files (*.wms)"
-msgstr "WMS 檔案 (*.wms)"
-
-msgid "Unsupported WMS file version; found {0}, expected {1}"
-msgstr "不支援的 WMS 檔案版本;發現 {0},應為 {1}"
+msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
+msgstr ""
 
 msgid "{0} bytes have been read"
 msgstr "已讀取 {0} byte"
@@ -14391,33 +14563,6 @@ msgstr "正在開啟 URL 網址:{0}"
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL 網址缺少 {0}/{1}/{2}"
 
-msgid "Outdated Java version"
-msgstr "過期的 JAVA 版本"
-
-msgid "Update Java"
-msgstr "更新 JAVA"
-
-msgid "You are running version {0} of Java."
-msgstr "你使用的 JAVA 版本是 {0}"
-
-msgid ""
-"This version is no longer supported by {0} since {1} and is not recommended "
-"for use."
-msgstr "此版本從 {1} 後已不再由 {0} 支援,不建議繼續使用。"
-
-msgid ""
-"JOSM will soon stop working with this version; we highly recommend you to "
-"update to Java {0}."
-msgstr "JOSM 之後會不能在這版本下執行,我們非常建議你更新到 JAVA {0}。"
-
-msgid ""
-"You may face critical Java bugs; we highly recommend you to update to Java "
-"{0}."
-msgstr ""
-
-msgid "Would you like to update now ?"
-msgstr "你想要現在就更新嗎?"
-
 msgid "reserved"
 msgstr ""
 
@@ -14476,20 +14621,6 @@ msgstr ""
 msgid "Value is too long (max {0} characters):"
 msgstr ""
 
-msgid "Do you want to paste these tags?"
-msgstr "你要貼上這些標籤?"
-
-msgid "Clear buffer"
-msgstr "清除緩衝區"
-
-msgid "Ignore warnings"
-msgstr "忽略警告"
-
-msgid ""
-"<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
-"contain any JOSM object or suitable text. </p></html>"
-msgstr "<html><p> 抱歉,無法從緩衝區貼上標籤,裡面沒有任何JOSM物件或是適當的文字。</p></html>"
-
 msgid "Unable to delete file {0}"
 msgstr ""
 
@@ -14512,109 +14643,13 @@ msgid "day"
 msgid_plural "days"
 msgstr[0] "天"
 
-msgid ""
-"Preference with key ''{0}'' does not include ''{1}''. Cannot restore window "
-"geometry from preferences."
-msgstr "偏好設定的設定鍵「{0}」不包含「{1}」。不能從偏好設定中回復視窗位置大小。"
-
-msgid ""
-"Preference with key ''{0}'' does not provide an int value for ''{1}''. Got "
-"{2}. Cannot restore window geometry from preferences."
-msgstr "偏好設定的設定鍵「{0}」沒有提供「{1}」的整數值。得到「{2}」。不能從偏好設定中回復視窗位置大小。"
-
-msgid ""
-"Failed to parse field ''{1}'' in preference with key ''{0}''. Exception was: "
-"{2}. Cannot restore window geometry from preferences."
-msgstr "無法解析偏好設定的設定鍵「{0}」的欄位「{1}」。異常為:「{2}」。不能從偏好設定中回復視窗位置大小。"
-
-msgid ""
-"Preference with key ''{0}'' does not exist. Cannot restore window geometry "
-"from preferences."
-msgstr "偏好設定的設定鍵「{0}」不存在。不能從偏好設定中回復視窗位置大小。"
-
-msgid "Ignoring malformed geometry: {0}"
-msgstr ""
-
 msgid "Failed to load XML schema."
 msgstr "無法載入 XML schema。"
 
-msgid "You have encountered a bug in JOSM"
-msgstr "你遇到了 JOSM 的程式錯誤"
-
-msgid ""
-"An unexpected exception occurred.\n"
-"This is always a coding error. If you are running the latest version of "
-"JOSM, please consider being kind and file a bug report."
-msgstr ""
-
-msgid "Debug information"
-msgstr "除錯資訊"
-
-msgid "Manually report at:"
-msgstr "手動報告到:"
-
-msgid "Is JOSM up to date?"
-msgstr "JOSM 是最新板嗎?"
-
-msgid "Send bug report"
-msgstr "傳送臭蟲報告"
-
-msgid ""
-"If you are running the latest version of JOSM and the plugins, please file a "
-"bug report in our bugtracker.\n"
-"There the error information should already be filled in for you. Please "
-"include information on how to reproduce the error and try to supply as much "
-"detail as possible."
-msgstr ""
-
-msgid "Report Bug"
-msgstr "回報程式錯誤"
-
-msgid "Suppress this error for this session."
-msgstr ""
-
-msgid "Suppress further error dialogs for this session."
-msgstr ""
-
-msgid "Ignore this error."
-msgstr "忽略這個錯誤。"
-
 msgid ""
 "Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Include the system status report."
-msgstr "附帶系統狀態報告。"
-
-msgid "Include information about the data you were working on."
-msgstr ""
-
-msgid "Include all stack traces."
-msgstr ""
-
-msgid "Your current version of JOSM is {0}"
-msgstr "你目前使用的 JOSM 版本是 {0}"
-
-msgid "JOSM is searching for updates..."
-msgstr "JOSM 正在搜尋更新..."
-
-msgid "An error occured while checking if your JOSM instance is up to date."
-msgstr ""
-
-msgid "JOSM is up to date."
-msgstr "JOSM 已是最新版。"
-
-msgid "JOSM is out of date. The current version is {0}. Try updating JOSM."
-msgstr "JOSM 是舊版,最新版是 {0},請記得更新。"
-
-msgid ""
-"Before you file a bug report make sure you have updated to the latest "
-"version of JOSM here:"
-msgstr ""
-
-msgid "Update JOSM"
-msgstr "更新 JOSM"
-
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -18327,9 +18362,6 @@ msgstr "板的內容"
 msgid "notice"
 msgstr "注意"
 
-msgid "history"
-msgstr "歷史"
-
 msgid "nature"
 msgstr "自然"
 
@@ -18909,6 +18941,9 @@ msgstr "社會機構"
 msgid "Nursing Home"
 msgstr "安養中心"
 
+msgid "Nursing Home (Legacy)"
+msgstr ""
+
 msgid "Group Home"
 msgstr "療養院"
 
@@ -21349,6 +21384,9 @@ msgstr "禮物/名產"
 msgid "Variety Store"
 msgstr "雜貨店"
 
+msgid "Charity"
+msgstr ""
+
 msgid "Bookmaker"
 msgstr "簽注站"
 
@@ -22209,6 +22247,78 @@ msgstr "商業區"
 msgid "Industrial"
 msgstr "工業區"
 
+msgctxt "industrial"
+msgid "bakery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brewery"
+msgstr ""
+
+msgctxt "industrial"
+msgid "brickyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "depot"
+msgstr ""
+
+msgctxt "industrial"
+msgid "distributor"
+msgstr ""
+
+msgctxt "industrial"
+msgid "factory"
+msgstr ""
+
+msgctxt "industrial"
+msgid "grinding_mill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "heating_station"
+msgstr ""
+
+msgctxt "industrial"
+msgid "machine_shop"
+msgstr ""
+
+msgctxt "industrial"
+msgid "mine"
+msgstr ""
+
+msgctxt "industrial"
+msgid "oil"
+msgstr ""
+
+msgctxt "industrial"
+msgid "port"
+msgstr ""
+
+msgctxt "industrial"
+msgid "salt_pond"
+msgstr ""
+
+msgctxt "industrial"
+msgid "sawmill"
+msgstr ""
+
+msgctxt "industrial"
+msgid "scrap_yard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "shipyard"
+msgstr ""
+
+msgctxt "industrial"
+msgid "slaughterhouse"
+msgstr ""
+
+msgctxt "industrial"
+msgid "warehouse"
+msgstr ""
+
 msgid "Garages"
 msgstr "車庫"
 
@@ -22904,6 +23014,9 @@ msgid ""
 "Landsat. Average age is 2.31 years, with some areas updated 2x per year."
 msgstr ""
 
+msgid "Esri World Imagery"
+msgstr ""
+
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -23656,6 +23769,9 @@ msgstr "Cadastre"
 msgid "French land registry"
 msgstr ""
 
+msgid "CRAIG - Auvergne 2016 - 25 cm"
+msgstr ""
+
 msgid "CRAIG - Auvergne 2013 - 25 cm"
 msgstr ""
 
@@ -23766,15 +23882,6 @@ msgstr ""
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr ""
 
-msgid "NRW-Atlas: ALKIS"
-msgstr ""
-
-msgid "NRW-Atlas: Digitale GrundKarte 1:5000"
-msgstr ""
-
-msgid "NRW-Atlas: Topographische Karte 1:10000"
-msgstr ""
-
 msgid "Metropole Ruhr: Luftbilder (10 cm)"
 msgstr ""
 
@@ -31702,15 +31809,21 @@ msgstr "回到前一個數值 (未變更 mtime)"
 msgid "Photo Geotagging Plugin"
 msgstr "相片地理標籤外掛程式"
 
-msgid "Writing position information to image files..."
-msgstr "將地點資訊寫入圖片檔案..."
-
 msgid "Could not read mtime."
 msgstr "無法讀取 mtime。"
 
 msgid "Could not write mtime."
 msgstr "無法寫入 mtime。"
 
+msgid "Writing position information to image files..."
+msgstr "將地點資訊寫入圖片檔案..."
+
+msgid "Retry"
+msgstr ""
+
+msgid "Unable to process file ''{0}'':"
+msgstr ""
+
 msgid "File could not be deleted!"
 msgstr "無法刪除檔案!"
 
@@ -32204,6 +32317,9 @@ msgstr "修正錯誤"
 msgid "PT: dummy test warning"
 msgstr "大眾運輸:偽測試警告"
 
+msgid "PT: Route needs to be sorted, found tag fixme:relation=order members"
+msgstr ""
+
 msgid "PT: Route contains a gap that can be fixed by sorting"
 msgstr "大眾運輸:路線裏有間隙,重整即可修正"
 
@@ -32212,6 +32328,9 @@ msgid ""
 "required"
 msgstr ""
 
+msgid "PT: Route gap can be closed by adding a single way"
+msgstr ""
+
 msgid ""
 "PT: The name of the first stop does not match the \"from\" tag of the route "
 "relation"
diff --git a/images/presets/shop/charity.svg b/images/presets/shop/charity.svg
new file mode 100644
index 0000000..f2e4d42
--- /dev/null
+++ b/images/presets/shop/charity.svg
@@ -0,0 +1,172 @@
+<?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://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://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="13"
+   height="16"
+   viewBox="0 0 13 16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="48.59375"
+     inkscape:cx="5.9950373"
+     inkscape:cy="7.0314104"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:window-width="1372"
+     inkscape:window-height="978"
+     inkscape:window-x="299"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     viewbox-height="16">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="0"
+       originy="0"
+       spacingx="1"
+       spacingy="1" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1037.3622)">
+    <path
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:0.70076954;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 5.0625 0 C 3.6987736 0 2.5996094 1.0972111 2.5996094 2.4609375 L 2.5996094 4.921875 C 2.5996094 6.2856014 3.6987736 7.3847656 5.0625 7.3847656 L 7.9375 7.3847656 C 9.3012264 7.3847656 10.400391 6.2856014 10.400391 4.921875 L 10.400391 2.4609375 C 10.400391 1.0972111 9.3012264 0 7.9375 0 L 5.0625 0 z M 5.1308594 1.2304688 L 7.8691406 1.2304688 C 8.5510157 1.2304688 9.0996094 1.7790625 9.0996094 2.4609375 L 9.0996094 3.6914062 C 9.0996094 4.3732813 8.5510157 4.9238281 7.8691406 [...]
+       id="rect818"
+       transform="translate(0,1037.3622)" />
+    <rect
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:0.70076954;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect816"
+       width="13"
+       height="12.308022"
+       x="0"
+       y="1041.0542"
+       ry="1.3080008"
+       rx="0" />
+    <g
+       id="g846"
+       transform="matrix(1.3526755,0,0,1.3029527,21.455122,-319.62218)">
+      <ellipse
+         ry="1.9999826"
+         rx="2"
+         cx="-11"
+         cy="1047.3622"
+         id="path824"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.55400002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <circle
+         r="1.5350482"
+         cy="1047.8972"
+         cx="-11.464952"
+         id="path822"
+         style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:0.85041672;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         d="m -10,1047.8622 a 1.5,1.5 0 0 1 -0.03259,0.311"
+         sodipodi:open="true"
+         sodipodi:end="0.20883039"
+         sodipodi:start="0"
+         sodipodi:ry="1.5"
+         sodipodi:rx="1.5"
+         sodipodi:cy="1047.8622"
+         sodipodi:cx="-11.5"
+         sodipodi:type="arc"
+         id="path826"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.55400002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path839"
+         d="m -12,1049.3622 h 2 l 1,-1 h -2 z"
+         style="fill:#ac39ac;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path834"
+         d="m -11,1047.3622 h 3 l -1.5,2 z"
+         style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g846-6"
+       transform="matrix(-1.3526755,0,0,-1.3029527,-8.4004468,2414.3698)">
+      <ellipse
+         ry="1.9999826"
+         rx="2"
+         cx="-11"
+         cy="1047.3622"
+         id="path824-9"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.55400002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <circle
+         r="1.5350482"
+         cy="1047.8972"
+         cx="-11.464952"
+         id="path822-7"
+         style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:0.85041672;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         d="m -10,1047.8622 a 1.5,1.5 0 0 1 -0.03259,0.311"
+         sodipodi:open="true"
+         sodipodi:end="0.20883039"
+         sodipodi:start="0"
+         sodipodi:ry="1.5"
+         sodipodi:rx="1.5"
+         sodipodi:cy="1047.8622"
+         sodipodi:cx="-11.5"
+         sodipodi:type="arc"
+         id="path826-3"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.55400002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path839-7"
+         d="m -12,1049.3622 h 2 l 1,-1 h -2 z"
+         style="fill:#ac39ac;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path834-8"
+         d="m -11,1047.3622 h 3 l -1.5,2 z"
+         style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/linux/latest/usr/bin/josm-latest b/linux/latest/usr/bin/josm-latest
index 9d1504b..5108cab 100755
--- a/linux/latest/usr/bin/josm-latest
+++ b/linux/latest/usr/bin/josm-latest
@@ -46,6 +46,9 @@ fi
 
 if [ "$JAVACMD" ]; then
     echo "Using $JAVACMD to execute josm-latest." || true
+    if [[ $JAVACMD == *"java-9"* ]]; then
+        JAVA_OPTS="--add-modules java.se.ee $JAVA_OPTS"
+    fi
     set +e
     while true; do
         $JAVACMD $JAVA_OPTS -jar /usr/share/josm-latest/josm-latest.jar "$@"
diff --git a/linux/tested/usr/bin/josm b/linux/tested/usr/bin/josm
index 9aa40bf..18dce38 100755
--- a/linux/tested/usr/bin/josm
+++ b/linux/tested/usr/bin/josm
@@ -46,6 +46,9 @@ fi
 
 if [ "$JAVACMD" ]; then
     echo "Using $JAVACMD to execute josm." || true
+    if [[ $JAVACMD == *"java-9"* ]]; then
+        JAVA_OPTS="--add-modules java.se.ee $JAVA_OPTS"
+    fi
     set +e
     while true; do
         $JAVACMD $JAVA_OPTS -jar /usr/share/josm/josm.jar "$@"
diff --git a/netbeans/nbproject/project.properties b/netbeans/nbproject/project.properties
index 978c16f..7f46600 100644
--- a/netbeans/nbproject/project.properties
+++ b/netbeans/nbproject/project.properties
@@ -37,7 +37,7 @@ file.reference.commons-logging-1.1.3.jar=../test/lib/unitils-core/commons-loggin
 file.reference.commons-testing-2.1.0.jar=../test/lib/commons-testing/commons-testing-2.1.0.jar
 file.reference.core-src=../src
 file.reference.debug-1.0.jar=../test/lib/fest/debug-1.0.jar
-file.reference.equalsverifier-2.3.1.jar=../test/lib/equalsverifier-2.3.1.jar
+file.reference.equalsverifier-2.3.3.jar=../test/lib/equalsverifier-2.3.3.jar
 file.reference.fest-assert-1.0.jar=../test/lib/fest/fest-assert-1.0.jar
 file.reference.fest-reflect-1.1.jar=../test/lib/fest/fest-reflect-1.1.jar
 file.reference.fest-swing-1.1.jar=../test/lib/fest/fest-swing-1.1.jar
@@ -57,6 +57,7 @@ file.reference.test-performance=../test/performance
 file.reference.test-unit=../test/unit
 file.reference.unitils-core-3.4.6.jar=../test/lib/unitils-core/unitils-core-3.4.6.jar
 file.reference.system-rules-1.16.1.jar=../test/lib/system-rules-1.16.1.jar
+file.reference.wiremock-standalone-2.7.1.jar=../test/lib/wiremock-standalone-2.7.1.jar
 includes=**/*.java
 jar.compress=false
 javac.classpath=
@@ -72,7 +73,7 @@ javac.test.classpath=\
     ${build.classes.dir}:\
     ${file.reference.junit-4.12.jar}:\
     ${file.reference.jfcunit.jar}:\
-    ${file.reference.equalsverifier-2.3.1.jar}:\
+    ${file.reference.equalsverifier-2.3.3.jar}:\
     ${file.reference.hamcrest-core-1.3.jar}:\
     ${file.reference.MRJToolkitStubs-1.0.jar}:\
     ${file.reference.debug-1.0.jar}:\
@@ -90,6 +91,7 @@ javac.test.classpath=\
     ${file.reference.ognl-2.6.9.jar}:\
     ${file.reference.unitils-core-3.4.6.jar}:\
     ${file.reference.system-rules-1.16.1.jar}:\
+    ${file.reference.wiremock-standalone-2.7.1.jar}:\
     ${file.reference.findbugs.jar}:\
     ${file.reference.commons-testing-2.1.0.jar}
 javac.test.processorpath=\
diff --git a/src/org/apache/commons/jcs/engine/control/CompositeCache.java b/src/org/apache/commons/jcs/engine/control/CompositeCache.java
index 65cb226..0884562 100644
--- a/src/org/apache/commons/jcs/engine/control/CompositeCache.java
+++ b/src/org/apache/commons/jcs/engine/control/CompositeCache.java
@@ -504,7 +504,8 @@ public class CompositeCache<K, V>
 
         boolean found = false;
 
-        if ( log.isDebugEnabled() )
+        final boolean debugEnabled = log.isDebugEnabled(); // tested anyway but don't test it > once
+        if (debugEnabled)
         {
             log.debug( "get: key = " + key + ", localOnly = " + localOnly );
         }
@@ -521,22 +522,12 @@ public class CompositeCache<K, V>
                     // Found in memory cache
                     if ( isExpired( element ) )
                     {
-                        if ( log.isDebugEnabled() )
-                        {
-                            log.debug( cacheAttr.getCacheName() + " - Memory cache hit, but element expired" );
-                        }
-
                         missCountExpired.incrementAndGet();
                         remove( key );
                         element = null;
                     }
                     else
                     {
-                        if ( log.isDebugEnabled() )
-                        {
-                            log.debug( cacheAttr.getCacheName() + " - Memory cache hit" );
-                        }
-
                         // Update counters
                         hitCountRam.incrementAndGet();
                     }
@@ -555,7 +546,7 @@ public class CompositeCache<K, V>
 
                             if ( !localOnly || cacheType == CacheType.DISK_CACHE )
                             {
-                                if ( log.isDebugEnabled() )
+                                if (debugEnabled)
                                 {
                                     log.debug( "Attempting to get from aux [" + aux.getCacheName() + "] which is of type: "
                                         + cacheType );
@@ -571,7 +562,7 @@ public class CompositeCache<K, V>
                                 }
                             }
 
-                            if ( log.isDebugEnabled() )
+                            if (debugEnabled)
                             {
                                 log.debug( "Got CacheElement: " + element );
                             }
@@ -581,7 +572,7 @@ public class CompositeCache<K, V>
                             {
                                 if ( isExpired( element ) )
                                 {
-                                    if ( log.isDebugEnabled() )
+                                    if (debugEnabled)
                                     {
                                         log.debug( cacheAttr.getCacheName() + " - Aux cache[" + aux.getCacheName() + "] hit, but element expired." );
                                     }
@@ -597,7 +588,7 @@ public class CompositeCache<K, V>
                                 }
                                 else
                                 {
-                                    if ( log.isDebugEnabled() )
+                                    if (debugEnabled)
                                     {
                                         log.debug( cacheAttr.getCacheName() + " - Aux cache[" + aux.getCacheName() + "] hit" );
                                     }
@@ -625,11 +616,22 @@ public class CompositeCache<K, V>
         {
             missCountNotFound.incrementAndGet();
 
-            if ( log.isDebugEnabled() )
+            if (debugEnabled)
             {
                 log.debug( cacheAttr.getCacheName() + " - Miss" );
             }
         }
+        else if (debugEnabled) // we log here to avoid to log in the synchronized block
+        {
+            if (element == null)
+            {
+                log.debug( cacheAttr.getCacheName() + " - Memory cache hit, but element expired" );
+            }
+            else
+            {
+                log.debug( cacheAttr.getCacheName() + " - Memory cache hit" );
+            }
+        }
 
         if (element != null)
         {
diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
index cbfb54a..3a1c69e 100644
--- a/src/org/openstreetmap/josm/Main.java
+++ b/src/org/openstreetmap/josm/Main.java
@@ -3,19 +3,13 @@ package org.openstreetmap.josm;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.GraphicsEnvironment;
-import java.awt.event.KeyEvent;
-import java.io.File;
 import java.io.IOException;
 import java.lang.ref.WeakReference;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.text.MessageFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -26,7 +20,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import java.util.StringTokenizer;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -34,76 +27,36 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
 import javax.swing.Action;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.swing.KeyStroke;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import javax.swing.UnsupportedLookAndFeelException;
-
-import org.openstreetmap.gui.jmapviewer.FeatureAdapter;
+
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.actions.OpenFileAction;
-import org.openstreetmap.josm.actions.OpenLocationAction;
-import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
-import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
-import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
-import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
-import org.openstreetmap.josm.actions.mapmode.DrawAction;
-import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.cache.JCSCacheManager;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
-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.projection.Projection;
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
-import org.openstreetmap.josm.data.validation.OsmValidator;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MainPanel;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
-import org.openstreetmap.josm.gui.ProgramArguments;
-import org.openstreetmap.josm.gui.ProgramArguments.Option;
-import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 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;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
-import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.util.RedirectInputMap;
 import org.openstreetmap.josm.io.FileWatcher;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.io.OsmApi;
-import org.openstreetmap.josm.io.OsmApiInitializationException;
-import org.openstreetmap.josm.io.OsmTransferCanceledException;
-import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
-import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.OsmUrlToBounds;
-import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
 import org.openstreetmap.josm.tools.PlatformHook;
 import org.openstreetmap.josm.tools.PlatformHookOsx;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.tools.PlatformHookWindows;
-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;
 
@@ -132,9 +85,11 @@ public abstract class Main {
      * You do not need this when accessing the layer manager. The layer manager will be empty if no map view is shown.
      *
      * @return <code>true</code> if JOSM currently displays a map view
+     * @deprecated use {@link org.openstreetmap.josm.gui.MainApplication#isDisplayingMapView()}
      */
+    @Deprecated
     public static boolean isDisplayingMapView() {
-        return map != null && map.mapView != null;
+        return MainApplication.isDisplayingMapView();
     }
 
     /**
@@ -149,10 +104,11 @@ public abstract class Main {
 
     /**
      * The worker thread slave. This is for executing all long and intensive
-     * calculations. The executed runnables are guaranteed to be executed separately
-     * and sequential.
+     * calculations. The executed runnables are guaranteed to be executed separately and sequential.
+     * @deprecated use {@link MainApplication#worker} instead
      */
-    public static final ExecutorService worker = new ProgressMonitorExecutor("main-worker-%d", Thread.NORM_PRIORITY);
+    @Deprecated
+    public static ExecutorService worker;
 
     /**
      * Global application preferences
@@ -162,55 +118,42 @@ public abstract class Main {
     /**
      * The MapFrame.
      * <p>
-     * There should be no need to access this to access any map data. Use {@link #layerManager} instead.
+     * There should be no need to access this to access any map data. Use {@link MainApplication#getLayerManager} instead.
      *
+     * @deprecated Use {@link MainApplication#getMap()} instead
      * @see MainPanel
      */
+    @Deprecated
     public static MapFrame map;
 
     /**
-     * Provides access to the layers displayed in the main view.
-     * @since 10271
-     */
-    private static final MainLayerManager layerManager = new MainLayerManager();
-
-    /**
      * The toolbar preference control to register new actions.
+     * @deprecated Use {@link MainApplication#getToolbar} instead
      */
+    @Deprecated
     public static volatile ToolbarPreferences toolbar;
 
     /**
      * The commands undo/redo handler.
      */
-    public final UndoRedoHandler undoRedo = new UndoRedoHandler();
-
-    /**
-     * The progress monitor being currently displayed.
-     */
-    public static PleaseWaitProgressMonitor currentProgressMonitor;
+    public final UndoRedoHandler undoRedo = MainApplication.undoRedo;
 
     /**
      * The main menu bar at top of screen.
+     * @deprecated Use {@link MainApplication#getMenu} instead
      */
+    @Deprecated
     public MainMenu menu;
 
     /**
      * The main panel.
+     * @deprecated Use {@link MainApplication#getMainPanel} instead
      * @since 12125
      */
+    @Deprecated
     public MainPanel panel;
 
     /**
-     * The same main panel, required to be static for {@code MapFrameListener} handling.
-     */
-    protected static MainPanel mainPanel;
-
-    /**
-     * The private content pane of {@code MainFrame}, required to be static for shortcut handling.
-     */
-    protected static JComponent contentPanePrivate;
-
-    /**
      * The file watcher service.
      */
     public static final FileWatcher fileWatcher = new FileWatcher();
@@ -231,7 +174,9 @@ public abstract class Main {
      * Replies the first lines of last 5 error and warning messages, used for bug reports
      * @return the first lines of last 5 error and warning messages
      * @since 7420
+     * @deprecated Use {@link Logging#getLastErrorAndWarnings}.
      */
+    @Deprecated
     public static final Collection<String> getLastErrorAndWarnings() {
         return Logging.getLastErrorAndWarnings();
     }
@@ -239,7 +184,9 @@ public abstract class Main {
     /**
      * Clears the list of last error and warning messages.
      * @since 8959
+     * @deprecated Use {@link Logging#clearLastErrorAndWarnings}.
      */
+    @Deprecated
     public static void clearLastErrorAndWarnings() {
         Logging.clearLastErrorAndWarnings();
     }
@@ -248,7 +195,9 @@ public abstract class Main {
      * Prints an error message if logging is on.
      * @param msg The message to print.
      * @since 6248
+     * @deprecated Use {@link Logging#error(String)}.
      */
+    @Deprecated
     public static void error(String msg) {
         Logging.error(msg);
     }
@@ -256,7 +205,9 @@ public abstract class Main {
     /**
      * Prints a warning message if logging is on.
      * @param msg The message to print.
+     * @deprecated Use {@link Logging#warn(String)}.
      */
+    @Deprecated
     public static void warn(String msg) {
         Logging.warn(msg);
     }
@@ -264,7 +215,9 @@ public abstract class Main {
     /**
      * Prints an informational message if logging is on.
      * @param msg The message to print.
+     * @deprecated Use {@link Logging#info(String)}.
      */
+    @Deprecated
     public static void info(String msg) {
         Logging.info(msg);
     }
@@ -272,7 +225,9 @@ public abstract class Main {
     /**
      * Prints a debug message if logging is on.
      * @param msg The message to print.
+     * @deprecated Use {@link Logging#debug(String)}.
      */
+    @Deprecated
     public static void debug(String msg) {
         Logging.debug(msg);
     }
@@ -280,7 +235,9 @@ public abstract class Main {
     /**
      * Prints a trace message if logging is on.
      * @param msg The message to print.
+     * @deprecated Use {@link Logging#trace(String)}.
      */
+    @Deprecated
     public static void trace(String msg) {
         Logging.trace(msg);
     }
@@ -290,9 +247,11 @@ public abstract class Main {
      * Useful to avoid costly construction of debug messages when not enabled.
      * @return {@code true} if log level is at least debug, {@code false} otherwise
      * @since 6852
+     * @deprecated Use {@link Logging#isDebugEnabled}.
      */
+    @Deprecated
     public static boolean isDebugEnabled() {
-        return Logging.isLoggingEnabled(Logging.LEVEL_DEBUG);
+        return Logging.isDebugEnabled();
     }
 
     /**
@@ -300,9 +259,11 @@ public abstract class Main {
      * Useful to avoid costly construction of trace messages when not enabled.
      * @return {@code true} if log level is at least trace, {@code false} otherwise
      * @since 6852
+     * @deprecated Use {@link Logging#isTraceEnabled}.
      */
+    @Deprecated
     public static boolean isTraceEnabled() {
-        return Logging.isLoggingEnabled(Logging.LEVEL_TRACE);
+        return Logging.isTraceEnabled();
     }
 
     /**
@@ -311,7 +272,9 @@ public abstract class Main {
      * @param msg The formatted message to print.
      * @param objects The objects to insert into format string.
      * @since 6248
+     * @deprecated Use {@link Logging#error(String, Object...)}.
      */
+    @Deprecated
     public static void error(String msg, Object... objects) {
         Logging.error(msg, objects);
     }
@@ -321,7 +284,9 @@ public abstract class Main {
      * function to format text.
      * @param msg The formatted message to print.
      * @param objects The objects to insert into format string.
+     * @deprecated Use {@link Logging#warn(String, Object...)}.
      */
+    @Deprecated
     public static void warn(String msg, Object... objects) {
         Logging.warn(msg, objects);
     }
@@ -331,7 +296,9 @@ public abstract class Main {
      * function to format text.
      * @param msg The formatted message to print.
      * @param objects The objects to insert into format string.
+     * @deprecated Use {@link Logging#info(String, Object...)}.
      */
+    @Deprecated
     public static void info(String msg, Object... objects) {
         Logging.info(msg, objects);
     }
@@ -341,7 +308,9 @@ public abstract class Main {
      * function to format text.
      * @param msg The formatted message to print.
      * @param objects The objects to insert into format string.
+     * @deprecated Use {@link Logging#debug(String, Object...)}.
      */
+    @Deprecated
     public static void debug(String msg, Object... objects) {
         Logging.debug(msg, objects);
     }
@@ -351,7 +320,9 @@ public abstract class Main {
      * function to format text.
      * @param msg The formatted message to print.
      * @param objects The objects to insert into format string.
+     * @deprecated Use {@link Logging#trace(String, Object...)}.
      */
+    @Deprecated
     public static void trace(String msg, Object... objects) {
         Logging.trace(msg, objects);
     }
@@ -360,36 +331,44 @@ public abstract class Main {
      * Prints an error message for the given Throwable.
      * @param t The throwable object causing the error
      * @since 6248
+     * @deprecated Use {@link Logging#error(Throwable)}.
      */
+    @Deprecated
     public static void error(Throwable t) {
-        Logging.logWithStackTrace(Logging.LEVEL_ERROR, t);
+        Logging.error(t);
     }
 
     /**
      * Prints a warning message for the given Throwable.
      * @param t The throwable object causing the error
      * @since 6248
+     * @deprecated Use {@link Logging#warn(Throwable)}.
      */
+    @Deprecated
     public static void warn(Throwable t) {
-        Logging.logWithStackTrace(Logging.LEVEL_WARN, t);
+        Logging.warn(t);
     }
 
     /**
      * Prints a debug message for the given Throwable. Useful for exceptions usually ignored
      * @param t The throwable object causing the error
      * @since 10420
+     * @deprecated Use {@link Logging#debug(Throwable)}.
      */
+    @Deprecated
     public static void debug(Throwable t) {
-        Logging.log(Logging.LEVEL_DEBUG, t);
+        Logging.debug(t);
     }
 
     /**
      * Prints a trace message for the given Throwable. Useful for exceptions usually ignored
      * @param t The throwable object causing the error
      * @since 10420
+     * @deprecated Use {@link Logging#trace(Throwable)}.
      */
+    @Deprecated
     public static void trace(Throwable t) {
-        Logging.log(Logging.LEVEL_TRACE, t);
+        Logging.trace(t);
     }
 
     /**
@@ -397,7 +376,10 @@ public abstract class Main {
      * @param t The throwable object causing the error
      * @param stackTrace {@code true}, if the stacktrace should be displayed
      * @since 6642
+     * @deprecated Use {@link Logging#log(java.util.logging.Level, Throwable)}
+     *              or {@link Logging#logWithStackTrace(java.util.logging.Level, Throwable)}.
      */
+    @Deprecated
     public static void error(Throwable t, boolean stackTrace) {
         if (stackTrace) {
             Logging.log(Logging.LEVEL_ERROR, t);
@@ -411,7 +393,9 @@ public abstract class Main {
      * @param t The throwable object causing the error
      * @param message additional error message
      * @since 10420
+     * @deprecated Use {@link Logging#log(java.util.logging.Level, String, Throwable)}.
      */
+    @Deprecated
     public static void error(Throwable t, String message) {
         Logging.log(Logging.LEVEL_ERROR, message, t);
     }
@@ -421,7 +405,10 @@ public abstract class Main {
      * @param t The throwable object causing the error
      * @param stackTrace {@code true}, if the stacktrace should be displayed
      * @since 6642
+     * @deprecated Use {@link Logging#log(java.util.logging.Level, Throwable)}
+     *              or {@link Logging#logWithStackTrace(java.util.logging.Level, Throwable)}.
      */
+    @Deprecated
     public static void warn(Throwable t, boolean stackTrace) {
         if (stackTrace) {
             Logging.log(Logging.LEVEL_WARN, t);
@@ -435,7 +422,9 @@ public abstract class Main {
      * @param t The throwable object causing the error
      * @param message additional error message
      * @since 10420
+     * @deprecated Use {@link Logging#log(java.util.logging.Level, String, Throwable)}.
      */
+    @Deprecated
     public static void warn(Throwable t, String message) {
         Logging.log(Logging.LEVEL_WARN, message, t);
     }
@@ -445,7 +434,9 @@ public abstract class Main {
      * @param t The error
      * @return The human-readable error message
      * @since 6642
+     * @deprecated Use {@link Logging#getErrorMessage}.
      */
+    @Deprecated
     public static String getErrorMessage(Throwable t) {
         if (t == null) {
             return null;
@@ -456,7 +447,7 @@ public abstract class Main {
 
     /**
      * Platform specific code goes in here.
-     * Plugins may replace it, however, some hooks will be called before any plugins have been loeaded.
+     * Plugins may replace it, however, some hooks will be called before any plugins have been loaded.
      * So if you need to hook into those early ones, split your class and send the one with the early hooks
      * to the JOSM team for inclusion.
      */
@@ -509,92 +500,95 @@ public abstract class Main {
      * @since 10340
      */
     public void initialize() {
-        fileWatcher.start();
-
-        new InitializationTask(tr("Executing platform startup hook"), platform::startupHook).call();
-
-        new InitializationTask(tr("Building main menu"), this::initializeMainWindow).call();
-
-        undoRedo.addCommandQueueListener(redoUndoListener);
-
-        // creating toolbar
-        GuiHelper.runInEDTAndWait(() -> contentPanePrivate.add(toolbar.control, BorderLayout.NORTH));
-
-        registerActionShortcut(menu.help, Shortcut.registerShortcut("system:help", tr("Help"),
-                KeyEvent.VK_F1, Shortcut.DIRECT));
-
-        // This needs to be done before RightAndLefthandTraffic::initialize is called
-        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<>();
-
-        tasks.add(new InitializationTask(tr("Initializing OSM API"), () -> {
-                // We try to establish an API connection early, so that any API
-                // capabilities are already known to the editor instance. However
-                // if it goes wrong that's not critical at this stage.
-                try {
-                    OsmApi.getOsmApi().initialize(null, true);
-                } catch (OsmTransferCanceledException | OsmApiInitializationException e) {
-                    Main.warn(getErrorMessage(Utils.getRootCause(e)));
-                }
-            }));
-
-        tasks.add(new InitializationTask(tr("Initializing internal traffic data"), RightAndLefthandTraffic::initialize));
-
-        tasks.add(new InitializationTask(tr("Initializing validator"), OsmValidator::initialize));
-
-        tasks.add(new InitializationTask(tr("Initializing presets"), TaggingPresets::initialize));
-
-        tasks.add(new InitializationTask(tr("Initializing map styles"), MapPaintPreference::initialize));
-
-        tasks.add(new InitializationTask(tr("Loading imagery preferences"), ImageryPreference::initialize));
+        // Initializes tasks that must be run before parallel tasks
+        runInitializationTasks(beforeInitializationTasks());
 
+        // Initializes tasks to be executed (in parallel) by a ExecutorService
         try {
             ExecutorService service = Executors.newFixedThreadPool(
                     Runtime.getRuntime().availableProcessors(), Utils.newThreadFactory("main-init-%d", Thread.NORM_PRIORITY));
-            for (Future<Void> i : service.invokeAll(tasks)) {
+            for (Future<Void> i : service.invokeAll(parallelInitializationTasks())) {
                 i.get();
             }
             // asynchronous initializations to be completed eventually
-            service.submit((Runnable) TMSLayer::getCache);
-            service.submit((Runnable) OsmValidator::initializeTests);
-            service.submit(OverpassTurboQueryWizard::getInstance);
+            asynchronousRunnableTasks().forEach(service::submit);
+            asynchronousCallableTasks().forEach(service::submit);
             service.shutdown();
         } catch (InterruptedException | ExecutionException ex) {
             throw new JosmRuntimeException(ex);
         }
 
-        // hooks for the jmapviewer component
-        FeatureAdapter.registerBrowserAdapter(OpenBrowser::displayUrl);
-        FeatureAdapter.registerTranslationAdapter(I18n.getTranslationAdapter());
-        FeatureAdapter.registerLoggingAdapter(name -> Logging.getLogger());
+        // Initializes tasks that must be run after parallel tasks
+        runInitializationTasks(afterInitializationTasks());
+    }
+
+    private static void runInitializationTasks(List<InitializationTask> tasks) {
+        for (InitializationTask task : tasks) {
+            try {
+                task.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();
+            }
+        }
+    }
+
+    /**
+     * Returns tasks that must be run before parallel tasks.
+     * @return tasks that must be run before parallel tasks
+     * @see #afterInitializationTasks
+     * @see #parallelInitializationTasks
+     */
+    protected List<InitializationTask> beforeInitializationTasks() {
+        return Collections.emptyList();
+    }
+
+    /**
+     * Returns tasks to be executed (in parallel) by a ExecutorService.
+     * @return tasks to be executed (in parallel) by a ExecutorService
+     */
+    protected Collection<InitializationTask> parallelInitializationTasks() {
+        return Collections.emptyList();
+    }
 
-        new InitializationTask(tr("Updating user interface"), () -> GuiHelper.runInEDTAndWait(() -> {
-            toolbar.refreshToolbarControl();
-            toolbar.control.updateUI();
-            contentPanePrivate.updateUI();
-        })).call();
+    /**
+     * Returns asynchronous callable initializations to be completed eventually
+     * @return asynchronous callable initializations to be completed eventually
+     */
+    protected List<Callable<?>> asynchronousCallableTasks() {
+        return Collections.emptyList();
     }
 
     /**
-     * Called once at startup to initialize the main window content.
-     * Should set {@link #menu} and {@link #panel}
+     * Returns asynchronous runnable initializations to be completed eventually
+     * @return asynchronous runnable initializations to be completed eventually
      */
-    protected abstract void initializeMainWindow();
+    protected List<Runnable> asynchronousRunnableTasks() {
+        return Collections.emptyList();
+    }
 
-    static final class InitializationTask implements Callable<Void> {
+    /**
+     * Returns tasks that must be run after parallel tasks.
+     * @return tasks that must be run after parallel tasks
+     * @see #beforeInitializationTasks
+     * @see #parallelInitializationTasks
+     */
+    protected List<InitializationTask> afterInitializationTasks() {
+        return Collections.emptyList();
+    }
+
+    protected static final class InitializationTask implements Callable<Void> {
 
         private final String name;
         private final Runnable task;
 
-        protected InitializationTask(String name, Runnable task) {
+        /**
+         * Constructs a new {@code InitializationTask}.
+         * @param name translated name to be displayed to user
+         * @param task runnable initialization task
+         */
+        public InitializationTask(String name, Runnable task) {
             this.name = name;
             this.task = task;
         }
@@ -617,102 +611,94 @@ public abstract class Main {
      * Returns the main layer manager that is used by the map view.
      * @return The layer manager. The value returned will never change.
      * @since 10279
+     * @deprecated use {@link MainApplication#getLayerManager} instead
      */
+    @Deprecated
     public static MainLayerManager getLayerManager() {
-        return layerManager;
+        return MainApplication.getLayerManager();
     }
 
     /**
      * Replies the current selected primitives, from a end-user point of view.
      * It is not always technically the same collection of primitives than {@link DataSet#getSelected()}.
-     * Indeed, if the user is currently in drawing mode, only the way currently being drawn is returned,
-     * see {@link DrawAction#getInProgressSelection()}.
-     *
      * @return The current selected primitives, from a end-user point of view. Can be {@code null}.
      * @since 6546
      */
     public Collection<OsmPrimitive> getInProgressSelection() {
-        if (map != null && map.mapMode instanceof DrawAction) {
-            return ((DrawAction) map.mapMode).getInProgressSelection();
-        } else {
-            DataSet ds = getLayerManager().getEditDataSet();
-            if (ds == null) return null;
-            return ds.getSelected();
-        }
+        return Collections.emptyList();
     }
 
-    public static void redirectToMainContentPane(JComponent source) {
-        RedirectInputMap.redirect(source, contentPanePrivate);
+    /**
+     * Gets the data set of the active edit layer.
+     * @return That data set, <code>null</code> if there is no edit layer.
+     * @since 12691
+     */
+    public DataSet getEditDataSet() {
+        return null;
     }
 
     /**
      * Registers a {@code JosmAction} and its shortcut.
      * @param action action defining its own shortcut
+     * @deprecated use {@link MainApplication#registerActionShortcut(JosmAction)} instead
      */
+    @Deprecated
     public static void registerActionShortcut(JosmAction action) {
-        registerActionShortcut(action, action.getShortcut());
+        MainApplication.registerActionShortcut(action);
     }
 
     /**
      * Registers an action and its shortcut.
      * @param action action to register
      * @param shortcut shortcut to associate to {@code action}
+     * @deprecated use {@link MainApplication#registerActionShortcut(Action, Shortcut)} instead
      */
+    @Deprecated
     public static void registerActionShortcut(Action action, Shortcut shortcut) {
-        KeyStroke keyStroke = shortcut.getKeyStroke();
-        if (keyStroke == null)
-            return;
-
-        InputMap inputMap = contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
-        Object existing = inputMap.get(keyStroke);
-        if (existing != null && !existing.equals(action)) {
-            info(String.format("Keystroke %s is already assigned to %s, will be overridden by %s", keyStroke, existing, action));
-        }
-        inputMap.put(keyStroke, action);
-
-        contentPanePrivate.getActionMap().put(action, action);
+        MainApplication.registerActionShortcut(action, shortcut);
     }
 
     /**
      * Unregisters a shortcut.
      * @param shortcut shortcut to unregister
+     * @deprecated use {@link MainApplication#unregisterShortcut(Shortcut)} instead
      */
+    @Deprecated
     public static void unregisterShortcut(Shortcut shortcut) {
-        contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(shortcut.getKeyStroke());
+        MainApplication.unregisterShortcut(shortcut);
     }
 
     /**
      * Unregisters a {@code JosmAction} and its shortcut.
      * @param action action to unregister
+     * @deprecated use {@link MainApplication#unregisterActionShortcut(JosmAction)} instead
      */
+    @Deprecated
     public static void unregisterActionShortcut(JosmAction action) {
-        unregisterActionShortcut(action, action.getShortcut());
+        MainApplication.unregisterActionShortcut(action);
     }
 
     /**
      * Unregisters an action and its shortcut.
      * @param action action to unregister
      * @param shortcut shortcut to unregister
+     * @deprecated use {@link MainApplication#unregisterActionShortcut(Action, Shortcut)} instead
      */
+    @Deprecated
     public static void unregisterActionShortcut(Action action, Shortcut shortcut) {
-        unregisterShortcut(shortcut);
-        contentPanePrivate.getActionMap().remove(action);
+        MainApplication.unregisterActionShortcut(action, shortcut);
     }
 
     /**
      * Replies the registered action for the given shortcut
      * @param shortcut The shortcut to look for
      * @return the registered action for the given shortcut
+     * @deprecated use {@link MainApplication#getRegisteredActionShortcut(Shortcut)} instead
      * @since 5696
      */
+    @Deprecated
     public static Action getRegisteredActionShortcut(Shortcut shortcut) {
-        KeyStroke keyStroke = shortcut.getKeyStroke();
-        if (keyStroke == null)
-            return null;
-        Object action = contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).get(keyStroke);
-        if (action instanceof Action)
-            return (Action) action;
-        return null;
+        return MainApplication.getRegisteredActionShortcut(shortcut);
     }
 
     ///////////////////////////////////////////////////////////////////////////
@@ -720,133 +706,34 @@ public abstract class Main {
     ///////////////////////////////////////////////////////////////////////////
 
     /**
-     * Listener that sets the enabled state of undo/redo menu entries.
-     */
-    protected final CommandQueueListener redoUndoListener = (queueSize, redoSize) -> {
-            menu.undo.setEnabled(queueSize > 0);
-            menu.redo.setEnabled(redoSize > 0);
-        };
-
-    /**
      * Should be called before the main constructor to setup some parameter stuff
      */
     public static void preConstructorInit() {
-        ProjectionPreference.setProjection();
-
-        String defaultlaf = platform.getDefaultStyle();
-        String laf = LafPreference.LAF.get();
-        try {
-            UIManager.setLookAndFeel(laf);
-        } catch (final NoClassDefFoundError | ClassNotFoundException e) {
-            // Try to find look and feel in plugin classloaders
-            Main.trace(e);
-            Class<?> klass = null;
-            for (ClassLoader cl : PluginHandler.getResourceClassLoaders()) {
-                try {
-                    klass = cl.loadClass(laf);
-                    break;
-                } catch (ClassNotFoundException ex) {
-                    Main.trace(ex);
-                }
-            }
-            if (klass != null && LookAndFeel.class.isAssignableFrom(klass)) {
-                try {
-                    UIManager.setLookAndFeel((LookAndFeel) klass.getConstructor().newInstance());
-                } catch (ReflectiveOperationException ex) {
-                    warn(ex, "Cannot set Look and Feel: " + laf + ": "+ex.getMessage());
-                } catch (UnsupportedLookAndFeelException ex) {
-                    info("Look and Feel not supported: " + laf);
-                    LafPreference.LAF.put(defaultlaf);
-                    trace(ex);
-                }
-            } else {
-                info("Look and Feel not found: " + laf);
-                LafPreference.LAF.put(defaultlaf);
-            }
-        } catch (UnsupportedLookAndFeelException e) {
-            info("Look and Feel not supported: " + laf);
-            LafPreference.LAF.put(defaultlaf);
-            trace(e);
-        } catch (InstantiationException | IllegalAccessException e) {
-            error(e);
-        }
-        toolbar = new ToolbarPreferences();
-
-        UIManager.put("OptionPane.okIcon", ImageProvider.get("ok"));
-        UIManager.put("OptionPane.yesIcon", UIManager.get("OptionPane.okIcon"));
-        UIManager.put("OptionPane.cancelIcon", ImageProvider.get("cancel"));
-        UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
-        // Ensures caret color is the same than text foreground color, see #12257
-        // See http://docs.oracle.com/javase/8/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
-        for (String p : Arrays.asList(
-                "EditorPane", "FormattedTextField", "PasswordField", "TextArea", "TextField", "TextPane")) {
-            UIManager.put(p+".caretForeground", UIManager.getColor(p+".foreground"));
-        }
-
-        I18n.translateJavaInternalMessages();
-
         // init default coordinate format
-        //
         try {
             CoordinateFormat.setCoordinateFormat(CoordinateFormat.valueOf(Main.pref.get("coordinates")));
         } catch (IllegalArgumentException iae) {
-            Main.trace(iae);
+            Logging.trace(iae);
             CoordinateFormat.setCoordinateFormat(CoordinateFormat.DECIMAL_DEGREES);
         }
     }
 
     /**
-     * Handle command line instructions after GUI has been initialized.
-     * @param args program arguments
-     * @return the list of submitted tasks
-     */
-    protected static List<Future<?>> postConstructorProcessCmdLine(ProgramArguments args) {
-        List<Future<?>> tasks = new ArrayList<>();
-        List<File> fileList = new ArrayList<>();
-        for (String s : args.get(Option.DOWNLOAD)) {
-            tasks.addAll(DownloadParamType.paramType(s).download(s, fileList));
-        }
-        if (!fileList.isEmpty()) {
-            tasks.add(OpenFileAction.openFiles(fileList, true));
-        }
-        for (String s : args.get(Option.DOWNLOADGPS)) {
-            tasks.addAll(DownloadParamType.paramType(s).downloadGps(s));
-        }
-        final Collection<String> selectionArguments = args.get(Option.SELECTION);
-        if (!selectionArguments.isEmpty()) {
-            tasks.add(Main.worker.submit(() -> {
-                for (String s : selectionArguments) {
-                    SearchAction.search(s, SearchAction.SearchMode.add);
-                }
-            }));
-        }
-        return tasks;
-    }
-
-    /**
      * Closes JOSM and optionally terminates the Java Virtual Machine (JVM).
-     * If there are some unsaved data layers, asks first for user confirmation.
      * @param exit If {@code true}, the JVM is terminated by running {@link System#exit} with a given return code.
      * @param exitCode The return code
-     * @param reason the reason for exiting
-     * @return {@code true} if JOSM has been closed, {@code false} if the user has cancelled the operation.
-     * @since 11093 (3378 with a different function signature)
-     */
-    public static boolean exitJosm(boolean exit, int exitCode, SaveLayersDialog.Reason reason) {
-        final boolean proceed = Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() ->
-                SaveLayersDialog.saveUnsavedModifications(getLayerManager().getLayers(),
-                        reason != null ? reason : SaveLayersDialog.Reason.EXIT)));
-        if (proceed) {
-            if (Main.main != null) {
-                Main.main.shutdown();
-            }
+     * @return {@code true}
+     * @since 12636
+     */
+    public static boolean exitJosm(boolean exit, int exitCode) {
+        if (Main.main != null) {
+            Main.main.shutdown();
+        }
 
-            if (exit) {
-                System.exit(exitCode);
-            }
-            return true;
+        if (exit) {
+            System.exit(exitCode);
         }
-        return false;
+        return true;
     }
 
     /**
@@ -854,170 +741,27 @@ public abstract class Main {
      */
     protected void shutdown() {
         if (!GraphicsEnvironment.isHeadless()) {
-            worker.shutdown();
             ImageProvider.shutdown(false);
             JCSCacheManager.shutdown();
         }
-        if (map != null) {
-            map.rememberToggleDialogWidth();
-        }
-        // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask)
-        getLayerManager().resetState();
         try {
             pref.saveDefaults();
         } catch (IOException ex) {
-            Main.warn(ex, tr("Failed to save default preferences."));
+            Logging.log(Logging.LEVEL_WARN, tr("Failed to save default preferences."), ex);
         }
         if (!GraphicsEnvironment.isHeadless()) {
-            worker.shutdownNow();
             ImageProvider.shutdown(true);
         }
     }
 
     /**
-     * The type of a command line parameter, to be used in switch statements.
-     * @see #paramType
-     */
-    enum DownloadParamType {
-        httpUrl {
-            @Override
-            List<Future<?>> download(String s, Collection<File> fileList) {
-                return new OpenLocationAction().openUrl(false, s);
-            }
-
-            @Override
-            List<Future<?>> downloadGps(String s) {
-                final Bounds b = OsmUrlToBounds.parse(s);
-                if (b == null) {
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("Ignoring malformed URL: \"{0}\"", s),
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE
-                    );
-                    return Collections.emptyList();
-                }
-                return downloadFromParamBounds(true, b);
-            }
-        }, fileUrl {
-            @Override
-            List<Future<?>> download(String s, Collection<File> fileList) {
-                File f = null;
-                try {
-                    f = new File(new URI(s));
-                } catch (URISyntaxException e) {
-                    Main.warn(e);
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("Ignoring malformed file URL: \"{0}\"", s),
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE
-                    );
-                }
-                if (f != null) {
-                    fileList.add(f);
-                }
-                return Collections.emptyList();
-            }
-        }, bounds {
-
-            /**
-             * Download area specified on the command line as bounds string.
-             * @param rawGps Flag to download raw GPS tracks
-             * @param s The bounds parameter
-             * @return the complete download task (including post-download handler), or {@code null}
-             */
-            private List<Future<?>> downloadFromParamBounds(final boolean rawGps, String s) {
-                final StringTokenizer st = new StringTokenizer(s, ",");
-                if (st.countTokens() == 4) {
-                    return Main.downloadFromParamBounds(rawGps, new Bounds(
-                            new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken())),
-                            new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken()))
-                    ));
-                }
-                return Collections.emptyList();
-            }
-
-            @Override
-            List<Future<?>> download(String param, Collection<File> fileList) {
-                return downloadFromParamBounds(false, param);
-            }
-
-            @Override
-            List<Future<?>> downloadGps(String param) {
-                return downloadFromParamBounds(true, param);
-            }
-        }, fileName {
-            @Override
-            List<Future<?>> download(String s, Collection<File> fileList) {
-                fileList.add(new File(s));
-                return Collections.emptyList();
-            }
-        };
-
-        /**
-         * Performs the download
-         * @param param represents the object to be downloaded
-         * @param fileList files which shall be opened, should be added to this collection
-         * @return the download task, or {@code null}
-         */
-        abstract List<Future<?>> download(String param, Collection<File> fileList);
-
-        /**
-         * Performs the GPS download
-         * @param param represents the object to be downloaded
-         * @return the download task, or {@code null}
-         */
-        List<Future<?>> downloadGps(String param) {
-            if (!GraphicsEnvironment.isHeadless()) {
-                JOptionPane.showMessageDialog(
-                        Main.parent,
-                        tr("Parameter \"downloadgps\" does not accept file names or file URLs"),
-                        tr("Warning"),
-                        JOptionPane.WARNING_MESSAGE
-                );
-            }
-            return Collections.emptyList();
-        }
-
-        /**
-         * Guess the type of a parameter string specified on the command line with --download= or --downloadgps.
-         *
-         * @param s A parameter string
-         * @return The guessed parameter type
-         */
-        static DownloadParamType paramType(String s) {
-            if (s.startsWith("http:") || s.startsWith("https:")) return DownloadParamType.httpUrl;
-            if (s.startsWith("file:")) return DownloadParamType.fileUrl;
-            String coorPattern = "\\s*[+-]?[0-9]+(\\.[0-9]+)?\\s*";
-            if (s.matches(coorPattern + "(," + coorPattern + "){3}")) return DownloadParamType.bounds;
-            // everything else must be a file name
-            return DownloadParamType.fileName;
-        }
-    }
-
-    /**
-     * Download area specified as Bounds value.
-     * @param rawGps Flag to download raw GPS tracks
-     * @param b The bounds value
-     * @return the complete download task (including post-download handler)
-     */
-    private static List<Future<?>> downloadFromParamBounds(final boolean rawGps, Bounds b) {
-        DownloadTask task = rawGps ? new DownloadGpsTask() : new DownloadOsmTask();
-        // asynchronously launch the download task ...
-        Future<?> future = task.download(true, b, null);
-        // ... and the continuation when the download is finished (this will wait for the download to finish)
-        return Collections.singletonList(Main.worker.submit(new PostDownloadHandler(task, future)));
-    }
-
-    /**
      * Identifies the current operating system family and initializes the platform hook accordingly.
      * @since 1849
      */
     public static void determinePlatformHook() {
         String os = System.getProperty("os.name");
         if (os == null) {
-            warn("Your operating system has no name, so I'm guessing its some kind of *nix.");
+            Logging.warn("Your operating system has no name, so I'm guessing its some kind of *nix.");
             platform = new PlatformHookUnixoid();
         } else if (os.toLowerCase(Locale.ENGLISH).startsWith("windows")) {
             platform = new PlatformHookWindows();
@@ -1028,7 +772,7 @@ public abstract class Main {
         } else if (os.toLowerCase(Locale.ENGLISH).startsWith("mac os x")) {
             platform = new PlatformHookOsx();
         } else {
-            warn("I don't know your operating system '"+os+"', so I'm guessing its some kind of *nix.");
+            Logging.warn("I don't know your operating system '"+os+"', so I'm guessing its some kind of *nix.");
             platform = new PlatformHookUnixoid();
         }
     }
@@ -1041,7 +785,7 @@ public abstract class Main {
     /* ----------------------------------------------------------------------------------------- */
     /**
      * The projection method used.
-     * use {@link #getProjection()} and {@link #setProjection(Projection)} for access.
+     * Use {@link #getProjection()} and {@link #setProjection(Projection)} for access.
      * Use {@link #setProjection(Projection)} in order to trigger a projection change event.
      */
     private static volatile Projection proj;
@@ -1063,11 +807,30 @@ public abstract class Main {
     public static void setProjection(Projection p) {
         CheckParameterUtil.ensureParameterNotNull(p);
         Projection oldValue = proj;
-        Bounds b = isDisplayingMapView() ? map.mapView.getRealBounds() : null;
+        Bounds b = main != null ? main.getRealBounds() : null;
         proj = p;
         fireProjectionChanged(oldValue, proj, b);
     }
 
+    /**
+     * Returns the bounds for the current projection. Used for projection events.
+     * @return the bounds for the current projection
+     * @see #restoreOldBounds
+     */
+    protected Bounds getRealBounds() {
+        // To be overriden
+        return null;
+    }
+
+    /**
+     * Restore clean state corresponding to old bounds after a projection change event.
+     * @param oldBounds bounds previously returned by {@link #getRealBounds}, before the change of projection
+     * @see #getRealBounds
+     */
+    protected void restoreOldBounds(Bounds oldBounds) {
+        // To be overriden
+    }
+
     /*
      * Keep WeakReferences to the listeners. This relieves clients from the burden of
      * explicitly removing the listeners and allows us to transparently register every
@@ -1090,8 +853,8 @@ public abstract class Main {
                     listener.projectionChanged(oldValue, newValue);
                 }
             }
-            if (newValue != null && oldBounds != null) {
-                Main.map.mapView.zoomTo(oldBounds);
+            if (newValue != null && oldBounds != null && main != null) {
+                main.restoreOldBounds(oldBounds);
             }
             /* TODO - remove layers with fixed projection */
         }
@@ -1155,10 +918,12 @@ public abstract class Main {
      * @param listener The MapFrameListener
      * @return {@code true} if the listeners collection changed as a result of the call
      * @see #addMapFrameListener
+     * @deprecated use {@link MainApplication#addAndFireMapFrameListener} instead
      * @since 11904
      */
+    @Deprecated
     public static boolean addAndFireMapFrameListener(MapFrameListener listener) {
-        return mainPanel != null && mainPanel.addAndFireMapFrameListener(listener);
+        return MainApplication.addAndFireMapFrameListener(listener);
     }
 
     /**
@@ -1166,20 +931,24 @@ public abstract class Main {
      * @param listener The MapFrameListener
      * @return {@code true} if the listeners collection changed as a result of the call
      * @see #addAndFireMapFrameListener
+     * @deprecated use {@link MainApplication#addMapFrameListener} instead
      * @since 5957
      */
+    @Deprecated
     public static boolean addMapFrameListener(MapFrameListener listener) {
-        return mainPanel != null && mainPanel.addMapFrameListener(listener);
+        return MainApplication.addMapFrameListener(listener);
     }
 
     /**
      * Unregisters the given {@code MapFrameListener} from MapFrame changes
      * @param listener The MapFrameListener
      * @return {@code true} if the listeners collection changed as a result of the call
+     * @deprecated use {@link MainApplication#removeMapFrameListener} instead
      * @since 5957
      */
+    @Deprecated
     public static boolean removeMapFrameListener(MapFrameListener listener) {
-        return mainPanel != null && mainPanel.removeMapFrameListener(listener);
+        return MainApplication.removeMapFrameListener(listener);
     }
 
     /**
@@ -1195,7 +964,7 @@ public abstract class Main {
         if (url != null && t != null) {
             Throwable old = addNetworkError(url.toExternalForm(), t);
             if (old != null) {
-                Main.warn("Already here "+old);
+                Logging.warn("Already here "+old);
             }
             return old;
         }
diff --git a/src/org/openstreetmap/josm/actions/AboutAction.java b/src/org/openstreetmap/josm/actions/AboutAction.java
index d452384..656cc8d 100644
--- a/src/org/openstreetmap/josm/actions/AboutAction.java
+++ b/src/org/openstreetmap/josm/actions/AboutAction.java
@@ -23,6 +23,7 @@ import javax.swing.JTextArea;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
@@ -30,6 +31,7 @@ import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -114,7 +116,7 @@ public final class AboutAction extends JosmAction {
             .setContent(panel, false)
             .showDialog().getValue();
         if (2 == ret) {
-            Main.main.menu.reportbug.actionPerformed(null);
+            MainApplication.getMenu().reportbug.actionPerformed(null);
         }
     }
 
@@ -136,14 +138,14 @@ public final class AboutAction extends JosmAction {
                     ta.append(line+'\n');
                 }
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 displayErrorMessage(ta, tr("Failed to load resource ''{0}'', error is {1}.", filePath, e.toString()));
             }
         }
     }
 
     private static void displayErrorMessage(JTextArea ta, String msg) {
-        Main.warn(msg);
+        Logging.warn(msg);
         ta.setForeground(new Color(200, 0, 0));
         ta.setText(msg);
     }
diff --git a/src/org/openstreetmap/josm/actions/AbstractInfoAction.java b/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
index 98570ea..8fa8d21 100644
--- a/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
+++ b/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
@@ -18,8 +18,10 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -103,7 +105,7 @@ public abstract class AbstractInfoAction extends JosmAction {
             primitivesToShow.addAll(ds.getAllSelected());
         }
 
-        Note noteToShow = Main.isDisplayingMapView() ? Main.map.noteDialog.getSelectedNote() : null;
+        Note noteToShow = MainApplication.isDisplayingMapView() ? MainApplication.getMap().noteDialog.getSelectedNote() : null;
 
         // filter out new primitives which are not yet uploaded to the server
         //
@@ -138,7 +140,7 @@ public abstract class AbstractInfoAction extends JosmAction {
         if (url != null) {
             String result = OpenBrowser.displayUrl(url);
             if (result != null) {
-                Main.warn(result);
+                Logging.warn(result);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/AbstractPasteAction.java b/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
index c97b5ac..abaa44f 100644
--- a/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
+++ b/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
@@ -8,8 +8,9 @@ import java.awt.datatransfer.FlavorListener;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -67,16 +68,17 @@ public abstract class AbstractPasteAction extends JosmAction implements FlavorLi
      */
     protected EastNorth computePastePosition(ActionEvent e) {
         // default to paste in center of map (pasted via menu or cursor not in MapView)
-        EastNorth mPosition = Main.map.mapView.getCenter();
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth mPosition = mapView.getCenter();
         // We previously checked for modifier to know if the action has been trigerred via shortcut or via menu
         // But this does not work if the shortcut is changed to a single key (see #9055)
         // Observed behaviour: getActionCommand() returns Action.NAME when triggered via menu, but shortcut text when triggered with it
         if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
             final Point mp = MouseInfo.getPointerInfo().getLocation();
-            final Point tl = Main.map.mapView.getLocationOnScreen();
+            final Point tl = mapView.getLocationOnScreen();
             final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
-            if (Main.map.mapView.contains(pos)) {
-                mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
+            if (mapView.contains(pos)) {
+                mPosition = mapView.getEastNorth(pos.x, pos.y);
             }
         }
         return mPosition;
@@ -88,12 +90,12 @@ public abstract class AbstractPasteAction extends JosmAction implements FlavorLi
     }
 
     protected void doPaste(ActionEvent e, Transferable contents) {
-        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), computePastePosition(e), contents);
+        transferHandler.pasteOn(getLayerManager().getEditLayer(), computePastePosition(e), contents);
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(getLayerManager().getEditDataSet() != null && transferHandler.isDataAvailable());
+        setEnabled(getLayerManager().getEditDataSet() != null && transferHandler != null && transferHandler.isDataAvailable());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/ActionParameter.java b/src/org/openstreetmap/josm/actions/ActionParameter.java
index 967f9fc..fc5cf3b 100644
--- a/src/org/openstreetmap/josm/actions/ActionParameter.java
+++ b/src/org/openstreetmap/josm/actions/ActionParameter.java
@@ -1,28 +1,63 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
-
+/**
+ * Abstract class for <i>key=value</i> parameters, used in {@link ParameterizedAction}.
+ * <p>
+ * The key ({@link #name}) is a string and the value of class {@code T}. The value can be
+ * converted to and from a string.
+ * @param <T> the value type
+ */
 public abstract class ActionParameter<T> {
 
     private final String name;
 
+    /**
+     * Constructs a new ActionParameter.
+     * @param name parameter name (the key)
+     */
     public ActionParameter(String name) {
         this.name = name;
     }
 
+    /**
+     * Get the name of this action parameter.
+     * The name is used as a key, to look up values for the parameter.
+     * @return the name of this action parameter
+     */
     public String getName() {
         return name;
     }
 
+    /**
+     * Get the value type of this action parameter.
+     * @return the value type of this action parameter
+     */
     public abstract Class<T> getType();
 
+    /**
+     * Convert a given value into a string (serialization).
+     * @param value the value
+     * @return a string representation of the value
+     */
     public abstract String writeToString(T value);
 
+    /**
+     * Create a value from the given string representation (deserialization).
+     * @param s the string representation of the value
+     * @return the corresponding value object
+     */
     public abstract T readFromString(String s);
 
+    /**
+     * Simple ActionParameter implementation for string values.
+     */
     public static class StringActionParameter extends ActionParameter<String> {
 
+        /**
+         * Constructs a new {@code StringActionParameter}.
+         * @param name parameter name (the key)
+         */
         public StringActionParameter(String name) {
             super(name);
         }
@@ -42,28 +77,4 @@ public abstract class ActionParameter<T> {
             return value;
         }
     }
-
-    public static class SearchSettingsActionParameter extends ActionParameter<SearchSetting> {
-
-        public SearchSettingsActionParameter(String name) {
-            super(name);
-        }
-
-        @Override
-        public Class<SearchSetting> getType() {
-            return SearchSetting.class;
-        }
-
-        @Override
-        public SearchSetting readFromString(String s) {
-            return SearchSetting.readFromString(s);
-        }
-
-        @Override
-        public String writeToString(SearchSetting value) {
-            if (value == null)
-                return "";
-            return value.writeToString();
-        }
-    }
 }
diff --git a/src/org/openstreetmap/josm/actions/AdaptableAction.java b/src/org/openstreetmap/josm/actions/AdaptableAction.java
index 4e9df97..cc8f82d 100644
--- a/src/org/openstreetmap/josm/actions/AdaptableAction.java
+++ b/src/org/openstreetmap/josm/actions/AdaptableAction.java
@@ -3,6 +3,16 @@ package org.openstreetmap.josm.actions;
 
 import javax.swing.Action;
 
-/* allow us to tell the toolbar that name and icon may be changed */
+/**
+ * Interface to indicate that name (tooltip) and icon may be changed for an entry
+ * in the toolbar.
+ * <p>
+ * The name and icon of an {@link org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionDefinition}
+ * is saved to the preferences when the wrapped action implements AdaptableAction.
+ * <p>
+ * The user will have options to change the name and icon in the
+ * {@link org.openstreetmap.josm.gui.preferences.ToolbarPreferences} when the action
+ * for the toolbar entry implements AdaptableAction.
+ */
 public interface AdaptableAction extends Action {
 }
diff --git a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
index 255312d..c0fc874 100644
--- a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
@@ -38,6 +38,7 @@ import org.openstreetmap.josm.io.imagery.WMSImagery.WMSGetCapabilitiesException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Action displayed in imagery menu to add a new imagery layer.
@@ -114,19 +115,19 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
                 JOptionPane.showMessageDialog(Main.parent, tr("Invalid service URL."),
                         tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             }
-            Main.error(ex, false);
+            Logging.log(Logging.LEVEL_ERROR, ex);
         } catch (IOException ex) {
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(Main.parent, tr("Could not retrieve WMS layer list."),
                         tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             }
-            Main.error(ex, false);
+            Logging.log(Logging.LEVEL_ERROR, ex);
         } catch (WMSGetCapabilitiesException ex) {
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(Main.parent, tr("Could not parse WMS layer list."),
                         tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             }
-            Main.error(ex, "Could not parse WMS layer list. Incoming data:\n"+ex.getIncomingData());
+            Logging.log(Logging.LEVEL_ERROR, "Could not parse WMS layer list. Incoming data:\n"+ex.getIncomingData(), ex);
         }
         return null;
     }
@@ -137,7 +138,7 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
         try {
             final ImageryInfo infoToAdd = convertImagery(info);
             if (infoToAdd != null) {
-                Main.getLayerManager().addLayer(ImageryLayer.create(infoToAdd));
+                getLayerManager().addLayer(ImageryLayer.create(infoToAdd));
                 AlignImageryPanel.addNagPanelIfNeeded(infoToAdd);
             }
         } catch (IllegalArgumentException ex) {
diff --git a/src/org/openstreetmap/josm/actions/AddNodeAction.java b/src/org/openstreetmap/josm/actions/AddNodeAction.java
index 1345bcf..54b786d 100644
--- a/src/org/openstreetmap/josm/actions/AddNodeAction.java
+++ b/src/org/openstreetmap/josm/actions/AddNodeAction.java
@@ -13,6 +13,8 @@ import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LatLonDialog;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -63,9 +65,10 @@ public final class AddNodeAction extends JosmAction {
         Node nnew = new Node(coordinates);
 
         // add the node
-        Main.main.undoRedo.add(new AddCommand(nnew));
+        MainApplication.undoRedo.add(new AddCommand(nnew));
         getLayerManager().getEditDataSet().setSelected(nnew);
-        if (Main.map.mapView != null && !Main.map.mapView.getRealBounds().contains(nnew.getCoor())) {
+        MapView mapView = MainApplication.getMap().mapView;
+        if (mapView != null && !mapView.getRealBounds().contains(nnew.getCoor())) {
             AutoScaleAction.zoomTo(Collections.<OsmPrimitive>singleton(nnew));
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
index 6e69f93..1f7f09e 100644
--- a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
+++ b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
@@ -16,7 +16,6 @@ import java.util.Set;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -25,6 +24,7 @@ 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.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -282,7 +282,7 @@ public final class AlignInCircleAction extends JosmAction {
             i = j; // Update start point for next iteration
         }
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Align Nodes in Circle"), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Align Nodes in Circle"), cmds));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/AlignInLineAction.java b/src/org/openstreetmap/josm/actions/AlignInLineAction.java
index d918f72..a07bbab 100644
--- a/src/org/openstreetmap/josm/actions/AlignInLineAction.java
+++ b/src/org/openstreetmap/josm/actions/AlignInLineAction.java
@@ -16,7 +16,6 @@ import java.util.Set;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -25,7 +24,9 @@ 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.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -169,48 +170,52 @@ public final class AlignInLineAction extends JosmAction {
         if (!isEnabled())
             return;
 
+        try {
+            MainApplication.undoRedo.add(buildCommand());
+        } catch (InvalidSelection except) {
+            Logging.debug(except);
+            new Notification(except.getMessage())
+                .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                .show();
+        }
+    }
+
+    /**
+     * Builds "align in line" command depending on the selected objects.
+     * @return the resulting command to execute to perform action
+     * @throws InvalidSelection if a polygon is selected, or if a node is used by 3 or more ways
+     * @since 12562
+     */
+    public Command buildCommand() throws InvalidSelection {
         DataSet ds = getLayerManager().getEditDataSet();
         List<Node> selectedNodes = new ArrayList<>(ds.getSelectedNodes());
         List<Way> selectedWays = new ArrayList<>(ds.getSelectedWays());
         selectedWays.removeIf(OsmPrimitive::isIncomplete);
 
-        try {
-            Command cmd;
-            // Decide what to align based on selection:
-
-            if (selectedNodes.isEmpty() && !selectedWays.isEmpty()) {
-                // Only ways selected -> For each way align their nodes taking care of intersection
-                cmd = alignMultiWay(selectedWays);
-            } else if (selectedNodes.size() == 1) {
-                // Only 1 node selected -> align this node relative to referers way
-                Node selectedNode = selectedNodes.get(0);
-                List<Way> involvedWays;
-                if (selectedWays.isEmpty())
-                    // No selected way, all way containing this node are used
-                    involvedWays = selectedNode.getParentWays();
-                else
-                    // Selected way, use only these ways
-                    involvedWays = selectedWays;
-                List<Line> lines = getInvolvedLines(selectedNode, involvedWays);
-                if (lines.size() > 2 || lines.isEmpty())
-                    throw new InvalidSelection();
-                cmd = alignSingleNode(selectedNodes.get(0), lines);
-            } else if (selectedNodes.size() >= 3) {
-                // More than 3 nodes and way(s) selected -> align selected nodes. Don't care of way(s).
-                cmd = alignOnlyNodes(selectedNodes);
-            } else {
-                // All others cases are invalid
+        // Decide what to align based on selection:
+        if (selectedNodes.isEmpty() && !selectedWays.isEmpty()) {
+            // Only ways selected -> For each way align their nodes taking care of intersection
+            return alignMultiWay(selectedWays);
+        } else if (selectedNodes.size() == 1) {
+            // Only 1 node selected -> align this node relative to referers way
+            Node selectedNode = selectedNodes.get(0);
+            List<Way> involvedWays;
+            if (selectedWays.isEmpty())
+                // No selected way, all way containing this node are used
+                involvedWays = selectedNode.getParentWays();
+            else
+                // Selected way, use only these ways
+                involvedWays = selectedWays;
+            List<Line> lines = getInvolvedLines(selectedNode, involvedWays);
+            if (lines.size() > 2 || lines.isEmpty())
                 throw new InvalidSelection();
-            }
-
-            // Do it!
-            Main.main.undoRedo.add(cmd);
-
-        } catch (InvalidSelection except) {
-            Main.debug(except);
-            new Notification(except.getMessage())
-                .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                .show();
+            return alignSingleNode(selectedNodes.get(0), lines);
+        } else if (selectedNodes.size() >= 3) {
+            // More than 3 nodes and way(s) selected -> align selected nodes. Don't care of way(s).
+            return alignOnlyNodes(selectedNodes);
+        } else {
+            // All others cases are invalid
+            throw new InvalidSelection();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/AutoScaleAction.java b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
index ec56c0f..6cc1db7 100644
--- a/src/org/openstreetmap/josm/actions/AutoScaleAction.java
+++ b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
@@ -28,12 +28,15 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.ValidatorDialog.ValidatorBoundingXYVisitor;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -67,12 +70,11 @@ public class AutoScaleAction extends JosmAction {
 
     /**
      * Zooms the current map view to the currently selected primitives.
-     * Does nothing if there either isn't a current map view or if there isn't a current data
-     * layer.
+     * Does nothing if there either isn't a current map view or if there isn't a current data layer.
      *
      */
     public static void zoomToSelection() {
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
         if (dataSet == null) {
             return;
         }
@@ -100,7 +102,7 @@ public class AutoScaleAction extends JosmAction {
         // in most other cases as well.
         bboxCalculator.enlargeBoundingBox();
         if (bboxCalculator.getBounds() != null) {
-            Main.map.mapView.zoomTo(bboxCalculator);
+            MainApplication.getMap().mapView.zoomTo(bboxCalculator);
         }
     }
 
@@ -189,18 +191,19 @@ public class AutoScaleAction extends JosmAction {
      * Performs this auto scale operation for the mode this action is in.
      */
     public void autoScale() {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
             switch (mode) {
             case "previous":
-                Main.map.mapView.zoomPrevious();
+                mapView.zoomPrevious();
                 break;
             case "next":
-                Main.map.mapView.zoomNext();
+                mapView.zoomNext();
                 break;
             default:
                 BoundingXYVisitor bbox = getBoundingBox();
                 if (bbox != null && bbox.getBounds() != null) {
-                    Main.map.mapView.zoomTo(bbox);
+                    mapView.zoomTo(bbox);
                 }
             }
         }
@@ -220,7 +223,7 @@ public class AutoScaleAction extends JosmAction {
      * @return the first selected layer in the layer list dialog
      */
     protected Layer getFirstSelectedLayer() {
-        if (Main.getLayerManager().getActiveLayer() == null) {
+        if (getLayerManager().getActiveLayer() == null) {
             return null;
         }
         try {
@@ -228,7 +231,7 @@ public class AutoScaleAction extends JosmAction {
             if (!layers.isEmpty())
                 return layers.get(0);
         } catch (IllegalStateException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -252,7 +255,7 @@ public class AutoScaleAction extends JosmAction {
     }
 
     private static BoundingXYVisitor modeProblem(ValidatorBoundingXYVisitor v) {
-        TestError error = Main.map.validatorDialog.getSelectedError();
+        TestError error = MainApplication.getMap().validatorDialog.getSelectedError();
         if (error == null)
             return null;
         v.visit(error);
@@ -263,7 +266,7 @@ public class AutoScaleAction extends JosmAction {
     }
 
     private static BoundingXYVisitor modeData(BoundingXYVisitor v) {
-        for (Layer l : Main.getLayerManager().getLayers()) {
+        for (Layer l : MainApplication.getLayerManager().getLayers()) {
             l.visitBoundingBox(v);
         }
         return v;
@@ -286,11 +289,12 @@ public class AutoScaleAction extends JosmAction {
                 sel = dataSet.getSelected();
             }
         } else {
-            Conflict<? extends OsmPrimitive> c = Main.map.conflictDialog.getSelectedConflict();
+            ConflictDialog conflictDialog = MainApplication.getMap().conflictDialog;
+            Conflict<? extends OsmPrimitive> c = conflictDialog.getSelectedConflict();
             if (c != null) {
                 sel.add(c.getMy());
-            } else if (Main.map.conflictDialog.getConflicts() != null) {
-                sel = Main.map.conflictDialog.getConflicts().getMyConflictParties();
+            } else if (conflictDialog.getConflicts() != null) {
+                sel = conflictDialog.getConflicts().getMyConflictParties();
             }
         }
         if (sel.isEmpty()) {
@@ -331,7 +335,7 @@ public class AutoScaleAction extends JosmAction {
                     v.visit(dataSources.get(lastZoomArea).bounds);
                 } else {
                     lastZoomArea = -1;
-                    Area sourceArea = Main.getLayerManager().getEditDataSet().getDataSourceArea();
+                    Area sourceArea = getLayerManager().getEditDataSet().getDataSourceArea();
                     if (sourceArea != null) {
                         v.visit(new Bounds(sourceArea.getBounds2D()));
                     }
@@ -348,6 +352,7 @@ public class AutoScaleAction extends JosmAction {
     @Override
     protected void updateEnabledState() {
         DataSet ds = getLayerManager().getEditDataSet();
+        MapFrame map = MainApplication.getMap();
         switch (mode) {
         case "selection":
             setEnabled(ds != null && !ds.selectionEmpty());
@@ -356,19 +361,19 @@ public class AutoScaleAction extends JosmAction {
             setEnabled(getFirstSelectedLayer() != null);
             break;
         case "conflict":
-            setEnabled(Main.map != null && Main.map.conflictDialog.getSelectedConflict() != null);
+            setEnabled(map != null && map.conflictDialog.getSelectedConflict() != null);
             break;
         case "download":
             setEnabled(ds != null && !ds.getDataSources().isEmpty());
             break;
         case "problem":
-            setEnabled(Main.map != null && Main.map.validatorDialog.getSelectedError() != null);
+            setEnabled(map != null && map.validatorDialog.getSelectedError() != null);
             break;
         case "previous":
-            setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomUndoEntries());
+            setEnabled(MainApplication.isDisplayingMapView() && map.mapView.hasZoomUndoEntries());
             break;
         case "next":
-            setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomRedoEntries());
+            setEnabled(MainApplication.isDisplayingMapView() && map.mapView.hasZoomRedoEntries());
             break;
         default:
             setEnabled(!getLayerManager().getLayers().isEmpty());
@@ -388,7 +393,7 @@ public class AutoScaleAction extends JosmAction {
         // make this action listen to zoom and mapframe change events
         //
         MapView.addZoomChangeListener(new ZoomChangeAdapter());
-        Main.addMapFrameListener(new MapFrameAdapter());
+        MainApplication.addMapFrameListener(new MapFrameAdapter());
         initEnabledState();
     }
 
diff --git a/src/org/openstreetmap/josm/actions/CloseChangesetAction.java b/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
index caf8522..675a93f 100644
--- a/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
+++ b/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
@@ -18,6 +18,7 @@ import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
 import org.openstreetmap.josm.data.osm.UserInfo;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.io.CloseChangesetDialog;
 import org.openstreetmap.josm.gui.io.CloseChangesetTask;
@@ -29,6 +30,12 @@ import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.xml.sax.SAXException;
 
+/**
+ * User action to close open changesets.
+ *
+ * The list of open changesets will be downloaded from the server and presented
+ * to the user.
+ */
 public class CloseChangesetAction extends JosmAction {
 
     /**
@@ -50,7 +57,7 @@ public class CloseChangesetAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.worker.submit(new DownloadOpenChangesetsTask());
+        MainApplication.worker.submit(new DownloadOpenChangesetsTask());
     }
 
     protected void onPostDownloadOpenChangesets() {
@@ -73,7 +80,7 @@ public class CloseChangesetAction extends JosmAction {
 
         Collection<Changeset> changesetsToClose = dialog.getSelectedChangesets();
         CloseChangesetTask closeChangesetTask = new CloseChangesetTask(changesetsToClose);
-        Main.worker.submit(closeChangesetTask);
+        MainApplication.worker.submit(closeChangesetTask);
     }
 
     private final class DownloadOpenChangesetsTask extends PleaseWaitRunnable {
diff --git a/src/org/openstreetmap/josm/actions/CombineWayAction.java b/src/org/openstreetmap/josm/actions/CombineWayAction.java
index e7d4e9a..f33995e 100644
--- a/src/org/openstreetmap/josm/actions/CombineWayAction.java
+++ b/src/org/openstreetmap/josm/actions/CombineWayAction.java
@@ -31,9 +31,11 @@ import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
@@ -171,7 +173,7 @@ public class CombineWayAction extends JosmAction {
                 }
                 if (!reverseWayTagCommands.isEmpty()) {
                     // commands need to be executed for CombinePrimitiveResolverDialog
-                    Main.main.undoRedo.add(new SequenceCommand(tr("Reverse Ways"), reverseWayTagCommands));
+                    MainApplication.undoRedo.add(new SequenceCommand(tr("Reverse Ways"), reverseWayTagCommands));
                 }
                 wayTags = TagCollection.unionOfAllPrimitives(reversedTagWays);
                 wayTags.add(TagCollection.unionOfAllPrimitives(unreversedTagWays));
@@ -190,7 +192,7 @@ public class CombineWayAction extends JosmAction {
         } finally {
             if (!reverseWayTagCommands.isEmpty()) {
                 // undo reverseWayTagCorrector and merge into SequenceCommand below
-                Main.main.undoRedo.undo();
+                MainApplication.undoRedo.undo();
             }
         }
 
@@ -227,14 +229,14 @@ public class CombineWayAction extends JosmAction {
         try {
             combineResult = combineWaysWorker(selectedWays);
         } catch (UserCancelException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             return;
         }
 
         if (combineResult == null)
             return;
         final Way selectedWay = combineResult.a;
-        Main.main.undoRedo.add(combineResult.b);
+        MainApplication.undoRedo.add(combineResult.b);
         if (selectedWay != null) {
             GuiHelper.runInEDT(() -> ds.setSelected(selectedWay));
         }
diff --git a/src/org/openstreetmap/josm/actions/CopyAction.java b/src/org/openstreetmap/josm/actions/CopyAction.java
index 9828b0d..0b0dde3 100644
--- a/src/org/openstreetmap/josm/actions/CopyAction.java
+++ b/src/org/openstreetmap/josm/actions/CopyAction.java
@@ -15,6 +15,7 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
@@ -35,7 +36,7 @@ public class CopyAction extends JosmAction {
                 Shortcut.registerShortcut("system:copy", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_C, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Copy"));
         // CUA shortcut for copy (https://en.wikipedia.org/wiki/IBM_Common_User_Access#Description)
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
                 Shortcut.registerShortcut("system:copy:cua", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_INSERT, Shortcut.CTRL));
     }
 
diff --git a/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java b/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
index 242ee97..1a4f627 100644
--- a/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
+++ b/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
@@ -14,6 +14,9 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * User action to copy the coordinates of one or several node(s) to the clipboard.
+ */
 public class CopyCoordinatesAction extends JosmAction {
 
     public CopyCoordinatesAction() {
diff --git a/src/org/openstreetmap/josm/actions/CreateCircleAction.java b/src/org/openstreetmap/josm/actions/CreateCircleAction.java
index 2978476..3a68c20 100644
--- a/src/org/openstreetmap/josm/actions/CreateCircleAction.java
+++ b/src/org/openstreetmap/josm/actions/CreateCircleAction.java
@@ -27,6 +27,7 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
@@ -239,7 +240,7 @@ public final class CreateCircleAction extends JosmAction {
             cmds.add(new ChangeCommand(existingWay, newWay));
         }
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Create Circle"), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Create Circle"), cmds));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
index 1bf9bbb..df94ec7 100644
--- a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
+++ b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
@@ -35,6 +35,7 @@ import org.openstreetmap.josm.data.osm.OsmUtils;
 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.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
@@ -105,21 +106,22 @@ public class CreateMultipolygonAction extends JosmAction {
 
             // to avoid EDT violations
             SwingUtilities.invokeLater(() -> {
-                    Main.main.undoRedo.add(command);
+                    MainApplication.undoRedo.add(command);
 
                     // Use 'SwingUtilities.invokeLater' to make sure the relationListDialog
                     // knows about the new relation before we try to select it.
                     // (Yes, we are already in event dispatch thread. But DatasetEventManager
                     // uses 'SwingUtilities.invokeLater' to fire events so we have to do the same.)
                     SwingUtilities.invokeLater(() -> {
-                            Main.map.relationListDialog.selectRelation(relation);
+                            MainApplication.getMap().relationListDialog.selectRelation(relation);
                             if (Main.pref.getBoolean("multipoly.show-relation-editor", false)) {
                                 //Open relation edit window, if set up in preferences
-                                RelationEditor editor = RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), relation, null);
+                                RelationEditor editor = RelationEditor.getEditor(
+                                        MainApplication.getLayerManager().getEditLayer(), relation, null);
                                 editor.setModal(true);
                                 editor.setVisible(true);
                             } else {
-                                Main.getLayerManager().getEditLayer().setRecentRelation(relation);
+                                MainApplication.getLayerManager().getEditLayer().setRecentRelation(relation);
                             }
                     });
             });
@@ -128,7 +130,7 @@ public class CreateMultipolygonAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = getLayerManager().getEditDataSet();
         if (dataSet == null) {
             new Notification(
                     tr("No data loaded."))
@@ -159,15 +161,16 @@ public class CreateMultipolygonAction extends JosmAction {
         // download incomplete relation or incomplete members if necessary
         if (multipolygonRelation != null) {
             if (!multipolygonRelation.isNew() && multipolygonRelation.isIncomplete()) {
-                Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.getLayerManager().getEditLayer()));
+                MainApplication.worker.submit(
+                        new DownloadRelationTask(Collections.singleton(multipolygonRelation), getLayerManager().getEditLayer()));
             } else if (multipolygonRelation.hasIncompleteMembers()) {
-                Main.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
+                MainApplication.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
                         DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)),
-                        Main.getLayerManager().getEditLayer()));
+                        getLayerManager().getEditLayer()));
             }
         }
         // create/update multipolygon relation
-        Main.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
+        MainApplication.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
     }
 
     private Relation getSelectedMultipolygonRelation() {
diff --git a/src/org/openstreetmap/josm/actions/DeleteAction.java b/src/org/openstreetmap/josm/actions/DeleteAction.java
index 231631d..530143b 100644
--- a/src/org/openstreetmap/josm/actions/DeleteAction.java
+++ b/src/org/openstreetmap/josm/actions/DeleteAction.java
@@ -8,8 +8,9 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -29,9 +30,10 @@ public final class DeleteAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || !Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!isEnabled() || !map.mapView.isActiveLayerVisible())
             return;
-        Main.map.mapModeDelete.doActionPerformed(e);
+        map.mapModeDelete.doActionPerformed(e);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/DeleteLayerAction.java b/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
index 4e7ec26..d6ef454 100644
--- a/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
@@ -8,7 +8,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -30,18 +29,18 @@ public final class DeleteLayerAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         if (activeLayer == null) {
             return;
         }
         if (!SaveLayersDialog.saveUnsavedModifications(Collections.singletonList(activeLayer), SaveLayersDialog.Reason.DELETE)) {
             return;
         }
-        Main.getLayerManager().removeLayer(activeLayer);
+        getLayerManager().removeLayer(activeLayer);
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null);
+        setEnabled(getLayerManager().getActiveLayer() != null);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/DialogsToggleAction.java b/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
index 275e3a0..4d0e4d6 100644
--- a/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
@@ -8,6 +8,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -46,15 +48,16 @@ public class DialogsToggleAction extends ToggleAction {
     }
 
     protected void setMode() {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             boolean selected = isSelected();
             if (!selected) {
                 toolbarPreviouslyVisible = Main.pref.getBoolean("toolbar.visible", true);
                 sideToolbarPreviouslyVisible = Main.pref.getBoolean("sidetoolbar.visible", true);
             }
-            Main.map.setDialogsPanelVisible(selected);
-            Main.map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true));
-            Main.main.menu.setVisible(selected || Main.pref.getBoolean("menu.always-visible", true));
+            MapFrame map = MainApplication.getMap();
+            map.setDialogsPanelVisible(selected);
+            map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true));
+            MainApplication.getMenu().setVisible(selected || Main.pref.getBoolean("menu.always-visible", true));
             // Toolbars listen to preference changes, use it here
             if (!Main.pref.getBoolean("toolbar.always-visible", true) && (!selected || toolbarPreviouslyVisible)) {
                 Main.pref.put("toolbar.visible", selected);
@@ -62,7 +65,7 @@ public class DialogsToggleAction extends ToggleAction {
             if (!Main.pref.getBoolean("sidetoolbar.always-visible", true) && (!selected || sideToolbarPreviouslyVisible)) {
                 Main.pref.put("sidetoolbar.visible", selected);
             }
-            Main.map.mapView.rememberLastPositionOnScreen();
+            map.mapView.rememberLastPositionOnScreen();
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/DistributeAction.java b/src/org/openstreetmap/josm/actions/DistributeAction.java
index 2a50a89..083e6e5 100644
--- a/src/org/openstreetmap/josm/actions/DistributeAction.java
+++ b/src/org/openstreetmap/josm/actions/DistributeAction.java
@@ -15,14 +15,15 @@ import java.util.Set;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -70,7 +71,7 @@ public final class DistributeAction extends JosmAction {
 
         Set<Node> ignoredNodes = removeNodesWithoutCoordinates(nodes);
         if (!ignoredNodes.isEmpty()) {
-            Main.warn(tr("Ignoring {0} nodes with null coordinates", ignoredNodes.size()));
+            Logging.warn(tr("Ignoring {0} nodes with null coordinates", ignoredNodes.size()));
             ignoredNodes.clear();
         }
 
@@ -96,7 +97,7 @@ public final class DistributeAction extends JosmAction {
         }
 
         // Do it!
-        Main.main.undoRedo.add(new SequenceCommand(tr("Distribute Nodes"), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Distribute Nodes"), cmds));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/DownloadAction.java b/src/org/openstreetmap/josm/actions/DownloadAction.java
index 54511ff..d2b4f50 100644
--- a/src/org/openstreetmap/josm/actions/DownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadAction.java
@@ -6,23 +6,8 @@ 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;
 
 /**
@@ -39,8 +24,8 @@ public class DownloadAction extends JosmAction {
      * Constructs a new {@code DownloadAction}.
      */
     public DownloadAction() {
-        super(tr("Download from OSM..."), "download", tr("Download map data from the OSM server."),
-              Shortcut.registerShortcut("file:download", tr("File: {0}", tr("Download from OSM...")), KeyEvent.VK_DOWN, Shortcut.CTRL_SHIFT),
+        super(tr("Download data"), "download", tr("Download map data from a server of your choice"),
+              Shortcut.registerShortcut("file:download", tr("File: {0}", tr("Download data")), KeyEvent.VK_DOWN, Shortcut.CTRL_SHIFT),
               true);
         putValue("help", ht("/Action/Download"));
     }
@@ -50,62 +35,5 @@ public class DownloadAction extends JosmAction {
         DownloadDialog dialog = DownloadDialog.getInstance();
         dialog.restoreSettings();
         dialog.setVisible(true);
-        if (!dialog.isCanceled()) {
-            dialog.rememberSettings();
-            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/DownloadAlongAction.java b/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
index b29f0c5..867be60 100644
--- a/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
@@ -18,8 +18,8 @@ import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTaskList;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Shortcut;
 
diff --git a/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java b/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
index 28cff41..3e1715e 100644
--- a/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OnlineResource;
 
 /**
@@ -42,16 +43,16 @@ public final class DownloadNotesInViewAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        final Bounds bounds = Main.map.mapView.getRealBounds();
+        final Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
         DownloadNotesTask task = new DownloadNotesTask();
         task.setZoomAfterDownload(false);
         Future<?> future = task.download(false, bounds, null);
-        Main.worker.submit(new PostDownloadHandler(task, future));
+        MainApplication.worker.submit(new PostDownloadHandler(task, future));
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null
+        setEnabled(getLayerManager().getActiveLayer() != null
                 && !Main.isOffline(OnlineResource.OSM_API));
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java b/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
index 210052a..4f433c6 100644
--- a/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.BoundingBoxDownloader;
 import org.openstreetmap.josm.io.OnlineResource;
 
@@ -30,16 +31,16 @@ public final class DownloadOsmInViewAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        final Bounds bounds = Main.map.mapView.getRealBounds();
+        final Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
         DownloadOsmInViewTask task = new DownloadOsmInViewTask();
         task.setZoomAfterDownload(false);
         Future<?> future = task.download(bounds);
-        Main.worker.submit(new PostDownloadHandler(task, future));
+        MainApplication.worker.submit(new PostDownloadHandler(task, future));
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getActiveLayer() != null
+        setEnabled(getLayerManager().getActiveLayer() != null
                 && !Main.isOffline(OnlineResource.OSM_API));
     }
 
diff --git a/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java b/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
index 28a597c..b0189b4 100644
--- a/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
@@ -8,8 +8,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.download.DownloadObjectDialog;
 import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -53,11 +53,11 @@ public class DownloadPrimitiveAction extends JosmAction {
     public static void processItems(boolean newLayer, final List<PrimitiveId> ids, boolean downloadReferrers, boolean full) {
         final DownloadPrimitivesWithReferrersTask task =
                 new DownloadPrimitivesWithReferrersTask(newLayer, ids, downloadReferrers, full, null, null);
-        Main.worker.submit(task);
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(task);
+        MainApplication.worker.submit(() -> {
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
                 if (downloaded != null) {
-                    GuiHelper.runInEDT(() -> Main.getLayerManager().getEditDataSet().setSelected(downloaded));
+                    GuiHelper.runInEDT(() -> MainApplication.getLayerManager().getEditDataSet().setSelected(downloaded));
                 }
         });
     }
diff --git a/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java b/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
index ee536ce..06263f9 100644
--- a/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
@@ -8,9 +8,9 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -44,14 +44,14 @@ public class DownloadReferrersAction extends JosmAction {
     public static void downloadReferrers(OsmDataLayer targetLayer, Collection<OsmPrimitive> children) {
         if (children == null || children.isEmpty())
             return;
-        Main.worker.submit(new DownloadReferrersTask(targetLayer, children));
+        MainApplication.worker.submit(new DownloadReferrersTask(targetLayer, children));
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled())
             return;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         if (layer == null)
             return;
         Collection<OsmPrimitive> primitives = layer.data.getSelected();
diff --git a/src/org/openstreetmap/josm/actions/ExitAction.java b/src/org/openstreetmap/josm/actions/ExitAction.java
index 8c875a2..8665672 100644
--- a/src/org/openstreetmap/josm/actions/ExitAction.java
+++ b/src/org/openstreetmap/josm/actions/ExitAction.java
@@ -7,7 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -27,6 +27,6 @@ public class ExitAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.exitJosm(true, 0, null);
+        MainApplication.exitJosm(true, 0, null);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/ExpertToggleAction.java b/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
index bc9f90a..1ebe807 100644
--- a/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
@@ -6,8 +6,8 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Component;
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ListenerList;
 
 /**
@@ -99,8 +99,8 @@ public class ExpertToggleAction extends ToggleAction {
               false /* register toolbar */
         );
         putValue("toolbar", "expertmode");
-        if (Main.toolbar != null) {
-            Main.toolbar.register(this);
+        if (MainApplication.getToolbar() != null) {
+            MainApplication.getToolbar().register(this);
         }
         setSelected(PREF_EXPERT.get());
         notifySelectedState();
diff --git a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
index c16c203..8cd04f9 100644
--- a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
+++ b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
@@ -15,19 +15,20 @@ import java.util.ServiceConfigurationError;
 
 import javax.swing.filechooser.FileFilter;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.io.importexport.AllFormatsImporter;
+import org.openstreetmap.josm.gui.io.importexport.FileExporter;
+import org.openstreetmap.josm.gui.io.importexport.FileImporter;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
+import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
+import org.openstreetmap.josm.gui.io.importexport.NMEAImporter;
+import org.openstreetmap.josm.gui.io.importexport.NoteImporter;
+import org.openstreetmap.josm.gui.io.importexport.OsmChangeImporter;
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
+import org.openstreetmap.josm.gui.io.importexport.WMSLayerImporter;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
-import org.openstreetmap.josm.io.AllFormatsImporter;
-import org.openstreetmap.josm.io.FileExporter;
-import org.openstreetmap.josm.io.FileImporter;
-import org.openstreetmap.josm.io.GpxImporter;
-import org.openstreetmap.josm.io.JpgImporter;
-import org.openstreetmap.josm.io.NMEAImporter;
-import org.openstreetmap.josm.io.NoteImporter;
-import org.openstreetmap.josm.io.OsmChangeImporter;
-import org.openstreetmap.josm.io.OsmImporter;
-import org.openstreetmap.josm.io.WMSLayerImporter;
 import org.openstreetmap.josm.io.session.SessionImporter;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -74,7 +75,7 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
                 FileImporter importer = importerClass.getConstructor().newInstance();
                 importers.add(importer);
             } catch (ReflectiveOperationException e) {
-                Main.debug(e);
+                Logging.debug(e);
             } catch (ServiceConfigurationError e) {
                 // error seen while initializing WMSLayerImporter in plugin unit tests:
                 // -
@@ -90,32 +91,33 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
                 // http://thierrywasyl.wordpress.com/2009/07/24/jai-how-to-solve-vendorname-null-exception/
                 // -
                 // that can lead to various problems, see #8583 comments
-                Main.error(e);
+                Logging.error(e);
             }
         }
 
         exporters = new ArrayList<>();
 
         final List<Class<? extends FileExporter>> exporterClasses = Arrays.asList(
-                org.openstreetmap.josm.io.GpxExporter.class,
-                org.openstreetmap.josm.io.OsmExporter.class,
-                org.openstreetmap.josm.io.OsmGzipExporter.class,
-                org.openstreetmap.josm.io.OsmBzip2Exporter.class,
-                org.openstreetmap.josm.io.GeoJSONExporter.class,
-                org.openstreetmap.josm.io.WMSLayerExporter.class,
-                org.openstreetmap.josm.io.NoteExporter.class
+                org.openstreetmap.josm.gui.io.importexport.GpxExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.OsmExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.OsmGzipExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.OsmBzip2Exporter.class,
+                org.openstreetmap.josm.gui.io.importexport.GeoJSONExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.WMSLayerExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.NoteExporter.class,
+                org.openstreetmap.josm.gui.io.importexport.ValidatorErrorExporter.class
         );
 
         for (final Class<? extends FileExporter> exporterClass : exporterClasses) {
             try {
                 FileExporter exporter = exporterClass.getConstructor().newInstance();
                 exporters.add(exporter);
-                Main.getLayerManager().addAndFireActiveLayerChangeListener(exporter);
+                MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(exporter);
             } catch (ReflectiveOperationException e) {
-                Main.debug(e);
+                Logging.debug(e);
             } catch (ServiceConfigurationError e) {
                 // see above in importers initialization
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/FollowLineAction.java b/src/org/openstreetmap/josm/actions/FollowLineAction.java
index 98bc0bb..3d1c8a7 100644
--- a/src/org/openstreetmap/josm/actions/FollowLineAction.java
+++ b/src/org/openstreetmap/josm/actions/FollowLineAction.java
@@ -10,7 +10,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.DrawAction;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.SelectCommand;
@@ -18,6 +17,8 @@ import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -59,17 +60,18 @@ public class FollowLineAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent evt) {
-        OsmDataLayer osmLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer osmLayer = getLayerManager().getEditLayer();
         if (osmLayer == null)
             return;
-        if (!(Main.map.mapMode instanceof DrawAction)) return; // We are not on draw mode
+        MapFrame map = MainApplication.getMap();
+        if (!(map.mapMode instanceof DrawAction)) return; // We are not on draw mode
 
         Collection<Node> selectedPoints = osmLayer.data.getSelectedNodes();
         Collection<Way> selectedLines = osmLayer.data.getSelectedWays();
         if ((selectedPoints.size() > 1) || (selectedLines.size() != 1)) // Unsuitable selection
             return;
 
-        Node last = ((DrawAction) Main.map.mapMode).getCurrentBaseNode();
+        Node last = ((DrawAction) map.mapMode).getCurrentBaseNode();
         if (last == null)
             return;
         Way follower = selectedLines.iterator().next();
@@ -111,7 +113,7 @@ public class FollowLineAction extends JosmAction {
             } else {
                 newFollower.addNode(newPoint);
             }
-            Main.main.undoRedo.add(new SequenceCommand(tr("Follow line"),
+            MainApplication.undoRedo.add(new SequenceCommand(tr("Follow line"),
                     new ChangeCommand(follower, newFollower),
                     new SelectCommand(newFollower.isClosed() // see #10028 - unselect last node when closing a way
                             ? Arrays.<OsmPrimitive>asList(follower)
@@ -121,7 +123,7 @@ public class FollowLineAction extends JosmAction {
             // "viewport following" mode for tracing long features
             // from aerial imagery or GPS tracks.
             if (DrawAction.VIEWPORT_FOLLOWING.get()) {
-                Main.map.mapView.smoothScrollTo(newPoint.getEastNorth());
+                map.mapView.smoothScrollTo(newPoint.getEastNorth());
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java b/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
index 0044285..7c8e9e4 100644
--- a/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
@@ -19,6 +19,7 @@ import javax.swing.JFrame;
 import javax.swing.KeyStroke;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -42,7 +43,7 @@ public class FullscreenToggleAction extends ToggleAction {
         );
         putValue("help", ht("/Action/FullscreenView"));
         putValue("toolbar", "fullscreen");
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
         gd = GraphicsEnvironment.isHeadless() ? null : GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
         setSelected(Main.pref.getBoolean("draw.fullscreen", false));
         notifySelectedState();
diff --git a/src/org/openstreetmap/josm/actions/GpxExportAction.java b/src/org/openstreetmap/josm/actions/GpxExportAction.java
index c23a35f..29d642a 100644
--- a/src/org/openstreetmap/josm/actions/GpxExportAction.java
+++ b/src/org/openstreetmap/josm/actions/GpxExportAction.java
@@ -14,12 +14,13 @@ import java.text.MessageFormat;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.io.importexport.FileExporter;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.io.FileExporter;
-import org.openstreetmap.josm.io.GpxImporter;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -42,7 +43,7 @@ public class GpxExportAction extends DiskAccessAction {
      * @return The layer to export, either a {@link GpxLayer} or {@link OsmDataLayer}.
      */
     protected Layer getLayer() {
-        Layer layer = Main.getLayerManager().getActiveLayer();
+        Layer layer = getLayerManager().getActiveLayer();
         return (layer instanceof GpxLayer || layer instanceof OsmDataLayer) ? layer : null;
     }
 
@@ -89,7 +90,7 @@ public class GpxExportAction extends DiskAccessAction {
                 try {
                     exporter.exportData(file, layer);
                 } catch (IOException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/actions/HistoryInfoAction.java b/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
index 402dd43..0c9b9ad 100644
--- a/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
+++ b/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
@@ -9,6 +9,7 @@ import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.OsmIdSelectionDialog;
 import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager;
 import org.openstreetmap.josm.io.OnlineResource;
@@ -30,7 +31,7 @@ public class HistoryInfoAction extends JosmAction {
                         tr("History"), KeyEvent.VK_H, Shortcut.CTRL), false);
         putValue("help", ht("/Action/ObjectHistory"));
         putValue("toolbar", "action/historyinfo");
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
         setEnabled(true);
     }
 
diff --git a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
index 78d1a46..93d33be 100644
--- a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
+++ b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
@@ -28,12 +28,16 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Adjust the position of an imagery layer.
@@ -70,8 +74,8 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         old = layer.getDisplaySettings().getOffsetBookmark();
         EastNorth curOff = old == null ? EastNorth.ZERO : old.getDisplacement(Main.getProjection());
         LatLon center;
-        if (Main.isDisplayingMapView()) {
-            center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
+        if (MainApplication.isDisplayingMapView()) {
+            center = Main.getProjection().eastNorth2latlon(MainApplication.getMap().mapView.getCenter());
         } else {
             center = LatLon.ZERO;
         }
@@ -96,12 +100,13 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
     }
 
     protected void addListeners() {
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.addMouseListener(this);
+        mapView.addMouseMotionListener(this);
         try {
             Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
         } catch (SecurityException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
@@ -122,11 +127,12 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         try {
             Toolkit.getDefaultToolkit().removeAWTEventListener(this);
         } catch (SecurityException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapView.removeMouseMotionListener(this);
-            Main.map.mapView.removeMouseListener(this);
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapView.removeMouseMotionListener(this);
+            map.mapView.removeMouseListener(this);
         }
     }
 
@@ -156,8 +162,8 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
             if (offsetDialog != null) {
                 offsetDialog.updateOffset();
             }
-            if (Main.isDebugEnabled()) {
-                Main.debug(getClass().getName()+" consuming event "+kev);
+            if (Logging.isDebugEnabled()) {
+                Logging.debug("{0} consuming event {1}", getClass().getName(), kev);
             }
             kev.consume();
         }
@@ -170,15 +176,16 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
 
         if (layer.isVisible()) {
             requestFocusInMapView();
-            prevEastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
-            Main.map.mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
+            MapView mapView = MainApplication.getMap().mapView;
+            prevEastNorth = mapView.getEastNorth(e.getX(), e.getY());
+            mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
         }
     }
 
     @Override
     public void mouseDragged(MouseEvent e) {
         if (layer == null || prevEastNorth == null) return;
-        EastNorth eastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
+        EastNorth eastNorth = MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY());
         EastNorth d = tempOffset.getDisplacement().add(eastNorth).subtract(prevEastNorth);
         tempOffset.setDisplacement(d);
         layer.getDisplaySettings().setOffsetBookmark(tempOffset);
@@ -190,16 +197,18 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
 
     @Override
     public void mouseReleased(MouseEvent e) {
-        Main.map.mapView.repaint();
-        Main.map.mapView.resetCursor(this);
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.repaint();
+        mapView.resetCursor(this);
         prevEastNorth = null;
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (offsetDialog != null || layer == null || Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (offsetDialog != null || layer == null || map == null)
             return;
-        oldMapMode = Main.map.mapMode;
+        oldMapMode = map.mapMode;
         super.actionPerformed(e);
     }
 
@@ -260,12 +269,12 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
                     layer.getDisplaySettings().setOffsetBookmark(tempOffset);
                 } catch (NumberFormatException nfe) {
                     // we repaint offset numbers in any case
-                    Main.trace(nfe);
+                    Logging.trace(nfe);
                 }
             }
             updateOffsetIntl();
-            if (Main.isDisplayingMapView()) {
-                Main.map.repaint();
+            if (MainApplication.isDisplayingMapView()) {
+                MainApplication.getMap().repaint();
             }
         }
 
@@ -328,17 +337,18 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
                     OffsetBookmark.bookmarkOffset(tBookmarkName.getText(), layer);
                 }
             }
-            Main.main.menu.imageryMenu.refreshOffsetMenu();
+            MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
         }
 
         private void restoreMapModeState() {
-            if (Main.map == null)
+            MapFrame map = MainApplication.getMap();
+            if (map == null)
                 return;
             if (oldMapMode != null) {
-                Main.map.selectMapMode(oldMapMode);
+                map.selectMapMode(oldMapMode);
                 oldMapMode = null;
             } else {
-                Main.map.selectSelectTool(false);
+                map.selectSelectTool(false);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/actions/InfoAction.java b/src/org/openstreetmap/josm/actions/InfoAction.java
index b770b85..078bf94 100644
--- a/src/org/openstreetmap/josm/actions/InfoAction.java
+++ b/src/org/openstreetmap/josm/actions/InfoAction.java
@@ -8,7 +8,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.dialogs.InspectPrimitiveDialog;
@@ -36,7 +35,7 @@ public class InfoAction extends JosmAction {
     public void actionPerformed(ActionEvent ae) {
         DataSet set = getLayerManager().getEditDataSet();
         if (set != null) {
-            new InspectPrimitiveDialog(set.getAllSelected(), Main.getLayerManager().getEditLayer()).showDialog();
+            new InspectPrimitiveDialog(set.getAllSelected(), set).showDialog();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/InfoWebAction.java b/src/org/openstreetmap/josm/actions/InfoWebAction.java
index 6e93161..74d5a65 100644
--- a/src/org/openstreetmap/josm/actions/InfoWebAction.java
+++ b/src/org/openstreetmap/josm/actions/InfoWebAction.java
@@ -11,6 +11,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -58,7 +59,7 @@ public class InfoWebAction extends AbstractInfoAction {
 
     private void updateEnabledStateWithNotes() {
         // Allows enabling if a note is selected, even if no OSM object is selected
-        if (!isEnabled() && Main.isDisplayingMapView() && Main.map.noteDialog.getSelectedNote() != null) {
+        if (!isEnabled() && MainApplication.isDisplayingMapView() && MainApplication.getMap().noteDialog.getSelectedNote() != null) {
             setEnabled(true);
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/JoinAreasAction.java b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
index 8598cfc..5f5a0b4 100644
--- a/src/org/openstreetmap/josm/actions/JoinAreasAction.java
+++ b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
@@ -40,11 +40,13 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
@@ -453,13 +455,13 @@ public class JoinAreasAction extends JosmAction {
 
     /**
      * Constructs a new {@code JoinAreasAction} with optional shortcut.
-     * @param addShortcut controls whether the shortcut should be registered or not
+     * @param addShortcut controls whether the shortcut should be registered or not, as for toolbar registration
      * @since 11611
      */
     public JoinAreasAction(boolean addShortcut) {
         super(tr("Join overlapping Areas"), "joinareas", tr("Joins areas that overlap each other"), addShortcut ?
         Shortcut.registerShortcut("tools:joinareas", tr("Tool: {0}", tr("Join overlapping Areas")), KeyEvent.VK_J, Shortcut.SHIFT)
-        : null, true);
+        : null, addShortcut);
     }
 
     /**
@@ -468,7 +470,7 @@ public class JoinAreasAction extends JosmAction {
      */
     @Override
     public void actionPerformed(ActionEvent e) {
-        join(Main.getLayerManager().getEditDataSet().getSelectedWays());
+        join(getLayerManager().getEditDataSet().getSelectedWays());
     }
 
     /**
@@ -563,12 +565,12 @@ public class JoinAreasAction extends JosmAction {
                         .show();
             }
         } catch (UserCancelException exception) {
-            Main.trace(exception);
+            Logging.trace(exception);
             //revert changes
             //FIXME: this is dirty hack
             makeCommitsOneAction(tr("Reverting changes"));
-            Main.main.undoRedo.undo();
-            Main.main.undoRedo.redoCommands.clear();
+            MainApplication.undoRedo.undo();
+            MainApplication.undoRedo.redoCommands.clear();
         }
     }
 
@@ -690,7 +692,7 @@ public class JoinAreasAction extends JosmAction {
 
         // Delete the discarded inner ways
         if (!discardedWays.isEmpty()) {
-            Command deleteCmd = DeleteCommand.delete(Main.getLayerManager().getEditLayer(), discardedWays, true);
+            Command deleteCmd = DeleteCommand.delete(getLayerManager().getEditLayer(), discardedWays, true);
             if (deleteCmd != null) {
                 cmds.add(deleteCmd);
                 commitCommands(marktr("Delete Ways that are not part of an inner multipolygon"));
@@ -734,7 +736,7 @@ public class JoinAreasAction extends JosmAction {
             commitCommands(marktr("Fix tag conflicts"));
             return true;
         } catch (UserCancelException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             return false;
         }
     }
@@ -824,7 +826,7 @@ public class JoinAreasAction extends JosmAction {
 
     private static void commitCommand(Command c) {
         if (Main.main != null) {
-            Main.main.undoRedo.add(c);
+            MainApplication.undoRedo.add(c);
         } else {
             c.executeCommand();
         }
@@ -1457,7 +1459,7 @@ public class JoinAreasAction extends JosmAction {
      */
     private RelationRole addOwnMultipolygonRelation(Collection<Way> inner) {
         if (inner.isEmpty()) return null;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         // Create new multipolygon relation and add all inner ways to it
         Relation newRel = new Relation();
         newRel.put("type", "multipolygon");
@@ -1535,7 +1537,7 @@ public class JoinAreasAction extends JosmAction {
             cmds.add(new ChangeCommand(r.rel, newRel));
         }
 
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = getLayerManager().getEditLayer();
         Relation newRel;
         switch (multiouters.size()) {
         case 0:
@@ -1590,7 +1592,7 @@ public class JoinAreasAction extends JosmAction {
     private void makeCommitsOneAction(String message) {
         cmds.clear();
         if (Main.main != null) {
-            UndoRedoHandler ur = Main.main.undoRedo;
+            UndoRedoHandler ur = MainApplication.undoRedo;
             int i = Math.max(ur.commands.size() - cmdsCount, 0);
             for (; i < ur.commands.size(); i++) {
                 cmds.add(ur.commands.get(i));
diff --git a/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java b/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
index 68d7866..5193110 100644
--- a/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
+++ b/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
@@ -18,7 +18,6 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
@@ -29,6 +28,8 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -91,10 +92,9 @@ public class JoinNodeWayAction extends JosmAction {
                 !getLayerManager().getEditDataSet().getSelectedWays().isEmpty();
 
         // Planning phase: decide where we'll insert the nodes and put it all in "data"
+        MapView mapView = MainApplication.getMap().mapView;
         for (Node node : selectedNodes) {
-            List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                    Main.map.mapView.getPoint(node), OsmPrimitive::isSelectable);
-
+            List<WaySegment> wss = mapView.getNearestWaySegments(mapView.getPoint(node), OsmPrimitive::isSelectable);
             MultiMap<Way, Integer> insertPoints = new MultiMap<>();
             for (WaySegment ws : wss) {
                 // Maybe cleaner to pass a "isSelected" predicate to getNearestWaySegments, but this is less invasive.
@@ -158,7 +158,7 @@ public class JoinNodeWayAction extends JosmAction {
         }
 
         if (cmds.isEmpty()) return;
-        Main.main.undoRedo.add(new SequenceCommand(getValue(NAME).toString(), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(getValue(NAME).toString(), cmds));
     }
 
     private static SortedSet<Integer> pruneSuccs(Collection<Integer> is) {
diff --git a/src/org/openstreetmap/josm/actions/JosmAction.java b/src/org/openstreetmap/josm/actions/JosmAction.java
index 4ea0c0b..9bbc638 100644
--- a/src/org/openstreetmap/josm/actions/JosmAction.java
+++ b/src/org/openstreetmap/josm/actions/JosmAction.java
@@ -17,6 +17,7 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -24,9 +25,10 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -76,14 +78,14 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
         setHelpId();
         sc = shortcut;
         if (sc != null && !sc.isAutomatic()) {
-            Main.registerActionShortcut(this, sc);
+            MainApplication.registerActionShortcut(this, sc);
         }
         setTooltip(tooltip);
         if (getValue("toolbar") == null) {
             putValue("toolbar", toolbarId);
         }
-        if (registerInToolbar && Main.toolbar != null) {
-            Main.toolbar.register(this);
+        if (registerInToolbar && MainApplication.getToolbar() != null) {
+            MainApplication.getToolbar().register(this);
         }
         if (installAdapters) {
             installAdapters();
@@ -215,7 +217,7 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
     @Override
     public void destroy() {
         if (sc != null && !sc.isAutomatic()) {
-            Main.unregisterActionShortcut(this);
+            MainApplication.unregisterActionShortcut(this);
         }
         if (layerChangeAdapter != null) {
             getLayerManager().removeLayerChangeListener(layerChangeAdapter);
@@ -267,15 +269,15 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
      * @since 10353
      */
     public MainLayerManager getLayerManager() {
-        return Main.getLayerManager();
+        return MainApplication.getLayerManager();
     }
 
     protected static void waitFuture(final Future<?> future, final PleaseWaitProgressMonitor monitor) {
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(() -> {
                         try {
                             future.get();
                         } catch (InterruptedException | ExecutionException | CancellationException e) {
-                            Main.error(e);
+                            Logging.error(e);
                             return;
                         }
                         monitor.close();
diff --git a/src/org/openstreetmap/josm/actions/JumpToAction.java b/src/org/openstreetmap/josm/actions/JumpToAction.java
index 2f519b4..c5a0ad7 100644
--- a/src/org/openstreetmap/josm/actions/JumpToAction.java
+++ b/src/org/openstreetmap/josm/actions/JumpToAction.java
@@ -20,12 +20,14 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -96,10 +98,10 @@ public class JumpToAction extends JosmAction {
      * Displays the "Jump to" dialog.
      */
     public void showJumpToDialog() {
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             return;
         }
-        MapView mv = Main.map.mapView;
+        MapView mv = MainApplication.getMap().mapView;
 
         final Optional<Bounds> boundsFromClipboard = Optional
                 .ofNullable(ClipboardUtils.getClipboardStringContent())
@@ -195,7 +197,7 @@ public class JumpToAction extends JosmAction {
             double zoomLvl = Double.parseDouble(zm.getText());
             url.setText(OsmUrlToBounds.getURL(dlat, dlon, (int) zoomLvl));
         } catch (NumberFormatException e) {
-            Main.debug(e.getMessage());
+            Logging.debug(e.getMessage());
         }
     }
 
@@ -206,13 +208,13 @@ public class JumpToAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView());
+        setEnabled(MainApplication.isDisplayingMapView());
     }
 
     @Override
     protected void installAdapters() {
         super.installAdapters();
         // make this action listen to mapframe change events
-        Main.addMapFrameListener((o, n) -> updateEnabledState());
+        MainApplication.addMapFrameListener((o, n) -> updateEnabledState());
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/LassoModeAction.java b/src/org/openstreetmap/josm/actions/LassoModeAction.java
index beb3c49..116ec12 100644
--- a/src/org/openstreetmap/josm/actions/LassoModeAction.java
+++ b/src/org/openstreetmap/josm/actions/LassoModeAction.java
@@ -3,8 +3,9 @@ package org.openstreetmap.josm.actions;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -26,24 +27,26 @@ public class LassoModeAction extends MapMode {
 
     @Override
     public void enterMode() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapModeSelect.setLassoMode(true);
-            Main.map.mapModeSelect.enterMode();
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapModeSelect.setLassoMode(true);
+            map.mapModeSelect.enterMode();
         }
         super.enterMode();
     }
 
     @Override
     public void exitMode() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapModeSelect.setLassoMode(false);
-            Main.map.mapModeSelect.exitMode();
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapModeSelect.setLassoMode(false);
+            map.mapModeSelect.exitMode();
         }
         super.exitMode();
     }
 
     @Override
     public boolean layerIsSupported(Layer l) {
-        return Main.map.mapModeSelect.layerIsSupported(l);
+        return MainApplication.getMap().mapModeSelect.layerIsSupported(l);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
index 7bb7f44..412b1af 100644
--- a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
+++ b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
@@ -24,12 +24,14 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.io.imagery.WMSImagery.WMSGetCapabilitiesException;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -192,7 +194,7 @@ public class MapRectifierWMSmenuAction extends JosmAction {
                         addWMSLayer(s.name + " (" + text + ')', text);
                         break outer;
                     } catch (IllegalStateException ex) {
-                        Main.error(ex, false);
+                        Logging.log(Logging.LEVEL_ERROR, ex);
                     }
                 }
 
@@ -239,16 +241,16 @@ public class MapRectifierWMSmenuAction extends JosmAction {
             try {
                 info = AddImageryLayerAction.getWMSLayerInfo(info);
             } catch (IOException | WMSGetCapabilitiesException e) {
-                Main.error(e);
+                Logging.error(e);
                 JOptionPane.showMessageDialog(Main.parent, e.getMessage(), tr("No valid WMS URL or id"), JOptionPane.ERROR_MESSAGE);
                 return;
             }
         }
-        Main.getLayerManager().addLayer(new WMSLayer(info));
+        MainApplication.getLayerManager().addLayer(new WMSLayer(info));
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/MergeLayerAction.java b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
index acc88ca..77133b4 100644
--- a/src/org/openstreetmap/josm/actions/MergeLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
@@ -11,12 +11,13 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Future;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -50,7 +51,7 @@ public class MergeLayerAction extends AbstractMergeAction {
         if (targetLayer == null)
             return null;
         final Object actionName = getValue(NAME);
-        return Main.worker.submit(() -> {
+        return MainApplication.worker.submit(() -> {
                 final long start = System.currentTimeMillis();
                 boolean layerMerged = false;
                 for (final Layer sourceLayer: sourceLayers) {
@@ -62,13 +63,13 @@ public class MergeLayerAction extends AbstractMergeAction {
                             break;
                         }
                         targetLayer.mergeFrom(sourceLayer);
-                        GuiHelper.runInEDTAndWait(() -> Main.getLayerManager().removeLayer(sourceLayer));
+                        GuiHelper.runInEDTAndWait(() -> getLayerManager().removeLayer(sourceLayer));
                         layerMerged = true;
                     }
                 }
                 if (layerMerged) {
-                    Main.getLayerManager().setActiveLayer(targetLayer);
-                    Main.info(tr("{0} completed in {1}", actionName, Utils.getDurationString(System.currentTimeMillis() - start)));
+                    getLayerManager().setActiveLayer(targetLayer);
+                    Logging.info(tr("{0} completed in {1}", actionName, Utils.getDurationString(System.currentTimeMillis() - start)));
                 }
         });
     }
@@ -117,7 +118,7 @@ public class MergeLayerAction extends AbstractMergeAction {
                     } catch (IllegalStateException e) {
                         // May occur when destroying last layer / exiting JOSM, see #14476
                         setEnabled(false);
-                        Main.error(e);
+                        Logging.error(e);
                     }
                 }
         });
@@ -128,7 +129,7 @@ public class MergeLayerAction extends AbstractMergeAction {
      * @return the source layer
      */
     protected Layer getSourceLayer() {
-        return Main.getLayerManager().getActiveLayer();
+        return getLayerManager().getActiveLayer();
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/MergeNodesAction.java b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
index 61cb78d..1b40c4d 100644
--- a/src/org/openstreetmap/josm/actions/MergeNodesAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
@@ -27,18 +27,21 @@ import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -73,8 +76,9 @@ public class MergeNodesAction extends JosmAction {
         List<Node> selectedNodes = OsmPrimitive.getFilteredList(selection, Node.class);
 
         if (selectedNodes.size() == 1) {
-            List<Node> nearestNodes = Main.map.mapView.getNearestNodes(
-                    Main.map.mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive::isUsable);
+            MapView mapView = MainApplication.getMap().mapView;
+            List<Node> nearestNodes = mapView.getNearestNodes(
+                    mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive::isUsable);
             if (nearestNodes.isEmpty()) {
                 new Notification(
                         tr("Please select at least two nodes to merge or one node that is close to another node."))
@@ -86,11 +90,13 @@ public class MergeNodesAction extends JosmAction {
         }
 
         Node targetNode = selectTargetNode(selectedNodes);
-        Node targetLocationNode = selectTargetLocationNode(selectedNodes);
-        Command cmd = mergeNodes(Main.getLayerManager().getEditLayer(), selectedNodes, targetNode, targetLocationNode);
-        if (cmd != null) {
-            Main.main.undoRedo.add(cmd);
-            Main.getLayerManager().getEditLayer().data.setSelected(targetNode);
+        if (targetNode != null) {
+            Node targetLocationNode = selectTargetLocationNode(selectedNodes);
+            Command cmd = mergeNodes(selectedNodes, targetNode, targetLocationNode);
+            if (cmd != null) {
+                MainApplication.undoRedo.add(cmd);
+                getLayerManager().getEditLayer().data.setSelected(targetNode);
+            }
         }
     }
 
@@ -264,45 +270,58 @@ public class MergeNodesAction extends JosmAction {
             target = selectTargetNode(allNodes);
         }
 
-        Command cmd = mergeNodes(layer, nodes, target, targetLocationNode);
-        if (cmd != null) {
-            Main.main.undoRedo.add(cmd);
-            layer.data.setSelected(target);
+        if (target != null) {
+            Command cmd = mergeNodes(nodes, target, targetLocationNode);
+            if (cmd != null) {
+                MainApplication.undoRedo.add(cmd);
+                layer.data.setSelected(target);
+            }
         }
     }
 
     /**
-     * Merges the nodes in {@code nodes} at the specified node's location. Uses the dataset
-     * managed by {@code layer} as reference.
+     * Merges the nodes in {@code nodes} at the specified node's location.
      *
-     * @param layer layer the reference data layer. Must not be null.
+     * @param layer unused
      * @param nodes the collection of nodes. Ignored if null.
      * @param targetLocationNode this node's location will be used for the targetNode.
      * @return The command necessary to run in order to perform action, or {@code null} if there is nothing to do
      * @throws IllegalArgumentException if {@code layer} is null
+     * @deprecated use {@link #mergeNodes(Collection, Node)} instead
      */
+    @Deprecated
     public static Command mergeNodes(OsmDataLayer layer, Collection<Node> nodes, Node targetLocationNode) {
+        return mergeNodes(nodes, targetLocationNode);
+    }
+
+    /**
+     * Merges the nodes in {@code nodes} at the specified node's location.
+     *
+     * @param nodes the collection of nodes. Ignored if null.
+     * @param targetLocationNode this node's location will be used for the targetNode.
+     * @return The command necessary to run in order to perform action, or {@code null} if there is nothing to do
+     * @throws IllegalArgumentException if {@code layer} is null
+     * @since 12689
+     */
+    public static Command mergeNodes(Collection<Node> nodes, Node targetLocationNode) {
         if (nodes == null) {
             return null;
         }
         Set<Node> allNodes = new HashSet<>(nodes);
         allNodes.add(targetLocationNode);
-        return mergeNodes(layer, nodes, selectTargetNode(allNodes), targetLocationNode);
+        return mergeNodes(nodes, selectTargetNode(allNodes), targetLocationNode);
     }
 
     /**
-     * Merges the nodes in <code>nodes</code> onto one of the nodes. Uses the dataset
-     * managed by <code>layer</code> as reference.
+     * Merges the nodes in <code>nodes</code> onto one of the nodes.
      *
-     * @param layer layer the reference data layer. Must not be null.
      * @param nodes the collection of nodes. Ignored if null.
      * @param targetNode the target node the collection of nodes is merged to. Must not be null.
      * @param targetLocationNode this node's location will be used for the targetNode.
      * @return The command necessary to run in order to perform action, or {@code null} if there is nothing to do
      * @throws IllegalArgumentException if layer is null
      */
-    public static Command mergeNodes(OsmDataLayer layer, Collection<Node> nodes, Node targetNode, Node targetLocationNode) {
-        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
+    public static Command mergeNodes(Collection<Node> nodes, Node targetNode, Node targetLocationNode) {
         CheckParameterUtil.ensureParameterNotNull(targetNode, "targetNode");
         if (nodes == null) {
             return null;
@@ -341,7 +360,7 @@ public class MergeNodesAction extends JosmAction {
             return new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
                     trn("Merge {0} node", "Merge {0} nodes", nodes.size(), nodes.size()), cmds);
         } catch (UserCancelException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/MirrorAction.java b/src/org/openstreetmap/josm/actions/MirrorAction.java
index 379afbd..4ae4752 100644
--- a/src/org/openstreetmap/josm/actions/MirrorAction.java
+++ b/src/org/openstreetmap/josm/actions/MirrorAction.java
@@ -13,13 +13,13 @@ import java.util.Set;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -79,7 +79,7 @@ public final class MirrorAction extends JosmAction {
             cmds.add(new MoveCommand(n, 2 * (middle - n.getEastNorth().east()), 0.0));
         }
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Mirror"), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Mirror"), cmds));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/MoveAction.java b/src/org/openstreetmap/josm/actions/MoveAction.java
index 1053161..3b5d0fd 100644
--- a/src/org/openstreetmap/josm/actions/MoveAction.java
+++ b/src/org/openstreetmap/josm/actions/MoveAction.java
@@ -18,6 +18,8 @@ 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.visitor.AllNodesVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -94,21 +96,22 @@ public class MoveAction extends JosmAction {
         } else { //dir == Direction.RIGHT
             putValue("toolbar", "action/move/right");
         }
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
     }
 
     @Override
     public void actionPerformed(ActionEvent event) {
         DataSet ds = getLayerManager().getEditDataSet();
 
-        if (!Main.isDisplayingMapView() || ds == null)
+        if (!MainApplication.isDisplayingMapView() || ds == null)
             return;
 
         // find out how many "real" units the objects have to be moved in order to
         // achive an 1-pixel movement
 
-        EastNorth en1 = Main.map.mapView.getEastNorth(100, 100);
-        EastNorth en2 = Main.map.mapView.getEastNorth(101, 101);
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth en1 = mapView.getEastNorth(100, 100);
+        EastNorth en2 = mapView.getEastNorth(101, 101);
 
         double distx = en2.east() - en1.east();
         double disty = en2.north() - en1.north();
@@ -132,7 +135,7 @@ public class MoveAction extends JosmAction {
         Collection<OsmPrimitive> selection = ds.getSelected();
         Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection);
 
-        Command c = Main.main.undoRedo.getLastCommand();
+        Command c = MainApplication.undoRedo.getLastCommand();
 
         ds.beginUpdate();
         try {
@@ -141,7 +144,7 @@ public class MoveAction extends JosmAction {
                 ((MoveCommand) c).moveAgain(distx, disty);
             } else {
                 c = new MoveCommand(selection, distx, disty);
-                Main.main.undoRedo.add(c);
+                MainApplication.undoRedo.add(c);
             }
         } finally {
             ds.endUpdate();
@@ -161,7 +164,7 @@ public class MoveAction extends JosmAction {
             }
         }
 
-        Main.map.mapView.repaint();
+        mapView.repaint();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/MoveNodeAction.java b/src/org/openstreetmap/josm/actions/MoveNodeAction.java
index 43a605e..1b25a8a 100644
--- a/src/org/openstreetmap/josm/actions/MoveNodeAction.java
+++ b/src/org/openstreetmap/josm/actions/MoveNodeAction.java
@@ -12,6 +12,7 @@ import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LatLonDialog;
 
 /**
@@ -48,8 +49,8 @@ public final class MoveNodeAction extends JosmAction {
             return;
 
         // move the node
-        Main.main.undoRedo.add(new MoveCommand(n, coordinates));
-        Main.map.mapView.repaint();
+        MainApplication.undoRedo.add(new MoveCommand(n, coordinates));
+        MainApplication.getMap().mapView.repaint();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/NewAction.java b/src/org/openstreetmap/josm/actions/NewAction.java
index 83df28c..59d18c3 100644
--- a/src/org/openstreetmap/josm/actions/NewAction.java
+++ b/src/org/openstreetmap/josm/actions/NewAction.java
@@ -1,13 +1,12 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -29,6 +28,6 @@ public class NewAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null));
+        getLayerManager().addLayer(new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null));
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/OpenFileAction.java b/src/org/openstreetmap/josm/actions/OpenFileAction.java
index 3e06c5c..c686638 100644
--- a/src/org/openstreetmap/josm/actions/OpenFileAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenFileAction.java
@@ -32,11 +32,14 @@ import javax.swing.filechooser.FileFilter;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.io.importexport.AllFormatsImporter;
+import org.openstreetmap.josm.gui.io.importexport.FileImporter;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
-import org.openstreetmap.josm.io.AllFormatsImporter;
-import org.openstreetmap.josm.io.FileImporter;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -72,7 +75,7 @@ public class OpenFileAction extends DiskAccessAction {
         File[] files = fc.getSelectedFiles();
         OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter());
         task.setRecordHistory(true);
-        Main.worker.submit(task);
+        MainApplication.worker.submit(task);
     }
 
     @Override
@@ -101,7 +104,7 @@ public class OpenFileAction extends DiskAccessAction {
     public static Future<?> openFiles(List<File> fileList, boolean recordHistory) {
         OpenFileTask task = new OpenFileTask(fileList, null);
         task.setRecordHistory(recordHistory);
-        return Main.worker.submit(task);
+        return MainApplication.worker.submit(task);
     }
 
     /**
@@ -176,8 +179,9 @@ public class OpenFileAction extends DiskAccessAction {
 
         @Override
         protected void finish() {
-            if (Main.map != null) {
-                Main.map.repaint();
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.repaint();
             }
         }
 
@@ -315,11 +319,11 @@ public class OpenFileAction extends DiskAccessAction {
                             Matcher m = Pattern.compile(".*(https?://.*)").matcher(line);
                             if (m.matches()) {
                                 String url = m.group(1);
-                                Main.main.menu.openLocation.openUrl(false, url);
+                                MainApplication.getMenu().openLocation.openUrl(false, url);
                             }
                         }
                     } catch (IOException | PatternSyntaxException | IllegalStateException | IndexOutOfBoundsException e) {
-                        Main.error(e);
+                        Logging.error(e);
                     }
                 }
             }
@@ -366,7 +370,7 @@ public class OpenFileAction extends DiskAccessAction {
                             failedAll.add(f.getCanonicalPath());
                         }
                     } catch (IOException e) {
-                        Main.warn(e);
+                        Logging.warn(e);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/actions/OpenLocationAction.java b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
index 70d782c..78b3286 100644
--- a/src/org/openstreetmap/josm/actions/OpenLocationAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
@@ -40,9 +40,11 @@ import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -165,7 +167,7 @@ public class OpenLocationAction extends JosmAction {
                     try {
                         return taskClass.getConstructor().newInstance();
                     } catch (ReflectiveOperationException e) {
-                        Main.error(e);
+                        Logging.error(e);
                         return null;
                     }
                 })
@@ -187,7 +189,7 @@ public class OpenLocationAction extends JosmAction {
                     DownloadTask task = taskClass.getConstructor().newInstance();
                     result.append(task.acceptsDocumentationSummary());
                 } catch (ReflectiveOperationException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
@@ -231,9 +233,9 @@ public class OpenLocationAction extends JosmAction {
         List<Future<?>> result = new ArrayList<>();
         for (final DownloadTask task : tasks) {
             try {
-                result.add(Main.worker.submit(new PostDownloadHandler(task, task.loadUrl(newLayer, url, monitor))));
+                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(newLayer, url, monitor))));
             } catch (IllegalArgumentException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         return result;
diff --git a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
index 6432e34..59dbbbc 100644
--- a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
+++ b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
@@ -29,8 +29,10 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -114,12 +116,12 @@ public final class OrthogonalizeAction extends JosmAction {
                     }
                 }
                 if (!commands.isEmpty()) {
-                    Main.main.undoRedo.add(new SequenceCommand(tr("Orthogonalize / Undo"), commands));
+                    MainApplication.undoRedo.add(new SequenceCommand(tr("Orthogonalize / Undo"), commands));
                 } else {
                     throw new InvalidUserInputException("Commands are empty");
                 }
             } catch (InvalidUserInputException ex) {
-                Main.debug(ex);
+                Logging.debug(ex);
                 new Notification(
                         tr("Orthogonalize Shape / Undo<br>"+
                         "Please select nodes that were moved by the previous Orthogonalize Shape action!"))
@@ -163,9 +165,9 @@ public final class OrthogonalizeAction extends JosmAction {
 
         try {
             final SequenceCommand command = orthogonalize(sel);
-            Main.main.undoRedo.add(new SequenceCommand(tr("Orthogonalize"), command));
+            MainApplication.undoRedo.add(new SequenceCommand(tr("Orthogonalize"), command));
         } catch (InvalidUserInputException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
             String msg;
             if ("usage".equals(ex.getMessage())) {
                 msg = "<h2>" + tr("Usage") + "</h2>" + USAGE;
diff --git a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
deleted file mode 100644
index f6416e2..0000000
--- a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
+++ /dev/null
@@ -1,283 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions;
-
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.GridLayout;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.KeyEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Deque;
-import java.util.LinkedList;
-import java.util.concurrent.Future;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.plaf.basic.BasicArrowButton;
-
-import org.openstreetmap.josm.Main;
-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.preferences.CollectionProperty;
-import org.openstreetmap.josm.data.preferences.IntegerProperty;
-import org.openstreetmap.josm.gui.HelpAwareOptionPane;
-import org.openstreetmap.josm.gui.download.DownloadDialog;
-import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
-import org.openstreetmap.josm.gui.widgets.JosmTextArea;
-import org.openstreetmap.josm.io.OverpassDownloadReader;
-import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
-import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.UncheckedParseException;
-import org.openstreetmap.josm.tools.Utils;
-
-/**
- * Download map data from Overpass API server.
- * @since 8684
- */
-public class OverpassDownloadAction extends JosmAction {
-
-    /**
-     * Constructs a new {@code OverpassDownloadAction}.
-     */
-    public OverpassDownloadAction() {
-        super(tr("Download from Overpass API ..."), "download-overpass", tr("Download map data from Overpass API server."),
-                // CHECKSTYLE.OFF: LineLength
-                Shortcut.registerShortcut("file:download-overpass", tr("File: {0}", tr("Download from Overpass API ...")), KeyEvent.VK_DOWN, Shortcut.ALT_SHIFT),
-                // CHECKSTYLE.ON: LineLength
-                true, "overpassdownload/download", true);
-        putValue("help", ht("/Action/OverpassDownload"));
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        OverpassDownloadDialog dialog = OverpassDownloadDialog.getInstance();
-        dialog.restoreSettings();
-        dialog.setVisible(true);
-        if (!dialog.isCanceled()) {
-            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);
-            Main.worker.submit(new PostDownloadHandler(task, future));
-        }
-    }
-
-    private static final class DisableActionsFocusListener implements FocusListener {
-
-        private final ActionMap actionMap;
-
-        private DisableActionsFocusListener(ActionMap actionMap) {
-            this.actionMap = actionMap;
-        }
-
-        @Override
-        public void focusGained(FocusEvent e) {
-            enableActions(false);
-        }
-
-        @Override
-        public void focusLost(FocusEvent e) {
-            enableActions(true);
-        }
-
-        private void enableActions(boolean enabled) {
-            Object[] allKeys = actionMap.allKeys();
-            if (allKeys != null) {
-                for (Object key : allKeys) {
-                    Action action = actionMap.get(key);
-                    if (action != null) {
-                        action.setEnabled(enabled);
-                    }
-                }
-            }
-        }
-    }
-
-    private static final class OverpassDownloadDialog extends DownloadDialog {
-
-        private HistoryComboBox overpassWizard;
-        private JosmTextArea overpassQuery;
-        private static OverpassDownloadDialog instance;
-        private static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard",
-                new ArrayList<String>());
-
-        private OverpassDownloadDialog(Component parent) {
-            super(parent, ht("/Action/OverpassDownload"));
-            cbDownloadOsmData.setEnabled(false);
-            cbDownloadOsmData.setSelected(false);
-            cbDownloadGpxData.setVisible(false);
-            cbDownloadNotes.setVisible(false);
-            cbStartup.setVisible(false);
-        }
-
-        public static OverpassDownloadDialog getInstance() {
-            if (instance == null) {
-                instance = new OverpassDownloadDialog(Main.parent);
-            }
-            return instance;
-        }
-
-        @Override
-        protected void buildMainPanelAboveDownloadSelections(JPanel pnl) {
-
-            DisableActionsFocusListener disableActionsFocusListener =
-                    new DisableActionsFocusListener(slippyMapChooser.getNavigationComponentActionMap());
-
-            pnl.add(new JLabel(), GBC.eol()); // needed for the invisible checkboxes cbDownloadGpxData, cbDownloadNotes
-
-            final String tooltip = tr("Builds an Overpass query using the Overpass Turbo query wizard");
-            overpassWizard = new HistoryComboBox();
-            overpassWizard.setToolTipText(tooltip);
-            overpassWizard.getEditorComponent().addFocusListener(disableActionsFocusListener);
-            final JButton buildQuery = new JButton(tr("Build query"));
-            final Action buildQueryAction = new AbstractAction() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    final String overpassWizardText = overpassWizard.getText();
-                    try {
-                        overpassQuery.setText(OverpassTurboQueryWizard.getInstance().constructQuery(overpassWizardText));
-                    } catch (UncheckedParseException ex) {
-                        Main.error(ex);
-                        HelpAwareOptionPane.showOptionDialog(
-                                Main.parent,
-                                tr("<html>The Overpass wizard could not parse the following query:"
-                                        + Utils.joinAsHtmlUnorderedList(Collections.singleton(overpassWizardText))),
-                                tr("Parse error"),
-                                JOptionPane.ERROR_MESSAGE,
-                                null
-                        );
-                    }
-                }
-            };
-            buildQuery.addActionListener(buildQueryAction);
-            buildQuery.setToolTipText(tooltip);
-            pnl.add(buildQuery, GBC.std().insets(5, 5, 5, 5));
-            pnl.add(overpassWizard, GBC.eol().fill(GBC.HORIZONTAL));
-            InputMapUtils.addEnterAction(overpassWizard.getEditorComponent(), buildQueryAction);
-
-            overpassQuery = new JosmTextArea("", 8, 80);
-            overpassQuery.setFont(GuiHelper.getMonospacedFont(overpassQuery));
-            overpassQuery.addFocusListener(disableActionsFocusListener);
-            JScrollPane scrollPane = new JScrollPane(overpassQuery);
-            final JPanel pane = new JPanel(new BorderLayout());
-            final BasicArrowButton arrowButton = new BasicArrowButton(BasicArrowButton.SOUTH);
-            arrowButton.addActionListener(new AbstractAction() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    OverpassQueryHistoryPopup.show(arrowButton, OverpassDownloadDialog.this);
-                }
-            });
-            pane.add(scrollPane, BorderLayout.CENTER);
-            pane.add(arrowButton, BorderLayout.EAST);
-            pnl.add(new JLabel(tr("Overpass query: ")), GBC.std().insets(5, 5, 5, 5));
-            GBC gbc = GBC.eol().fill(GBC.HORIZONTAL);
-            gbc.ipady = 200;
-            pnl.add(pane, gbc);
-
-        }
-
-        public String getOverpassQuery() {
-            return overpassQuery.getText();
-        }
-
-        public void setOverpassQuery(String text) {
-            overpassQuery.setText(text);
-        }
-
-        @Override
-        public void restoreSettings() {
-            super.restoreSettings();
-            overpassWizard.setPossibleItems(OVERPASS_WIZARD_HISTORY.get());
-        }
-
-        @Override
-        public void rememberSettings() {
-            super.rememberSettings();
-            overpassWizard.addCurrentItemToHistory();
-            OVERPASS_WIZARD_HISTORY.put(overpassWizard.getHistory());
-            OverpassQueryHistoryPopup.addToHistory(getOverpassQuery());
-        }
-
-        @Override
-        protected void updateSizeCheck() {
-            displaySizeCheckResult(false);
-        }
-    }
-
-    static class OverpassQueryHistoryPopup extends JPopupMenu {
-
-        static final CollectionProperty OVERPASS_QUERY_HISTORY = new CollectionProperty("download.overpass.query", new ArrayList<String>());
-        static final IntegerProperty OVERPASS_QUERY_HISTORY_SIZE = new IntegerProperty("download.overpass.query.size", 12);
-
-        OverpassQueryHistoryPopup(final OverpassDownloadDialog dialog) {
-            final Collection<String> history = OVERPASS_QUERY_HISTORY.get();
-            setLayout(new GridLayout((int) Math.ceil(history.size() / 2.), 2));
-            for (final String i : history) {
-                add(new OverpassQueryHistoryItem(i, dialog));
-            }
-        }
-
-        static void show(final JComponent parent, final OverpassDownloadDialog dialog) {
-            final OverpassQueryHistoryPopup menu = new OverpassQueryHistoryPopup(dialog);
-            final Rectangle r = parent.getBounds();
-            menu.show(parent.getParent(), r.x + r.width - (int) menu.getPreferredSize().getWidth(), r.y + r.height);
-        }
-
-        static void addToHistory(final String query) {
-            final Deque<String> history = new LinkedList<>(OVERPASS_QUERY_HISTORY.get());
-            if (!history.contains(query)) {
-                history.add(query);
-            }
-            while (history.size() > OVERPASS_QUERY_HISTORY_SIZE.get()) {
-                history.removeFirst();
-            }
-            OVERPASS_QUERY_HISTORY.put(history);
-        }
-    }
-
-    static class OverpassQueryHistoryItem extends JMenuItem implements ActionListener {
-
-        final String query;
-        final OverpassDownloadDialog dialog;
-
-        OverpassQueryHistoryItem(final String query, final OverpassDownloadDialog dialog) {
-            this.query = query;
-            this.dialog = dialog;
-            setText("<html><pre style='width:300px;'>" +
-                    Utils.escapeReservedCharactersHTML(Utils.restrictStringLines(query, 7)));
-            addActionListener(this);
-        }
-
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            dialog.setOverpassQuery(query);
-        }
-    }
-
-}
diff --git a/src/org/openstreetmap/josm/actions/ParameterizedAction.java b/src/org/openstreetmap/josm/actions/ParameterizedAction.java
index 988c724..5d8ff9f 100644
--- a/src/org/openstreetmap/josm/actions/ParameterizedAction.java
+++ b/src/org/openstreetmap/josm/actions/ParameterizedAction.java
@@ -5,9 +5,22 @@ import java.awt.event.ActionEvent;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * Interface for (toolbar-)actions that have additional parameters which need
+ * to be saved to the preferences (and loaded back).
+ */
 public interface ParameterizedAction extends AdaptableAction {
 
+    /**
+     * Get the list of parameters that describe the action.
+     * @return the list of parameters that describe the action
+     */
     List<ActionParameter<?>> getActionParameters();
 
+    /**
+     * Invoke action using the given parameters.
+     * @param e the ActionEvent
+     * @param parameters parameter map
+     */
     void actionPerformed(ActionEvent e, Map<String, Object> parameters);
 }
diff --git a/src/org/openstreetmap/josm/actions/ParameterizedActionDecorator.java b/src/org/openstreetmap/josm/actions/ParameterizedActionDecorator.java
index fb3d07a..2531aed 100644
--- a/src/org/openstreetmap/josm/actions/ParameterizedActionDecorator.java
+++ b/src/org/openstreetmap/josm/actions/ParameterizedActionDecorator.java
@@ -8,11 +8,20 @@ import java.util.Map;
 
 import javax.swing.Action;
 
+/**
+ * Action wrapper that delegates to a {@link ParameterizedAction} object using
+ * a specific set of parameters.
+ */
 public class ParameterizedActionDecorator implements Action {
 
     private final ParameterizedAction action;
     private final Map<String, Object> parameters;
 
+    /**
+     * Constructs a new ParameterizedActionDecorator.
+     * @param action the action that is invoked by this wrapper
+     * @param parameters parameters used for invoking the action
+     */
     public ParameterizedActionDecorator(ParameterizedAction action, Map<String, Object> parameters) {
         this.action = action;
         this.parameters = new HashMap<>(parameters);
@@ -53,6 +62,10 @@ public class ParameterizedActionDecorator implements Action {
         action.actionPerformed(e, parameters);
     }
 
+    /**
+     * Get the parameters used to invoke the wrapped action.
+     * @return the parameters used to invoke the wrapped action
+     */
     public Map<String, Object> getParameters() {
         return parameters;
     }
diff --git a/src/org/openstreetmap/josm/actions/PasteAction.java b/src/org/openstreetmap/josm/actions/PasteAction.java
index b54f14b..5261e3e 100644
--- a/src/org/openstreetmap/josm/actions/PasteAction.java
+++ b/src/org/openstreetmap/josm/actions/PasteAction.java
@@ -7,7 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -24,7 +24,7 @@ public final class PasteAction extends AbstractPasteAction {
                 Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Paste"));
         // CUA shortcut for paste (https://en.wikipedia.org/wiki/IBM_Common_User_Access#Description)
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
                 Shortcut.registerShortcut("system:paste:cua", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_INSERT, Shortcut.SHIFT));
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java b/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java
index 0a890c8..29962cd 100644
--- a/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java
@@ -8,11 +8,24 @@ import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 
+/**
+ * User action to toggle a custom boolean preference value.
+ *
+ * A user action will just change a preference value. To take any real action,
+ * register another {@link PreferenceChangedListener} for the given preference key.
+ */
 public class PreferenceToggleAction extends JosmAction implements PreferenceChangedListener {
 
     private final JCheckBoxMenuItem checkbox;
     private final BooleanProperty pref;
 
+    /**
+     * Create a new PreferenceToggleAction.
+     * @param name the (translated) title
+     * @param tooltip tooltip text
+     * @param prefKey the preference key to toggle
+     * @param prefDefault default value for the preference entry
+     */
     public PreferenceToggleAction(String name, String tooltip, String prefKey, boolean prefDefault) {
         super(name, null, tooltip, null, false);
         putValue("toolbar", "toggle-" + prefKey);
diff --git a/src/org/openstreetmap/josm/actions/PurgeAction.java b/src/org/openstreetmap/josm/actions/PurgeAction.java
index c70cec6..353d456 100644
--- a/src/org/openstreetmap/josm/actions/PurgeAction.java
+++ b/src/org/openstreetmap/josm/actions/PurgeAction.java
@@ -12,9 +12,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -31,12 +29,9 @@ import javax.swing.JSeparator;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.PurgeCommand;
 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.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -62,15 +57,6 @@ public class PurgeAction extends JosmAction {
     protected JCheckBox cbClearUndoRedo;
     protected boolean modified;
 
-    protected transient Set<OsmPrimitive> toPurge;
-    /**
-     * finally, contains all objects that are purged
-     */
-    protected transient Set<OsmPrimitive> toPurgeChecked;
-    /**
-     * Subset of toPurgeChecked. Marks primitives that remain in the dataset, but incomplete.
-     */
-    protected transient Set<OsmPrimitive> makeIncomplete;
     /**
      * Subset of toPurgeChecked. Those that have not been in the selection.
      */
@@ -80,19 +66,10 @@ public class PurgeAction extends JosmAction {
      * Constructs a new {@code PurgeAction}.
      */
     public PurgeAction() {
-        this(true);
-    }
-
-    /**
-     * Constructs a new {@code PurgeAction} with optional shortcut.
-     * @param addShortcut controls whether the shortcut should be registered or not
-     * @since 11611
-     */
-    public PurgeAction(boolean addShortcut) {
         /* translator note: other expressions for "purge" might be "forget", "clean", "obliterate", "prune" */
-        super(tr("Purge..."), "purge", tr("Forget objects but do not delete them on server when uploading."), addShortcut ?
-                Shortcut.registerShortcut("system:purge", tr("Edit: {0}", tr("Purge")), KeyEvent.VK_P, Shortcut.CTRL_SHIFT)
-                : null, true);
+        super(tr("Purge..."), "purge", tr("Forget objects but do not delete them on server when uploading."),
+                Shortcut.registerShortcut("system:purge", tr("Edit: {0}", tr("Purge")), KeyEvent.VK_P, Shortcut.CTRL_SHIFT),
+                true);
         putValue("help", HelpUtil.ht("/Action/Purge"));
     }
 
@@ -124,9 +101,9 @@ public class PurgeAction extends JosmAction {
             Main.pref.put("purge.clear_undo_redo", clearUndoRedo);
         }
 
-        Main.main.undoRedo.add(cmd);
+        MainApplication.undoRedo.add(cmd);
         if (clearUndoRedo) {
-            Main.main.undoRedo.clean();
+            MainApplication.undoRedo.clean();
             getLayerManager().getEditDataSet().clearSelectionHistory();
         }
     }
@@ -138,113 +115,11 @@ public class PurgeAction extends JosmAction {
      * @since 11252
      */
     public PurgeCommand getPurgeCommand(Collection<OsmPrimitive> sel) {
-        layer = Main.getLayerManager().getEditLayer();
-
-        toPurge = new HashSet<>(sel);
+        layer = getLayerManager().getEditLayer();
         toPurgeAdditionally = new ArrayList<>();
-        toPurgeChecked = new HashSet<>();
-
-        // Add referrer, unless the object to purge is not new and the parent is a relation
-        Set<OsmPrimitive> toPurgeRecursive = new HashSet<>();
-        while (!toPurge.isEmpty()) {
-
-            for (OsmPrimitive osm: toPurge) {
-                for (OsmPrimitive parent: osm.getReferrers()) {
-                    if (toPurge.contains(parent) || toPurgeChecked.contains(parent) || toPurgeRecursive.contains(parent)) {
-                        continue;
-                    }
-                    if (parent instanceof Way || (parent instanceof Relation && osm.isNew())) {
-                        toPurgeAdditionally.add(parent);
-                        toPurgeRecursive.add(parent);
-                    }
-                }
-                toPurgeChecked.add(osm);
-            }
-            toPurge = toPurgeRecursive;
-            toPurgeRecursive = new HashSet<>();
-        }
-
-        makeIncomplete = new HashSet<>();
-
-        // Find the objects that will be incomplete after purging.
-        // At this point, all parents of new to-be-purged primitives are
-        // also to-be-purged and
-        // all parents of not-new to-be-purged primitives are either
-        // to-be-purged or of type relation.
-        TOP:
-            for (OsmPrimitive child : toPurgeChecked) {
-                if (child.isNew()) {
-                    continue;
-                }
-                for (OsmPrimitive parent : child.getReferrers()) {
-                    if (parent instanceof Relation && !toPurgeChecked.contains(parent)) {
-                        makeIncomplete.add(child);
-                        continue TOP;
-                    }
-                }
-            }
-
-        // Add untagged way nodes. Do not add nodes that have other referrers not yet to-be-purged.
-        if (Main.pref.getBoolean("purge.add_untagged_waynodes", true)) {
-            Set<OsmPrimitive> wayNodes = new HashSet<>();
-            for (OsmPrimitive osm : toPurgeChecked) {
-                if (osm instanceof Way) {
-                    Way w = (Way) osm;
-                    NODE:
-                        for (Node n : w.getNodes()) {
-                            if (n.isTagged() || toPurgeChecked.contains(n)) {
-                                continue;
-                            }
-                            for (OsmPrimitive ref : n.getReferrers()) {
-                                if (ref != w && !toPurgeChecked.contains(ref)) {
-                                    continue NODE;
-                                }
-                            }
-                            wayNodes.add(n);
-                        }
-                }
-            }
-            toPurgeChecked.addAll(wayNodes);
-            toPurgeAdditionally.addAll(wayNodes);
-        }
-
-        if (Main.pref.getBoolean("purge.add_relations_with_only_incomplete_members", true)) {
-            Set<Relation> relSet = new HashSet<>();
-            for (OsmPrimitive osm : toPurgeChecked) {
-                for (OsmPrimitive parent : osm.getReferrers()) {
-                    if (parent instanceof Relation
-                            && !(toPurgeChecked.contains(parent))
-                            && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relSet)) {
-                        relSet.add((Relation) parent);
-                    }
-                }
-            }
-
-            // Add higher level relations (list gets extended while looping over it)
-            List<Relation> relLst = new ArrayList<>(relSet);
-            for (int i = 0; i < relLst.size(); ++i) { // foreach loop not applicable since list gets extended while looping over it
-                for (OsmPrimitive parent : relLst.get(i).getReferrers()) {
-                    if (!(toPurgeChecked.contains(parent))
-                            && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relLst)) {
-                        relLst.add((Relation) parent);
-                    }
-                }
-            }
-            relSet = new HashSet<>(relLst);
-            toPurgeChecked.addAll(relSet);
-            toPurgeAdditionally.addAll(relSet);
-        }
-
-        modified = false;
-        for (OsmPrimitive osm : toPurgeChecked) {
-            if (osm.isModified()) {
-                modified = true;
-                break;
-            }
-        }
-
-        return layer != null ? new PurgeCommand(layer, toPurgeChecked, makeIncomplete) :
-            new PurgeCommand(toPurgeChecked.iterator().next().getDataSet(), toPurgeChecked, makeIncomplete);
+        PurgeCommand cmd = PurgeCommand.build(layer, sel, toPurgeAdditionally);
+        modified = cmd.getParticipatingPrimitives().stream().anyMatch(OsmPrimitive::isModified);
+        return cmd;
     }
 
     private JPanel buildPanel(boolean modified) {
@@ -321,13 +196,4 @@ public class PurgeAction extends JosmAction {
     protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
         setEnabled(selection != null && !selection.isEmpty());
     }
-
-    private static boolean hasOnlyIncompleteMembers(
-            Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) {
-        for (RelationMember m : r.getMembers()) {
-            if (!m.getMember().isIncomplete() && !toPurge.contains(m.getMember()) && !moreToPurge.contains(m.getMember()))
-                return false;
-        }
-        return true;
-    }
 }
diff --git a/src/org/openstreetmap/josm/actions/RedoAction.java b/src/org/openstreetmap/josm/actions/RedoAction.java
index b5c9120..3d6af09 100644
--- a/src/org/openstreetmap/josm/actions/RedoAction.java
+++ b/src/org/openstreetmap/josm/actions/RedoAction.java
@@ -8,6 +8,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -30,26 +32,27 @@ public class RedoAction extends JosmAction implements OsmDataLayer.CommandQueueL
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (map == null)
             return;
-        Main.map.repaint();
-        Main.main.undoRedo.redo();
+        map.repaint();
+        MainApplication.undoRedo.redo();
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.main != null && !Main.main.undoRedo.redoCommands.isEmpty());
+        setEnabled(Main.main != null && !MainApplication.undoRedo.redoCommands.isEmpty());
     }
 
     @Override
     public void commandChanged(int queueSize, int redoSize) {
-        if (Main.main.undoRedo.redoCommands.isEmpty()) {
+        if (MainApplication.undoRedo.redoCommands.isEmpty()) {
             putValue(NAME, tr("Redo"));
             setTooltip(tr("Redo the last undone action."));
         } else {
             putValue(NAME, tr("Redo ..."));
             setTooltip(tr("Redo {0}",
-                    Main.main.undoRedo.redoCommands.getFirst().getDescriptionText()));
+                    MainApplication.undoRedo.redoCommands.getFirst().getDescriptionText()));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/RestartAction.java b/src/org/openstreetmap/josm/actions/RestartAction.java
index 2871588..2ae2319 100644
--- a/src/org/openstreetmap/josm/actions/RestartAction.java
+++ b/src/org/openstreetmap/josm/actions/RestartAction.java
@@ -19,6 +19,7 @@ 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.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -47,8 +48,8 @@ public class RestartAction extends JosmAction {
                 Shortcut.registerShortcut("file:restart", tr("File: {0}", tr("Restart")), KeyEvent.VK_J, Shortcut.ALT_CTRL_SHIFT), false);
         putValue("help", ht("/Action/Restart"));
         putValue("toolbar", "action/restart");
-        if (Main.toolbar != null) {
-            Main.toolbar.register(this);
+        if (MainApplication.getToolbar() != null) {
+            MainApplication.getToolbar().register(this);
         }
         setEnabled(isRestartSupported());
     }
@@ -58,7 +59,7 @@ public class RestartAction extends JosmAction {
         try {
             restartJOSM();
         } catch (IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
@@ -81,10 +82,10 @@ public class RestartAction extends JosmAction {
         // Request for restart is indicated by exit code 9.
         String scriptRestart = System.getProperty("josm.restart");
         if ("true".equals(scriptRestart)) {
-            Main.exitJosm(true, 9, SaveLayersDialog.Reason.RESTART);
+            MainApplication.exitJosm(true, 9, SaveLayersDialog.Reason.RESTART);
         }
 
-        if (isRestartSupported() && !Main.exitJosm(false, 0, SaveLayersDialog.Reason.RESTART)) return;
+        if (isRestartSupported() && !MainApplication.exitJosm(false, 0, SaveLayersDialog.Reason.RESTART)) return;
         final List<String> cmd;
         // special handling for OSX .app package
         if (Main.isPlatformOsx() && System.getProperty("java.library.path").contains("/JOSM.app/Contents/MacOS")) {
@@ -92,9 +93,9 @@ public class RestartAction extends JosmAction {
         } else {
             cmd = getCommands();
         }
-        Main.info("Restart "+cmd);
-        if (Main.isDebugEnabled() && Main.pref.getBoolean("restart.debug.simulation")) {
-            Main.debug("Restart cancelled to get debug info");
+        Logging.info("Restart "+cmd);
+        if (Logging.isDebugEnabled() && Main.pref.getBoolean("restart.debug.simulation")) {
+            Logging.debug("Restart cancelled to get debug info");
             return;
         }
         // execute the command in a shutdown hook, to be sure that all the
@@ -105,7 +106,7 @@ public class RestartAction extends JosmAction {
                 try {
                     Runtime.getRuntime().exec(cmd.toArray(new String[cmd.size()]));
                 } catch (IOException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         });
@@ -137,9 +138,7 @@ public class RestartAction extends JosmAction {
         String[] mainCommand = javaCommand.split(" ");
         if (javaCommand.endsWith(".jnlp") && jnlp == null) {
             // see #11751 - jnlp on Linux
-            if (Main.isDebugEnabled()) {
-                Main.debug("Detected jnlp without jnlpx.origFilenameArg property set");
-            }
+            Logging.debug("Detected jnlp without jnlpx.origFilenameArg property set");
             cmd.addAll(Arrays.asList(mainCommand));
         } else {
             // look for a .jar in all chunks to support paths with spaces (fix #9077)
@@ -180,9 +179,7 @@ public class RestartAction extends JosmAction {
 
     private static void addVMArguments(Collection<String> cmd) {
         List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
-        if (Main.isDebugEnabled()) {
-            Main.debug("VM arguments: "+arguments);
-        }
+        Logging.debug("VM arguments: {0}", arguments);
         for (String arg : arguments) {
             // When run from jp2launcher.exe, jnlpx.remove is true, while it is not when run from javaws
             // Always set it to false to avoid error caused by a missing jnlp file on the second restart
diff --git a/src/org/openstreetmap/josm/actions/ReverseWayAction.java b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
index 1717600..2fa4097 100644
--- a/src/org/openstreetmap/josm/actions/ReverseWayAction.java
+++ b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
@@ -25,7 +25,9 @@ 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.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -130,12 +132,12 @@ public final class ReverseWayAction extends JosmAction {
             try {
                 revResult = reverseWay(w);
             } catch (UserCancelException ex) {
-                Main.trace(ex);
+                Logging.trace(ex);
                 return;
             }
             c.addAll(revResult.getCommands());
         }
-        Main.main.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/SaveActionBase.java b/src/org/openstreetmap/josm/actions/SaveActionBase.java
index 86ad142..214ebea 100644
--- a/src/org/openstreetmap/josm/actions/SaveActionBase.java
+++ b/src/org/openstreetmap/josm/actions/SaveActionBase.java
@@ -16,10 +16,11 @@ import javax.swing.filechooser.FileFilter;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.io.importexport.FileExporter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
-import org.openstreetmap.josm.io.FileExporter;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -51,7 +52,7 @@ public abstract class SaveActionBase extends DiskAccessAction {
      * @return {@code true} if the save operation succeeds
      */
     public boolean doSave() {
-        Layer layer = Main.getLayerManager().getActiveLayer();
+        Layer layer = getLayerManager().getActiveLayer();
         if (layer != null && layer.isSavable()) {
             return doSave(layer);
         }
@@ -116,7 +117,7 @@ public abstract class SaveActionBase extends DiskAccessAction {
             }
             Main.parent.repaint();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             return false;
         }
         addToFileOpenHistory(file);
@@ -131,7 +132,7 @@ public abstract class SaveActionBase extends DiskAccessAction {
      */
     @Override
     protected void updateEnabledState() {
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         setEnabled(activeLayer != null && activeLayer.isSavable());
     }
 
@@ -223,7 +224,7 @@ public abstract class SaveActionBase extends DiskAccessAction {
         try {
             filepath = file.getCanonicalPath();
         } catch (IOException ign) {
-            Main.warn(ign);
+            Logging.warn(ign);
             return;
         }
 
diff --git a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
index d97f765..a322d1a 100644
--- a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
@@ -21,6 +21,7 @@ import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -86,7 +87,7 @@ public class SearchNotesDownloadAction extends JosmAction {
             new DownloadNotesTask().download(id, null);
             return;
         } catch (NumberFormatException ignore) {
-            Main.trace(ignore);
+            Logging.trace(ignore);
         }
 
         int noteLimit = Main.pref.getInteger("osm.notes.downloadLimit", 1000);
diff --git a/src/org/openstreetmap/josm/actions/SelectAllAction.java b/src/org/openstreetmap/josm/actions/SelectAllAction.java
index 1e6590e..e12e33f 100644
--- a/src/org/openstreetmap/josm/actions/SelectAllAction.java
+++ b/src/org/openstreetmap/josm/actions/SelectAllAction.java
@@ -11,6 +11,9 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * User action to select all primitives in the current dataset.
+ */
 public class SelectAllAction extends JosmAction {
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java b/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
index 7d21829..f65f2f9 100644
--- a/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
+++ b/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
@@ -7,7 +7,6 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -16,6 +15,8 @@ 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.data.projection.Projection;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Geometry;
 
 /**
@@ -36,7 +37,7 @@ public final class SelectByInternalPointAction {
      * @return the surrounding polygons/multipolygons
      */
     public static Collection<OsmPrimitive> getSurroundingObjects(EastNorth internalPoint) {
-        return getSurroundingObjects(Main.getLayerManager().getEditDataSet(), internalPoint, false);
+        return getSurroundingObjects(MainApplication.getLayerManager().getEditDataSet(), internalPoint, false);
     }
 
     /**
@@ -60,6 +61,7 @@ public final class SelectByInternalPointAction {
                 found.put(Geometry.closedWayArea(w), w);
             }
         }
+        Projection projection = MainApplication.getMap().mapView.getProjection();
         for (Relation r : ds.getRelations()) {
             if (r.isUsable() && r.isMultipolygon() && r.isSelectable() && Geometry.isNodeInsideMultiPolygon(n, r, null)) {
                 if (!includeMultipolygonWays) {
@@ -71,8 +73,8 @@ public final class SelectByInternalPointAction {
                 }
                 // estimate multipolygon size by its bounding box area
                 BBox bBox = r.getBBox();
-                EastNorth en1 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getTopLeft());
-                EastNorth en2 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getBottomRight());
+                EastNorth en1 = projection.latlon2eastNorth(bBox.getTopLeft());
+                EastNorth en2 = projection.latlon2eastNorth(bBox.getBottomRight());
                 double s = Math.abs((en1.east() - en2.east()) * (en1.north() - en2.north()));
                 found.put(s <= 0 ? 1e8 : s, r);
             }
@@ -100,7 +102,7 @@ public final class SelectByInternalPointAction {
      */
     public static void performSelection(EastNorth internalPoint, boolean doAdd, boolean doRemove) {
         final Collection<OsmPrimitive> surroundingObjects = getSurroundingObjects(internalPoint);
-        final DataSet ds = Main.getLayerManager().getEditDataSet();
+        final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (surroundingObjects.isEmpty()) {
             return;
         } else if (doRemove) {
diff --git a/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java b/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java
index 2904960..aa2c1e1 100644
--- a/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java
+++ b/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java
@@ -1,14 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.tools.Shortcut;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
  * This allows to select a sequence of non-branching connected ways.
@@ -19,7 +18,6 @@ public class SelectNonBranchingWaySequencesAction extends JosmAction {
 
     /**
      * Creates a new {@link SelectNonBranchingWaySequencesAction}
-     *
      */
     public SelectNonBranchingWaySequencesAction() {
         super(tr("Non-branching way sequences"),
@@ -31,18 +29,17 @@ public class SelectNonBranchingWaySequencesAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent ev) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = getLayerManager().getEditDataSet();
         SelectNonBranchingWaySequences ws = new SelectNonBranchingWaySequences(ds.getSelectedWays());
         ws.extend(ds);
     }
 
     /**
      * Update the enabled state of the action when something in
-     * the JOSM state changes, i.e. when a layer is removed or
-     * added.
+     * the JOSM state changes, i.e. when a layer is removed or added.
      */
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(getLayerManager().getEditDataSet() != null);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/SessionLoadAction.java b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
index 65d3de1..0a9407c 100644
--- a/src/org/openstreetmap/josm/actions/SessionLoadAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
@@ -20,6 +20,7 @@ import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
@@ -33,6 +34,7 @@ import org.openstreetmap.josm.io.session.SessionReader.SessionProjectionChoiceDa
 import org.openstreetmap.josm.io.session.SessionReader.SessionViewportData;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -58,7 +60,7 @@ public class SessionLoadAction extends DiskAccessAction {
             return;
         File file = fc.getSelectedFile();
         boolean zip = Utils.hasExtension(file, "joz");
-        Main.worker.submit(new Loader(file, zip));
+        MainApplication.worker.submit(new Loader(file, zip));
     }
 
     /**
@@ -131,17 +133,17 @@ public class SessionLoadAction extends DiskAccessAction {
 
         private void addLayers() {
             if (layers != null && !layers.isEmpty()) {
-                boolean noMap = Main.map == null;
+                boolean noMap = MainApplication.getMap() == null;
                 for (Layer l : layers) {
                     if (canceled)
                         return;
-                    Main.getLayerManager().addLayer(l);
+                    MainApplication.getLayerManager().addLayer(l);
                 }
                 if (active != null) {
-                    Main.getLayerManager().setActiveLayer(active);
+                    MainApplication.getLayerManager().setActiveLayer(active);
                 }
                 if (noMap && viewport != null) {
-                    Main.map.mapView.scheduleZoomTo(viewport.getEastNorthViewport(Main.getProjection()));
+                    MainApplication.getMap().mapView.scheduleZoomTo(viewport.getEastNorthViewport(Main.getProjection()));
                 }
             }
         }
@@ -195,7 +197,7 @@ public class SessionLoadAction extends DiskAccessAction {
         }
 
         private void handleException(String dialogTitle, Exception e) {
-            Main.error(e);
+            Logging.error(e);
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
                     tr("<html>Could not load session file ''{0}''.<br>Error is:<br>{1}</html>",
diff --git a/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java b/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
index 234d99b..80c430e 100644
--- a/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
@@ -34,17 +34,19 @@ import javax.swing.filechooser.FileFilter;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.io.session.SessionLayerExporter;
 import org.openstreetmap.josm.io.session.SessionWriter;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Saves a JOSM session
@@ -72,7 +74,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
         super(tr("Save Session As..."), "session", tr("Save the current session to a new file."),
                 null, toolbar, "save_as-session", installAdapters);
         putValue("help", ht("/Action/SessionSaveAs"));
-        Main.addMapFrameListener(this);
+        MainApplication.addMapFrameListener(this);
     }
 
     @Override
@@ -80,7 +82,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
         try {
             saveSession();
         } catch (UserCancelException ignore) {
-            Main.trace(ignore);
+            Logging.trace(ignore);
         }
     }
 
@@ -156,7 +158,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
         }
 
         int active = -1;
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = getLayerManager().getActiveLayer();
         if (activeLayer != null) {
             active = layersOut.indexOf(activeLayer);
         }
@@ -166,7 +168,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
             sw.write(file);
             SaveActionBase.addToFileOpenHistory(file);
         } catch (IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
                     tr("<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>",
@@ -200,7 +202,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
          * Initializes action.
          */
         public final void initialize() {
-            layers = new ArrayList<>(Main.getLayerManager().getLayers());
+            layers = new ArrayList<>(getLayerManager().getLayers());
             exporters = new HashMap<>();
             dependencies = new MultiMap<>();
 
@@ -281,7 +283,7 @@ public class SessionSaveAsAction extends DiskAccessAction implements MapFrameLis
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView());
+        setEnabled(MainApplication.isDisplayingMapView());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
index 3c065b2..b4e67df 100644
--- a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
+++ b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
@@ -27,26 +27,27 @@ import org.openstreetmap.josm.data.Version;
 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.data.preferences.sources.MapPaintPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.PresetPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourcePrefHelper;
 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;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorTagCheckerRulesPreference;
+import org.openstreetmap.josm.gui.bugreport.DebugTextDisplay;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReportSender;
-import org.openstreetmap.josm.tools.bugreport.DebugTextDisplay;
 
 /**
- * @author xeen
- *
  * Opens a dialog with useful status information like version numbers for Java, JOSM and plugins
- * Also includes preferences with stripped username and password
+ * Also includes preferences with stripped username and password.
+ *
+ * @author xeen
  */
 public final class ShowStatusReportAction extends JosmAction {
 
@@ -63,7 +64,7 @@ public final class ShowStatusReportAction extends JosmAction {
 
         putValue("help", ht("/Action/ShowStatusReport"));
         putValue("toolbar", "help/showstatusreport");
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
     }
 
     private static boolean isRunningJavaWebStart() {
@@ -168,14 +169,14 @@ public final class ShowStatusReportAction extends JosmAction {
                 text.append("VM arguments: ").append(vmArguments.toString().replace("\\\\", "\\")).append('\n');
             }
         } catch (SecurityException e) {
-            Main.trace(e);
+            Logging.trace(e);
         }
         List<String> commandLineArgs = MainApplication.getCommandLineArgs();
         if (!commandLineArgs.isEmpty()) {
             text.append("Program arguments: ").append(Arrays.toString(paramCleanup(commandLineArgs).toArray())).append('\n');
         }
         if (Main.main != null) {
-            DataSet dataset = Main.getLayerManager().getEditDataSet();
+            DataSet dataset = MainApplication.getLayerManager().getEditDataSet();
             if (dataset != null) {
                 String result = DatasetConsistencyTest.runTests(dataset);
                 if (result.isEmpty()) {
@@ -187,10 +188,10 @@ public final class ShowStatusReportAction extends JosmAction {
         }
         text.append('\n');
         appendCollection(text, "Plugins", Utils.transform(PluginHandler.getBugReportInformation(), i -> "+ " + i));
-        appendCollection(text, "Tagging presets", getCustomUrls(TaggingPresetPreference.PresetPrefHelper.INSTANCE));
-        appendCollection(text, "Map paint styles", getCustomUrls(MapPaintPreference.MapPaintPrefHelper.INSTANCE));
-        appendCollection(text, "Validator rules", getCustomUrls(ValidatorTagCheckerRulesPreference.RulePrefHelper.INSTANCE));
-        appendCollection(text, "Last errors/warnings", Utils.transform(Main.getLastErrorAndWarnings(), i -> "- " + i));
+        appendCollection(text, "Tagging presets", getCustomUrls(PresetPrefHelper.INSTANCE));
+        appendCollection(text, "Map paint styles", getCustomUrls(MapPaintPrefHelper.INSTANCE));
+        appendCollection(text, "Validator rules", getCustomUrls(ValidatorPrefHelper.INSTANCE));
+        appendCollection(text, "Last errors/warnings", Utils.transform(Logging.getLastErrorAndWarnings(), i -> "- " + i));
 
         String osmApi = OsmApi.getOsmApi().getServerUrl();
         if (!OsmApi.DEFAULT_API_URL.equals(osmApi.trim())) {
@@ -200,7 +201,7 @@ public final class ShowStatusReportAction extends JosmAction {
         return text.toString();
     }
 
-    private static Collection<String> getCustomUrls(SourceEditor.SourcePrefHelper helper) {
+    private static Collection<String> getCustomUrls(SourcePrefHelper helper) {
         final Set<String> defaultUrls = helper.getDefault().stream()
                 .map(i -> i.url)
                 .collect(Collectors.toSet());
diff --git a/src/org/openstreetmap/josm/actions/SimplifyWayAction.java b/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
index 3686d7b..e45a459 100644
--- a/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
+++ b/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.projection.Ellipsoid;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -122,7 +123,7 @@ public class SimplifyWayAction extends JosmAction {
                     trn("Simplify {0} way", "Simplify {0} ways", allCommands.size(), allCommands.size()),
                     allCommands
                     );
-            Main.main.undoRedo.add(rootCommand);
+            MainApplication.undoRedo.add(rootCommand);
         } finally {
             ds.endUpdate();
         }
diff --git a/src/org/openstreetmap/josm/actions/SplitWayAction.java b/src/org/openstreetmap/josm/actions/SplitWayAction.java
index 804dbda..53a77fa 100644
--- a/src/org/openstreetmap/josm/actions/SplitWayAction.java
+++ b/src/org/openstreetmap/josm/actions/SplitWayAction.java
@@ -33,6 +33,7 @@ import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
@@ -40,8 +41,9 @@ 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.data.osm.WaySegment;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -212,7 +214,7 @@ public class SplitWayAction extends JosmAction {
             }
             if (wayToKeep != null) {
                 final SplitWayResult result = doSplitWay(getLayerManager().getEditLayer(), selectedWay, wayToKeep, newWays, sel);
-                Main.main.undoRedo.add(result.getCommand());
+                MainApplication.undoRedo.add(result.getCommand());
                 if (!result.getNewSelection().isEmpty()) {
                     getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
                 }
@@ -254,7 +256,7 @@ public class SplitWayAction extends JosmAction {
             list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
             list.addListSelectionListener(e -> {
                 final Way selected = list.getSelectedValue();
-                if (selected != null && Main.isDisplayingMapView() && selected.getNodesCount() > 1) {
+                if (selected != null && MainApplication.isDisplayingMapView() && selected.getNodesCount() > 1) {
                     final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
                     final Iterator<Node> it = selected.getNodes().iterator();
                     Node previousNode = it.next();
@@ -271,7 +273,7 @@ public class SplitWayAction extends JosmAction {
 
         protected void setHighlightedWaySegments(Collection<WaySegment> segments) {
             selectedWay.getDataSet().setHighlightedWaySegments(segments);
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
 
         @Override
@@ -291,11 +293,11 @@ public class SplitWayAction extends JosmAction {
             super.buttonAction(buttonIndex, evt);
             toggleSaveState(); // necessary since #showDialog() does not handle it due to the non-modal dialog
             if (getValue() == 1) {
-                SplitWayResult result = doSplitWay(Main.getLayerManager().getEditLayer(),
+                SplitWayResult result = doSplitWay(MainApplication.getLayerManager().getEditLayer(),
                         selectedWay, list.getSelectedValue(), newWays, selection);
-                Main.main.undoRedo.add(result.getCommand());
+                MainApplication.undoRedo.add(result.getCommand());
                 if (!result.getNewSelection().isEmpty()) {
-                    Main.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
+                    MainApplication.getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
                 }
             }
         }
@@ -541,7 +543,8 @@ 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;
+        final MapFrame map = MainApplication.getMap();
+        final boolean isMapModeDraw = map != null && map.mapMode == map.mapModeDraw;
 
         // Change the original way
         final Way changedWay = new Way(way);
diff --git a/src/org/openstreetmap/josm/actions/ToggleAction.java b/src/org/openstreetmap/josm/actions/ToggleAction.java
index b2d9784..fb0a274 100644
--- a/src/org/openstreetmap/josm/actions/ToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/ToggleAction.java
@@ -12,8 +12,8 @@ import javax.swing.JRadioButton;
 import javax.swing.JRadioButtonMenuItem;
 import javax.swing.JToggleButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -78,7 +78,7 @@ public abstract class ToggleAction extends JosmAction {
         if (selected instanceof Boolean) {
             return (Boolean) selected;
         } else {
-            Main.warn(getClass().getName() + " does not define a boolean for SELECTED_KEY but " + selected +
+            Logging.warn(getClass().getName() + " does not define a boolean for SELECTED_KEY but " + selected +
                     ". You should report it to JOSM developers.");
             return false;
         }
diff --git a/src/org/openstreetmap/josm/actions/UnGlueAction.java b/src/org/openstreetmap/josm/actions/UnGlueAction.java
index 14838a5..07f4c3e 100644
--- a/src/org/openstreetmap/josm/actions/UnGlueAction.java
+++ b/src/org/openstreetmap/josm/actions/UnGlueAction.java
@@ -31,17 +31,19 @@ import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.ChangeNodesCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
@@ -80,7 +82,7 @@ public class UnGlueAction extends JosmAction {
         try {
             unglue(e);
         } catch (UserCancelException ignore) {
-            Main.trace(ignore);
+            Logging.trace(ignore);
         } finally {
             cleanup();
         }
@@ -293,7 +295,7 @@ public class UnGlueAction extends JosmAction {
         try {
             dialog = PropertiesMembershipDialog.showIfNecessary(Collections.singleton(selectedNode), true);
         } catch (UserCancelException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             return;
         }
 
@@ -306,14 +308,14 @@ public class UnGlueAction extends JosmAction {
         }
 
         // If this wasn't called from menu, place it where the cursor is/was
+        MapView mv = MainApplication.getMap().mapView;
         if (e.getSource() instanceof JPanel) {
-            MapView mv = Main.map.mapView;
             n.setCoor(mv.getLatLon(mv.lastMEvent.getX(), mv.lastMEvent.getY()));
         }
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Unglued Node"), cmds));
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Unglued Node"), cmds));
         getLayerManager().getEditDataSet().setSelected(n);
-        Main.map.mapView.repaint();
+        mv.repaint();
     }
 
     /**
@@ -506,7 +508,7 @@ public class UnGlueAction extends JosmAction {
         try {
             dialog = PropertiesMembershipDialog.showIfNecessary(Collections.singleton(selectedNode), false);
         } catch (UserCancelException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return;
         }
 
@@ -550,7 +552,7 @@ public class UnGlueAction extends JosmAction {
      * @param newNodes New created nodes by this set of command
      */
     private void execCommands(List<Command> cmds, List<Node> newNodes) {
-        Main.main.undoRedo.add(new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
+        MainApplication.undoRedo.add(new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
                 trn("Dupe into {0} node", "Dupe into {0} nodes", newNodes.size() + 1L, newNodes.size() + 1L), cmds));
         // select one of the new nodes
         getLayerManager().getEditDataSet().setSelected(newNodes.get(0));
@@ -605,7 +607,7 @@ public class UnGlueAction extends JosmAction {
             execCommands(cmds, addNodes);
             return true;
         } catch (UserCancelException ignore) {
-            Main.trace(ignore);
+            Logging.trace(ignore);
         }
         return false;
     }
@@ -621,7 +623,7 @@ public class UnGlueAction extends JosmAction {
         try {
             dialog = PropertiesMembershipDialog.showIfNecessary(selectedNodes, false);
         } catch (UserCancelException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return;
         }
 
@@ -638,7 +640,7 @@ public class UnGlueAction extends JosmAction {
         cmds.add(new ChangeCommand(selectedWay, tmpWay)); // only one changeCommand for a way, else garbage will happen
         notifyWayPartOfRelation(Collections.singleton(selectedWay));
 
-        Main.main.undoRedo.add(new SequenceCommand(
+        MainApplication.undoRedo.add(new SequenceCommand(
                 trn("Dupe {0} node into {1} nodes", "Dupe {0} nodes into {1} nodes",
                         selectedNodes.size(), selectedNodes.size(), selectedNodes.size()+allNewNodes.size()), cmds));
         getLayerManager().getEditDataSet().setSelected(allNewNodes);
diff --git a/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java b/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java
index 8b1e8a9..25ccebc 100644
--- a/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java
+++ b/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java
@@ -14,11 +14,11 @@ import java.util.List;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.RemoveNodesCommand;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -88,7 +88,7 @@ public class UnJoinNodeWayAction extends JosmAction {
         Way selectedWay = applicableWays.get(0);
 
         // I'm sure there's a better way to handle this
-        Main.main.undoRedo.add(new RemoveNodesCommand(selectedWay, selectedNodes));
+        MainApplication.undoRedo.add(new RemoveNodesCommand(selectedWay, selectedNodes));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/UndoAction.java b/src/org/openstreetmap/josm/actions/UndoAction.java
index cf5ca3c..5037e44 100644
--- a/src/org/openstreetmap/josm/actions/UndoAction.java
+++ b/src/org/openstreetmap/josm/actions/UndoAction.java
@@ -8,6 +8,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -30,26 +32,27 @@ public class UndoAction extends JosmAction implements OsmDataLayer.CommandQueueL
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.map == null)
+        MapFrame map = MainApplication.getMap();
+        if (map == null)
             return;
-        Main.map.repaint();
-        Main.main.undoRedo.undo();
+        map.repaint();
+        MainApplication.undoRedo.undo();
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.main != null && !Main.main.undoRedo.commands.isEmpty());
+        setEnabled(Main.main != null && !MainApplication.undoRedo.commands.isEmpty());
     }
 
     @Override
     public void commandChanged(int queueSize, int redoSize) {
-        if (Main.main.undoRedo.commands.isEmpty()) {
+        if (MainApplication.undoRedo.commands.isEmpty()) {
             putValue(NAME, tr("Undo"));
             setTooltip(tr("Undo the last action."));
         } else {
             putValue(NAME, tr("Undo ..."));
             setTooltip(tr("Undo {0}",
-                    Main.main.undoRedo.commands.getLast().getDescriptionText()));
+                    MainApplication.undoRedo.commands.getLast().getDescriptionText()));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/UnselectAllAction.java b/src/org/openstreetmap/josm/actions/UnselectAllAction.java
index ca8cef4..9634df7 100644
--- a/src/org/openstreetmap/josm/actions/UnselectAllAction.java
+++ b/src/org/openstreetmap/josm/actions/UnselectAllAction.java
@@ -9,6 +9,9 @@ import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * User action to clear the current selection.
+ */
 public class UnselectAllAction extends JosmAction {
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/UpdateDataAction.java b/src/org/openstreetmap/josm/actions/UpdateDataAction.java
index a4113c4..d0cbb2d 100644
--- a/src/org/openstreetmap/josm/actions/UpdateDataAction.java
+++ b/src/org/openstreetmap/josm/actions/UpdateDataAction.java
@@ -15,10 +15,16 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTaskList;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * This action synchronizes the dataset with the current state on the server.
+ *
+ * It does so by re-downloading all areas and thereby merging all compatible
+ * changes from the current server version.
+ */
 public class UpdateDataAction extends JosmAction {
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
index 7ddd1bc..766e63e 100644
--- a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.MultiFetchServerObjectReader;
@@ -41,10 +42,10 @@ public class UpdateSelectionAction extends JosmAction {
      */
     public static void handlePrimitiveGoneException(long id, OsmPrimitiveType type) {
         MultiFetchServerObjectReader reader = MultiFetchServerObjectReader.create();
-        reader.append(Main.getLayerManager().getEditDataSet(), id, type);
+        reader.append(MainApplication.getLayerManager().getEditDataSet(), id, type);
         try {
             DataSet ds = reader.parseOsm(NullProgressMonitor.INSTANCE);
-            Main.getLayerManager().getEditLayer().mergeFrom(ds);
+            MainApplication.getLayerManager().getEditLayer().mergeFrom(ds);
         } catch (OsmTransferException e) {
             ExceptionDialogUtil.explainException(e);
         }
@@ -58,7 +59,7 @@ public class UpdateSelectionAction extends JosmAction {
      *
      */
     public static void updatePrimitives(final Collection<OsmPrimitive> selection) {
-        Main.worker.submit(new UpdatePrimitivesTask(Main.getLayerManager().getEditLayer(), selection));
+        MainApplication.worker.submit(new UpdatePrimitivesTask(MainApplication.getLayerManager().getEditLayer(), selection));
     }
 
     /**
@@ -73,7 +74,7 @@ public class UpdateSelectionAction extends JosmAction {
     public static void updatePrimitive(PrimitiveId id) {
         ensureParameterNotNull(id, "id");
         updatePrimitives(Collections.<OsmPrimitive>singleton(Optional.ofNullable(Optional.ofNullable(
-                Main.getLayerManager().getEditLayer()).orElseThrow(
+                MainApplication.getLayerManager().getEditLayer()).orElseThrow(
                         () -> new IllegalStateException(tr("No current dataset found")))
                 .data.getPrimitiveById(id)).orElseThrow(
                         () -> new IllegalStateException(tr("Did not find an object with id {0} in the current dataset", id)))));
diff --git a/src/org/openstreetmap/josm/actions/UploadAction.java b/src/org/openstreetmap/josm/actions/UploadAction.java
index c99099a..a1c35b6 100644
--- a/src/org/openstreetmap/josm/actions/UploadAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadAction.java
@@ -21,6 +21,7 @@ import org.openstreetmap.josm.actions.upload.ValidateUploadHook;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.UploadDialog;
 import org.openstreetmap.josm.gui.io.UploadPrimitivesTask;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
@@ -244,7 +245,7 @@ public class UploadAction extends JosmAction {
                 return;
         }
 
-        Main.worker.execute(
+        MainApplication.worker.execute(
                 new UploadPrimitivesTask(
                         UploadDialog.getUploadDialog().getUploadStrategySpecification(),
                         layer,
@@ -258,7 +259,7 @@ public class UploadAction extends JosmAction {
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled())
             return;
-        if (Main.map == null) {
+        if (MainApplication.getMap() == null) {
             JOptionPane.showMessageDialog(
                     Main.parent,
                     tr("Nothing to upload. Get some data first."),
@@ -267,7 +268,7 @@ public class UploadAction extends JosmAction {
             );
             return;
         }
-        APIDataSet apiData = new APIDataSet(Main.getLayerManager().getEditDataSet());
-        uploadData(Main.getLayerManager().getEditLayer(), apiData);
+        APIDataSet apiData = new APIDataSet(getLayerManager().getEditDataSet());
+        uploadData(getLayerManager().getEditLayer(), apiData);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/UploadNotesAction.java b/src/org/openstreetmap/josm/actions/UploadNotesAction.java
index f2f6736..78174dd 100644
--- a/src/org/openstreetmap/josm/actions/UploadNotesAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadNotesAction.java
@@ -6,12 +6,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.upload.UploadNotesTask;
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Action to initiate uploading changed notes to the OSM server.
@@ -30,19 +30,19 @@ public class UploadNotesAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        List<NoteLayer> noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+        List<NoteLayer> noteLayers = getLayerManager().getLayersOfType(NoteLayer.class);
         NoteLayer layer;
         if (!noteLayers.isEmpty()) {
             layer = noteLayers.get(0);
         } else {
-            Main.error("No note layer found");
+            Logging.error("No note layer found");
             return;
         }
-        Main.debug("uploading note changes");
+        Logging.debug("uploading note changes");
         NoteData noteData = layer.getNoteData();
 
         if (noteData == null || !noteData.isModified()) {
-            Main.debug("No changed notes to upload");
+            Logging.debug("No changed notes to upload");
             return;
         }
         new UploadNotesTask().uploadNotes(noteData, new PleaseWaitProgressMonitor(tr("Uploading notes to server")));
diff --git a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
index acf3d85..a52f3aa 100644
--- a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
@@ -19,12 +19,13 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.Way;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.io.UploadSelectionDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -159,7 +160,7 @@ public class UploadSelectionAction extends JosmAction {
             // runs the check for deleted parents and then invokes
             // processPostParentChecker()
             //
-            Main.worker.submit(new DeletedParentsChecker(layer, toUpload));
+            MainApplication.worker.submit(new DeletedParentsChecker(layer, toUpload));
         } else {
             processPostParentChecker(layer, toUpload);
         }
diff --git a/src/org/openstreetmap/josm/actions/ValidateAction.java b/src/org/openstreetmap/josm/actions/ValidateAction.java
index f926943..6b9441b 100644
--- a/src/org/openstreetmap/josm/actions/ValidateAction.java
+++ b/src/org/openstreetmap/josm/actions/ValidateAction.java
@@ -11,15 +11,16 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.AggregatePrimitivesVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.ValidatorLayer;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -61,7 +62,8 @@ public class ValidateAction extends JosmAction {
      * @param getSelectedItems If selected or last selected items must be validated
      */
     public void doValidate(boolean getSelectedItems) {
-        if (Main.map == null || !Main.map.isVisible())
+        MapFrame map = MainApplication.getMap();
+        if (map == null || !map.isVisible())
             return;
 
         OsmValidator.initializeTests();
@@ -73,9 +75,9 @@ public class ValidateAction extends JosmAction {
 
         Collection<OsmPrimitive> selection;
         if (getSelectedItems) {
-            selection = Main.getLayerManager().getEditDataSet().getAllSelected();
+            selection = getLayerManager().getEditDataSet().getAllSelected();
             if (selection.isEmpty()) {
-                selection = Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives();
+                selection = getLayerManager().getEditDataSet().allNonDeletedPrimitives();
                 lastSelection = null;
             } else {
                 AggregatePrimitivesVisitor v = new AggregatePrimitivesVisitor();
@@ -84,10 +86,10 @@ public class ValidateAction extends JosmAction {
             }
         } else {
             selection = Optional.ofNullable(lastSelection).orElseGet(
-                    () -> Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives());
+                    () -> getLayerManager().getEditDataSet().allNonDeletedPrimitives());
         }
 
-        Main.worker.submit(new ValidationTask(tests, selection, lastSelection));
+        MainApplication.worker.submit(new ValidationTask(tests, selection, lastSelection));
     }
 
     @Override
@@ -139,10 +141,11 @@ public class ValidateAction extends JosmAction {
             // update GUI on Swing EDT
             //
             GuiHelper.runInEDT(() -> {
-                Main.map.validatorDialog.tree.setErrors(errors);
-                Main.map.validatorDialog.unfurlDialog();
+                MapFrame map = MainApplication.getMap();
+                map.validatorDialog.tree.setErrors(errors);
+                map.validatorDialog.unfurlDialog();
                 //FIXME: nicer way to find / invalidate the corresponding error layer
-                Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
             });
         }
 
@@ -166,7 +169,7 @@ public class ValidateAction extends JosmAction {
                 errors.addAll(test.getErrors());
             }
             tests = null;
-            if (ValidatorPreference.PREF_USE_IGNORE.get()) {
+            if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
                 getProgressMonitor().subTask(tr("Updating ignored errors ..."));
                 for (TestError error : errors) {
                     if (canceled) return;
diff --git a/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java b/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
index 8ad4082..d2ab5d4 100644
--- a/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
@@ -7,7 +7,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.DrawAction;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -42,6 +41,6 @@ public class ViewportFollowToggleAction extends ToggleAction {
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(getLayerManager().getEditDataSet() != null);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/WireframeToggleAction.java b/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
index e4dfcbc..f7c6f96 100644
--- a/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
@@ -6,10 +6,10 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
 import org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -30,14 +30,14 @@ public class WireframeToggleAction extends ToggleAction {
               false /* register toolbar */
         );
         putValue("toolbar", "wireframe");
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
         setSelected(MapRendererFactory.getInstance().isWireframeMapRendererActive());
         notifySelectedState();
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.getLayerManager().getEditLayer() != null);
+        setEnabled(getLayerManager().getEditLayer() != null);
     }
 
     @Override
@@ -50,6 +50,6 @@ public class WireframeToggleAction extends ToggleAction {
         }
 
         notifySelectedState();
-        Main.getLayerManager().getLayersOfType(OsmDataLayer.class).forEach(OsmDataLayer::invalidate);
+        getLayerManager().getLayersOfType(OsmDataLayer.class).forEach(OsmDataLayer::invalidate);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/ZoomInAction.java b/src/org/openstreetmap/josm/actions/ZoomInAction.java
index d690678..d315e20 100644
--- a/src/org/openstreetmap/josm/actions/ZoomInAction.java
+++ b/src/org/openstreetmap/josm/actions/ZoomInAction.java
@@ -7,7 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -30,28 +30,28 @@ public final class ZoomInAction extends JosmAction {
         );
         putValue("help", ht("/Action/ZoomIn"));
         // On standard QWERTY, AZERTY and other common layouts the '+' key is obtained with Shift+EQUALS
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
                 Shortcut.registerShortcut("view:zoominbis", tr("View: {0}", tr("Zoom In")),
                     KeyEvent.VK_EQUALS, Shortcut.SHIFT));
         // But on some systems (Belgian keyboard under Ubuntu) it seems not to work, so use also EQUALS
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
                 Shortcut.registerShortcut("view:zoominter", tr("View: {0}", tr("Zoom In")),
                     KeyEvent.VK_EQUALS, Shortcut.DIRECT));
         // make numpad + behave like +
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
             Shortcut.registerShortcut("view:zoominkeypad", tr("View: {0}", tr("Zoom In (Keypad)")),
                 KeyEvent.VK_ADD, Shortcut.DIRECT));
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!Main.isDisplayingMapView()) return;
-        Main.map.mapView.zoomIn();
+        if (!MainApplication.isDisplayingMapView()) return;
+        MainApplication.getMap().mapView.zoomIn();
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 
 }
diff --git a/src/org/openstreetmap/josm/actions/ZoomOutAction.java b/src/org/openstreetmap/josm/actions/ZoomOutAction.java
index 1eb440d..cdccb23 100644
--- a/src/org/openstreetmap/josm/actions/ZoomOutAction.java
+++ b/src/org/openstreetmap/josm/actions/ZoomOutAction.java
@@ -7,7 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -24,19 +24,19 @@ public final class ZoomOutAction extends JosmAction {
                 Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom Out")), KeyEvent.VK_MINUS, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/ZoomOut"));
         // make numpad - behave like -
-        Main.registerActionShortcut(this,
+        MainApplication.registerActionShortcut(this,
             Shortcut.registerShortcut("view:zoomoutkeypad", tr("View: {0}", tr("Zoom Out (Keypad)")),
                 KeyEvent.VK_SUBTRACT, Shortcut.DIRECT));
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!Main.isDisplayingMapView()) return;
-        Main.map.mapView.zoomOut();
+        if (!MainApplication.isDisplayingMapView()) return;
+        MainApplication.getMap().mapView.zoomOut();
     }
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(!Main.getLayerManager().getLayers().isEmpty());
+        setEnabled(!getLayerManager().getLayers().isEmpty());
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/ZoomToAction.java b/src/org/openstreetmap/josm/actions/ZoomToAction.java
index 0291d9d..4c55a48 100644
--- a/src/org/openstreetmap/josm/actions/ZoomToAction.java
+++ b/src/org/openstreetmap/josm/actions/ZoomToAction.java
@@ -11,6 +11,7 @@ import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.pair.nodes.NodeListTable;
 import org.openstreetmap.josm.gui.conflict.pair.relation.RelationMemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
@@ -25,7 +26,7 @@ import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
- * An action that zooms to the selected OSM primitive in a table of primitives
+ * An action that zooms to the selected OSM primitive in a table of primitives.
  */
 public class ZoomToAction extends AbstractAction implements LayerChangeListener, ActiveLayerChangeListener, ListSelectionListener {
 
@@ -103,7 +104,7 @@ public class ZoomToAction extends AbstractAction implements LayerChangeListener,
     }
 
     protected final void updateEnabledState() {
-        if (Main.main == null || Main.getLayerManager().getEditLayer() != this.table.getLayer()) {
+        if (Main.main == null || MainApplication.getLayerManager().getEditLayer() != this.table.getLayer()) {
             setEnabled(false);
             putValue(SHORT_DESCRIPTION, descriptionInactiveLayer);
             return;
diff --git a/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java b/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java
new file mode 100644
index 0000000..a4fd87d
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/audio/AbstractAudioAction.java
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.audio;
+
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.markerlayer.AudioMarker;
+import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
+import org.openstreetmap.josm.tools.Shortcut;
+
+/**
+ * Base class for every action related to audio content.
+ * @since 12565
+ */
+public abstract class AbstractAudioAction extends JosmAction {
+
+    /**
+     * Constructs a new {@code BaseAudioAction}.
+     * @param name the action's text as displayed on the menu (if it is added to a menu)
+     * @param iconName the filename of the icon to use
+     * @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 registerInToolbar register this action for the toolbar preferences?
+     */
+    public AbstractAudioAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean registerInToolbar) {
+        super(name, iconName, tooltip, shortcut, registerInToolbar);
+        updateEnabledState();
+    }
+
+    /**
+     * Checks if there is at least one {@link AudioMarker} is present in the current layout.
+     * @return {@code true} if at least one {@link AudioMarker} is present in the current
+     * layout, {@code false} otherwise.
+     */
+    protected static boolean isAudioMarkerPresent() {
+        return MainApplication.getLayerManager().getLayersOfType(MarkerLayer.class).stream()
+                .flatMap(ml -> ml.data.stream())
+                .anyMatch(m -> m instanceof AudioMarker);
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(isAudioMarkerPresent());
+    }
+}
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java b/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
index 83ed8ae..f4c892b 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
@@ -10,7 +10,6 @@ import java.awt.event.KeyEvent;
 import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.io.audio.AudioUtil;
@@ -20,7 +19,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * Jump the audio backward 10 seconds and start playing if paused.
  * @since 547
  */
-public class AudioBackAction extends JosmAction {
+public class AudioBackAction extends AbstractAudioAction {
 
     /**
      * Constructs a new {@code AudioBackAction}.
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java b/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
index 282d015..9fc802d 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
@@ -5,7 +5,6 @@ import java.awt.event.ActionEvent;
 import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.io.audio.AudioUtil;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -14,7 +13,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * Abstract superclass of {@link AudioFasterAction} and {@link AudioSlowerAction}.
  * @since 563
  */
-public abstract class AudioFastSlowAction extends JosmAction {
+public abstract class AudioFastSlowAction extends AbstractAudioAction {
 
     private double multiplier;
 
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java b/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
index 64ea8b4..6a0bd1a 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
@@ -9,7 +9,6 @@ import java.awt.event.KeyEvent;
 import java.io.IOException;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.io.audio.AudioUtil;
@@ -19,7 +18,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * Jump the audio forward 10 seconds.
  * @since 547
  */
-public class AudioFwdAction extends JosmAction {
+public class AudioFwdAction extends AbstractAudioAction {
 
     /**
      * Constructs a new {@code AudioFwdAction}.
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java b/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
index 7a309fd..5fbc411 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
@@ -7,7 +7,6 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -16,7 +15,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * Play from the first such Marker if none has been played, or repeat the last marker if at the end.
  * @since 547
  */
-public class AudioNextAction extends JosmAction {
+public class AudioNextAction extends AbstractAudioAction {
 
     /**
      * Constructs a new {@code AudioNextAction}.
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java b/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
index 772d85d..b9ed619 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
@@ -9,7 +9,6 @@ import java.awt.event.KeyEvent;
 import java.io.IOException;
 import java.net.URL;
 
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.AudioMarker;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
@@ -23,7 +22,7 @@ import org.openstreetmap.josm.tools.Utils;
  * If fast forwarding or slow forwarding, resume normal speed.
  * @since 547
  */
-public class AudioPlayPauseAction extends JosmAction {
+public class AudioPlayPauseAction extends AbstractAudioAction {
 
     /**
      * Constructs a new {@code AudioPlayPauseAction}.
diff --git a/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java b/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
index 95099b7..9ac8040 100644
--- a/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
+++ b/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
@@ -7,7 +7,6 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -16,7 +15,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * Play from the first such Marker if none has been played or already at the first marker.
  * @since 547
  */
-public class AudioPrevAction extends JosmAction {
+public class AudioPrevAction extends AbstractAudioAction {
 
     /**
      * Constructs a new {@code AudioPrevAction}.
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
index aba0b2b..c70fca4 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
@@ -10,14 +10,15 @@ import java.util.concurrent.Future;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerChangesetReader;
 import org.openstreetmap.josm.tools.ExceptionUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -67,7 +68,7 @@ public abstract class AbstractChangesetDownloadTask extends AbstractDownloadTask
                 try {
                     SwingUtilities.invokeAndWait(r);
                 } catch (InterruptedException e) {
-                    Main.warn("InterruptedException in "+getClass().getSimpleName()+" while updating changeset cache");
+                    Logging.warn("InterruptedException in "+getClass().getSimpleName()+" while updating changeset cache");
                     Thread.currentThread().interrupt();
                 } catch (InvocationTargetException e) {
                     Throwable t = e.getTargetException();
@@ -117,18 +118,18 @@ public abstract class AbstractChangesetDownloadTask extends AbstractDownloadTask
      *           doSomethingAfterTheTaskCompleted();
      *       }
      *    }
-     *    Main.worker.submit(runAfterTask);
+     *    MainApplication.worker.submit(runAfterTask);
      * </pre>
      *
      * @return the future representing the asynchronous task
      */
     public final Future<?> download() {
-        return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
+        return downloadTaskRunnable != null ? MainApplication.worker.submit(downloadTaskRunnable) : null;
     }
 
     @Override
     public final Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
-        return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
+        return downloadTaskRunnable != null ? MainApplication.worker.submit(downloadTaskRunnable) : null;
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java
index a0b40cc..635498e 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetContentDownloadTask.java
@@ -18,6 +18,7 @@ import org.openstreetmap.josm.data.osm.ChangesetDataSet;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -75,7 +76,7 @@ public class ChangesetContentDownloadTask extends AbstractChangesetDownloadTask
             } catch (OsmTransferCanceledException e) {
                 // the download was canceled by the user. This exception is caught if the user canceled the authentication dialog.
                 setCanceled(true);
-                Main.trace(e);
+                Logging.trace(e);
                 return;
             } catch (OsmTransferException e) {
                 if (isCanceled())
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java
index ea1266c..b49bd9e 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetQueryTask.java
@@ -18,6 +18,7 @@ import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ExceptionUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -70,7 +71,7 @@ public class ChangesetQueryTask extends AbstractChangesetDownloadTask {
             } catch (OsmTransferCanceledException e) {
                 // thrown if user cancel the authentication dialog
                 setCanceled(true);
-                Main.trace(e);
+                Logging.trace(e);
             } catch (OsmTransferException e) {
                 if (isCanceled())
                     return;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
index 943554c..91ec947 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
@@ -5,6 +5,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.Arrays;
 import java.util.Optional;
 import java.util.concurrent.Future;
 import java.util.regex.Matcher;
@@ -17,7 +18,11 @@ 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.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter.GpxImporterData;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -25,9 +30,8 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.gui.progress.ProgressTaskIds;
 import org.openstreetmap.josm.io.BoundingBoxDownloader;
-import org.openstreetmap.josm.io.GpxImporter;
-import org.openstreetmap.josm.io.GpxImporter.GpxImporterData;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
+import org.openstreetmap.josm.io.OsmServerLocationReader.GpxUrlPattern;
 import org.openstreetmap.josm.io.OsmServerReader;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -41,24 +45,11 @@ 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}+)";
-    private static final String PATTERN_EDIT_TRACE_ID = "https?://.*(osm|openstreetmap).org/edit/?\\?gpx=(\\p{Digit}+)(#.*)?";
-
-    private static final String PATTERN_TRACKPOINTS_BBOX = "https?://.*/api/0.6/trackpoints\\?bbox=.*,.*,.*,.*";
-
-    private static final String PATTERN_EXTERNAL_GPX_SCRIPT = "https?://.*exportgpx.*";
-    private static final String PATTERN_EXTERNAL_GPX_FILE = "https?://.*/(.*\\.gpx)";
-
     protected String newLayerName;
 
     @Override
     public String[] getPatterns() {
-        return new String[] {
-                PATTERN_EXTERNAL_GPX_FILE, PATTERN_EXTERNAL_GPX_SCRIPT,
-                PATTERN_TRACE_ID, PATTERN_USER_TRACE_ID, PATTERN_EDIT_TRACE_ID,
-                PATTERN_TRACKPOINTS_BBOX,
-        };
+        return Arrays.stream(GpxUrlPattern.values()).map(GpxUrlPattern::pattern).toArray(String[]::new);
     }
 
     @Override
@@ -72,33 +63,32 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
                 new BoundingBoxDownloader(downloadArea), progressMonitor);
         // We need submit instead of execute so we can wait for it to finish and get the error
         // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     @Override
     public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
         CheckParameterUtil.ensureParameterNotNull(url, "url");
-        final Optional<String> mappedUrl = Stream.of(PATTERN_USER_TRACE_ID, PATTERN_EDIT_TRACE_ID)
-                .map(p -> Pattern.compile(p).matcher(url))
+        final Optional<String> mappedUrl = Stream.of(GpxUrlPattern.USER_TRACE_ID, GpxUrlPattern.EDIT_TRACE_ID)
+                .map(p -> Pattern.compile(p.pattern()).matcher(url))
                 .filter(Matcher::matches)
                 .map(m -> "https://www.openstreetmap.org/trace/" + m.group(2) + "/data")
                 .findFirst();
         if (mappedUrl.isPresent()) {
             return loadUrl(newLayer, mappedUrl.get(), progressMonitor);
         }
-        if (url.matches(PATTERN_TRACE_ID)
-         || url.matches(PATTERN_EXTERNAL_GPX_SCRIPT)
-         || url.matches(PATTERN_EXTERNAL_GPX_FILE)) {
+        if (Stream.of(GpxUrlPattern.TRACE_ID, GpxUrlPattern.EXTERNAL_GPX_SCRIPT, GpxUrlPattern.EXTERNAL_GPX_FILE)
+                .anyMatch(p -> url.matches(p.pattern()))) {
             downloadTask = new DownloadTask(newLayer,
                     new OsmServerLocationReader(url), progressMonitor);
             // Extract .gpx filename from URL to set the new layer name
-            Matcher matcher = Pattern.compile(PATTERN_EXTERNAL_GPX_FILE).matcher(url);
+            Matcher matcher = Pattern.compile(GpxUrlPattern.EXTERNAL_GPX_FILE.pattern()).matcher(url);
             newLayerName = matcher.matches() ? matcher.group(1) : null;
             // We need submit instead of execute so we can wait for it to finish and get the error
             // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
-            return Main.worker.submit(downloadTask);
+            return MainApplication.worker.submit(downloadTask);
 
-        } else if (url.matches(PATTERN_TRACKPOINTS_BBOX)) {
+        } else if (url.matches(GpxUrlPattern.TRACKPOINTS_BBOX.pattern())) {
             String[] table = url.split("\\?|=|&");
             for (int i = 0; i < table.length; i++) {
                 if ("bbox".equals(table[i]) && i < table.length-1)
@@ -164,13 +154,14 @@ 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, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             } else {
                 mergeLayer.mergeFrom(layer);
                 mergeLayer.invalidate();
-                if (Main.map != null && zoomAfterDownload && layer instanceof GpxLayer) {
-                    Main.map.mapView.scheduleZoomTo(new ViewportData(layer.getViewProjectionBounds()));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload && layer instanceof GpxLayer) {
+                    map.mapView.scheduleZoomTo(new ViewportData(layer.getViewProjectionBounds()));
                 }
                 return mergeLayer;
             }
@@ -178,10 +169,10 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
 
         private GpxLayer findGpxMergeLayer() {
             boolean merge = Main.pref.getBoolean("download.gps.mergeWithLocal", false);
-            Layer active = Main.getLayerManager().getActiveLayer();
+            Layer active = MainApplication.getLayerManager().getActiveLayer();
             if (active instanceof GpxLayer && (merge || ((GpxLayer) active).data.fromServer))
                 return (GpxLayer) active;
-            for (GpxLayer l : Main.getLayerManager().getLayersOfType(GpxLayer.class)) {
+            for (GpxLayer l : MainApplication.getLayerManager().getLayersOfType(GpxLayer.class)) {
                 if (merge || l.data.fromServer)
                     return l;
             }
@@ -189,7 +180,7 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
         }
 
         private MarkerLayer findMarkerMergeLayer(GpxLayer fromLayer) {
-            for (MarkerLayer l : Main.getLayerManager().getLayersOfType(MarkerLayer.class)) {
+            for (MarkerLayer l : MainApplication.getLayerManager().getLayersOfType(MarkerLayer.class)) {
                 if (fromLayer != null && l.fromLayer == fromLayer)
                     return l;
             }
@@ -220,15 +211,4 @@ public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
     public boolean isSafeForRemotecontrolRequests() {
         return true;
     }
-
-    /**
-     * Determines if the given URL denotes an OSM gpx-related API call.
-     * @param url The url to check
-     * @return true if the url matches "Trace ID" API call or "Trackpoints bbox" API call, false otherwise
-     * @see GpxData#fromServer
-     * @since 5745
-     */
-    public static final boolean isFromServer(String url) {
-        return url != null && (url.matches(PATTERN_TRACE_ID) || url.matches(PATTERN_TRACKPOINTS_BBOX));
-    }
 }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
index ad12529..6caec66 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.Future;
 
@@ -18,6 +19,8 @@ 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;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -25,8 +28,10 @@ import org.openstreetmap.josm.io.BoundingBoxDownloader;
 import org.openstreetmap.josm.io.BoundingBoxDownloader.MoreNotesException;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
+import org.openstreetmap.josm.io.OsmServerLocationReader.NoteUrlPattern;
 import org.openstreetmap.josm.io.OsmServerReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -37,8 +42,6 @@ import org.xml.sax.SAXException;
  */
 public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
 
-    private static final String PATTERN_API_URL = "https?://.*/api/0.6/notes.*";
-    private static final String PATTERN_DUMP_FILE = "https?://.*/(.*\\.osn(.bz2)?)";
     /** Property defining the number of notes to be downloaded */
     public static final IntegerProperty DOWNLOAD_LIMIT = new IntegerProperty("osm.notes.downloadLimit", 1000);
     /** Property defining number of days a bug needs to be closed to no longer be downloaded */
@@ -56,13 +59,13 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
     public Future<?> download(long id, ProgressMonitor progressMonitor) {
         final String url = OsmApi.getOsmApi().getBaseUrl() + "notes/" + id;
         downloadTask = new DownloadRawUrlTask(new OsmServerLocationReader(url), progressMonitor);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     @Override
     public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
         downloadTask = new DownloadBoundingBoxTask(new BoundingBoxDownloader(downloadArea), progressMonitor);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     @Override
@@ -72,7 +75,7 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
         } else {
             downloadTask = new DownloadRawUrlTask(new OsmServerLocationReader(url), progressMonitor);
         }
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     @Override
@@ -94,7 +97,7 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
 
     @Override
     public String[] getPatterns() {
-        return new String[] {PATTERN_API_URL, PATTERN_DUMP_FILE};
+        return Arrays.stream(NoteUrlPattern.values()).map(NoteUrlPattern::pattern).toArray(String[]::new);
     }
 
     @Override
@@ -122,19 +125,20 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
             if (isCanceled() || isFailed() || notesData == null || notesData.isEmpty()) {
                 return;
             }
-            if (Main.isDebugEnabled()) {
-                Main.debug("Notes downloaded: " + notesData.size());
+            if (Logging.isDebugEnabled()) {
+                Logging.debug("Notes downloaded: {0}", notesData.size());
             }
 
             noteLayer = new NoteLayer(notesData, tr("Notes"));
-            List<NoteLayer> noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+            List<NoteLayer> noteLayers = MainApplication.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()));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload) {
+                    map.mapView.scheduleZoomTo(new ViewportData(noteLayer.getViewProjectionBounds()));
                 }
             } else {
-                Main.getLayerManager().addLayer(noteLayer, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(noteLayer, zoomAfterDownload);
             }
         }
 
@@ -165,7 +169,7 @@ public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
             try {
                 notesData = reader.parseNotes(DOWNLOAD_LIMIT.get(), DAYS_CLOSED.get(), subMonitor);
             } catch (MoreNotesException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 notesData = e.notes;
                 JOptionPane.showMessageDialog(Main.parent, "<html>"
                                 + trn("{0} note has been downloaded.", "{0} notes have been downloaded.", e.limit, e.limit)
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java
index 8a3df2b..c0c0807 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java
@@ -1,12 +1,12 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions.downloadtasks;
 
-import java.util.concurrent.Future;
-
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
+import java.util.concurrent.Future;
+
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
 import org.openstreetmap.josm.io.OsmTransferException;
@@ -49,6 +49,6 @@ public class DownloadOsmChangeCompressedTask extends DownloadOsmChangeTask {
         currentBounds = null;
         // Extract .osc.gz/bz/bz2 filename from URL to set the new layer name
         extractOsmFilename("https?://.*/(.*\\.osc.(gz|bz2?))", url);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
index 28fb3a0..03c6c1d 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
@@ -13,7 +13,6 @@ import java.util.concurrent.RejectedExecutionException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -31,12 +30,14 @@ import org.openstreetmap.josm.data.osm.history.HistoryNode;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.history.HistoryLoadTask;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
 import org.openstreetmap.josm.io.OsmServerReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Task allowing to download OsmChange data (http://wiki.openstreetmap.org/wiki/OsmChange).
@@ -74,7 +75,7 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
         downloadTask = new DownloadTask(newLayer, new OsmServerLocationReader(url), progressMonitor);
         // Extract .osc filename from URL to set the new layer name
         extractOsmFilename("https?://.*/(.*\\.osc)", url);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     /**
@@ -120,7 +121,7 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
                 }
                 if (isCanceled()) return;
                 // Let's load all required history
-                Main.worker.submit(new HistoryLoaderAndListener(toLoad));
+                MainApplication.worker.submit(new HistoryLoaderAndListener(toLoad));
             } catch (RejectedExecutionException e) {
                 rememberException(e);
                 setFailed(true);
@@ -184,7 +185,7 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
                             // Forget this primitive
                             it.remove();
                         } catch (AssertionError e) {
-                            Main.error(e, "Cannot load "+p+':');
+                            Logging.log(Logging.LEVEL_ERROR, "Cannot load "+p+':', e);
                         }
                     }
                 }
@@ -193,11 +194,11 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
             if (toLoadNext.isEmpty()) {
                 // No more primitive to update. Processing is finished
                 // Be sure all updated primitives are correctly drawn
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             } else {
                 // Some primitives still need to be loaded
                 // Let's load all required history
-                Main.worker.submit(new HistoryLoaderAndListener(toLoadNext));
+                MainApplication.worker.submit(new HistoryLoaderAndListener(toLoadNext));
             }
         }
 
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java
index a528e2a..68c4000 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java
@@ -5,9 +5,9 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.concurrent.Future;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
 import org.openstreetmap.josm.io.OsmTransferException;
@@ -60,6 +60,6 @@ public class DownloadOsmCompressedTask extends DownloadOsmTask {
         currentBounds = null;
         // Extract .osm.gz/bz/bz2/zip filename from URL to set the new layer name
         extractOsmFilename("https?://.*/(.*\\.osm.(gz|bz2?|zip))", url);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmIdTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmIdTask.java
index df9e729..fc64f1b 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmIdTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmIdTask.java
@@ -8,10 +8,10 @@ import java.util.concurrent.Future;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
@@ -39,7 +39,7 @@ public class DownloadOsmIdTask extends DownloadOsmTask {
             final PrimitiveId primitiveId = new SimplePrimitiveId(id, type);
             final DownloadPrimitivesWithReferrersTask downloadTask = new DownloadPrimitivesWithReferrersTask(
                     newLayer, Collections.singletonList(primitiveId), true, true, null, null);
-            return Main.worker.submit(downloadTask);
+            return MainApplication.worker.submit(downloadTask);
         } else {
             throw new IllegalStateException("Failed to parse id from " + url);
         }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
index 8c0f1b3..2c49cd3 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -15,7 +16,6 @@ import java.util.concurrent.Future;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.ProjectionBounds;
@@ -26,6 +26,8 @@ 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.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -33,9 +35,11 @@ import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.BoundingBoxDownloader;
 import org.openstreetmap.josm.io.OsmServerLocationReader;
+import org.openstreetmap.josm.io.OsmServerLocationReader.OsmUrlPattern;
 import org.openstreetmap.josm.io.OsmServerReader;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -45,13 +49,6 @@ import org.xml.sax.SAXException;
  */
 public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
 
-    // CHECKSTYLE.OFF: SingleSpaceSeparator
-    protected static final String PATTERN_OSM_API_URL           = "https?://.*/api/0.6/(map|nodes?|ways?|relations?|\\*).*";
-    protected static final String PATTERN_OVERPASS_API_URL      = "https?://.*/interpreter\\?data=.*";
-    protected static final String PATTERN_OVERPASS_API_XAPI_URL = "https?://.*/xapi(\\?.*\\[@meta\\]|_meta\\?).*";
-    protected static final String PATTERN_EXTERNAL_OSM_FILE     = "https?://.*/.*\\.osm";
-    // CHECKSTYLE.ON: SingleSpaceSeparator
-
     protected Bounds currentBounds;
     protected DownloadTask downloadTask;
 
@@ -63,8 +60,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
     @Override
     public String[] getPatterns() {
         if (this.getClass() == DownloadOsmTask.class) {
-            return new String[]{PATTERN_OSM_API_URL, PATTERN_OVERPASS_API_URL,
-                PATTERN_OVERPASS_API_XAPI_URL, PATTERN_EXTERNAL_OSM_FILE};
+            return Arrays.stream(OsmUrlPattern.values()).map(OsmUrlPattern::pattern).toArray(String[]::new);
         } else {
             return super.getPatterns();
         }
@@ -112,7 +108,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
      *           doSomethingAfterTheTaskCompleted();
      *       }
      *    }
-     *    Main.worker.submit(runAfterTask);
+     *    MainApplication.worker.submit(runAfterTask);
      * </pre>
      * @param reader the reader used to parse OSM data (see {@link OsmServerReader#parseOsm})
      * @param newLayer true, if the data is to be downloaded into a new layer. If false, the task
@@ -130,7 +126,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
         this.currentBounds = new Bounds(downloadArea);
         // We need submit instead of execute so we can wait for it to finish and get the error
         // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     /**
@@ -156,7 +152,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
         currentBounds = null;
         // Extract .osm filename from URL to set the new layer name
         extractOsmFilename("https?://.*/(.*\\.osm)", newUrl);
-        return Main.worker.submit(downloadTask);
+        return MainApplication.worker.submit(downloadTask);
     }
 
     protected final void extractOsmFilename(String pattern, String url) {
@@ -226,16 +222,16 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
         }
 
         protected OsmDataLayer getEditLayer() {
-            if (!Main.isDisplayingMapView()) return null;
-            return Main.getLayerManager().getEditLayer();
+            if (!MainApplication.isDisplayingMapView()) return null;
+            return MainApplication.getLayerManager().getEditLayer();
         }
 
         protected int getNumDataLayers() {
-            return Main.getLayerManager().getLayersOfType(OsmDataLayer.class).size();
+            return MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).size();
         }
 
         protected OsmDataLayer getFirstDataLayer() {
-            return Utils.find(Main.getLayerManager().getLayers(), OsmDataLayer.class);
+            return Utils.find(MainApplication.getLayerManager().getLayers(), OsmDataLayer.class);
         }
 
         protected OsmDataLayer createNewLayer(String layerName) {
@@ -266,7 +262,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
                 // or it is not clear which layer to merge to
                 //
                 final OsmDataLayer layer = createNewLayer(newLayerName);
-                Main.getLayerManager().addLayer(layer, zoomAfterDownload);
+                MainApplication.getLayerManager().addLayer(layer, zoomAfterDownload);
                 return layer;
             }
             return null;
@@ -278,11 +274,12 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
                 layer = Optional.ofNullable(getEditLayer()).orElseGet(this::getFirstDataLayer);
                 Collection<OsmPrimitive> primitivesToUpdate = searchPrimitivesToUpdate(bounds, layer.data);
                 layer.mergeFrom(dataSet);
-                if (Main.map != null && zoomAfterDownload && bounds != null) {
-                    Main.map.mapView.zoomTo(new ViewportData(computeBbox(bounds)));
+                MapFrame map = MainApplication.getMap();
+                if (map != null && zoomAfterDownload && bounds != null) {
+                    map.mapView.zoomTo(new ViewportData(computeBbox(bounds)));
                 }
                 if (!primitivesToUpdate.isEmpty()) {
-                    Main.worker.submit(new UpdatePrimitivesTask(layer, primitivesToUpdate));
+                    MainApplication.worker.submit(new UpdatePrimitivesTask(layer, primitivesToUpdate));
                 }
                 layer.onPostDownloadFromServer();
             }
@@ -359,7 +356,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
                 dataSet = parseDataSet();
             } catch (OsmTransferException e) {
                 if (isCanceled()) {
-                    Main.info(tr("Ignoring exception because download has been canceled. Exception was: {0}", e.toString()));
+                    Logging.info(tr("Ignoring exception because download has been canceled. Exception was: {0}", e.toString()));
                     return;
                 }
                 if (e instanceof OsmTransferCanceledException) {
@@ -404,7 +401,7 @@ public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
     public String getConfirmationMessage(URL url) {
         if (url != null) {
             String urlString = url.toExternalForm();
-            if (urlString.matches(PATTERN_OSM_API_URL)) {
+            if (urlString.matches(OsmUrlPattern.OSM_API_URL.pattern())) {
                 // TODO: proper i18n after stabilization
                 Collection<String> items = new ArrayList<>();
                 items.add(tr("OSM Server URL:") + ' ' + url.getHost());
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
index a05aa88..ef6a071 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
@@ -24,6 +24,8 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -130,8 +132,9 @@ public class DownloadReferrersTask extends PleaseWaitRunnable {
                 trn("Conflict during download", "Conflicts during download", visitor.getConflicts().size()),
                 JOptionPane.WARNING_MESSAGE
         );
-        Main.map.conflictDialog.unfurlDialog();
-        Main.map.repaint();
+        MapFrame map = MainApplication.getMap();
+        map.conflictDialog.unfurlDialog();
+        map.repaint();
     }
 
     protected void downloadParents(long id, OsmPrimitiveType type, ProgressMonitor progressMonitor) throws OsmTransferException {
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
index 34708e8..37c2556 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
@@ -11,8 +11,10 @@ import java.util.concurrent.Future;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Task allowing to download JOSM session (*.jos, *.joz file).
@@ -45,9 +47,9 @@ public class DownloadSessionTask extends AbstractDownloadTask<Object> {
             try {
                 URL u = new URL(url);
                 loader = new Loader(HttpClient.create(u).connect().getContent(), u.toURI(), url.endsWith(".joz"));
-                return Main.worker.submit(loader);
+                return MainApplication.worker.submit(loader);
             } catch (URISyntaxException | IOException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         return null;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
index e6ed30e..7067ddb 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
@@ -42,7 +42,7 @@ public interface DownloadTask {
      *           doSomethingAfterTheTaskCompleted();
      *       }
      *    }
-     *    Main.worker.submit(runAfterTask);
+     *    MainApplication.worker.submit(runAfterTask);
      * </pre>
      *
      * @param newLayer true, if the data is to be downloaded into a new layer. If false, the task
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
index d2efe4e..85dbba1 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -35,6 +36,7 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -70,8 +72,8 @@ public class DownloadTaskList {
         this.progressMonitor = progressMonitor;
         if (newLayer) {
             Layer l = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
-            Main.getLayerManager().addLayer(l);
-            Main.getLayerManager().setActiveLayer(l);
+            MainApplication.getLayerManager().addLayer(l);
+            MainApplication.getLayerManager().setActiveLayer(l);
         }
 
         int n = (osmData && gpxData ? 2 : 1)*rects.size();
@@ -91,7 +93,7 @@ public class DownloadTaskList {
                 dt.cancel();
             }
         });
-        return Main.worker.submit(new PostDownloadProcessor(osmData));
+        return MainApplication.worker.submit(new PostDownloadProcessor(osmData));
     }
 
     /**
@@ -243,7 +245,7 @@ public class DownloadTaskList {
                 try {
                     future.get();
                 } catch (InterruptedException | ExecutionException | CancellationException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     return;
                 }
             }
@@ -285,7 +287,7 @@ public class DownloadTaskList {
                         return;
                 }
             }
-            final OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            final OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null && osmData) {
                 final Set<OsmPrimitive> myPrimitives = getCompletePrimitives(editLayer.data);
                 for (DownloadTask task : tasks) {
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java b/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
index f6e1d92..88ae0f3 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
@@ -11,6 +11,7 @@ import java.util.Set;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
+import java.util.function.Consumer;
 
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
@@ -18,7 +19,9 @@ import javax.swing.SwingUtilities;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ExceptionUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -28,9 +31,10 @@ import org.openstreetmap.josm.tools.Utils;
 public class PostDownloadHandler implements Runnable {
     private final DownloadTask task;
     private final Future<?> future;
+    private Consumer<Collection<Object>> errorReporter;
 
     /**
-     * constructor
+     * Creates a new {@link PostDownloadHandler}
      * @param task the asynchronous download task
      * @param future the future on which the completion of the download task can be synchronized
      */
@@ -39,6 +43,18 @@ public class PostDownloadHandler implements Runnable {
         this.future = future;
     }
 
+    /**
+     * Creates a new {@link PostDownloadHandler} using a custom error reporter
+     * @param task the asynchronous download task
+     * @param future the future on which the completion of the download task can be synchronized
+     * @param errorReporter a callback to inform about the number errors happened during the download
+     *                      task
+     */
+    public PostDownloadHandler(DownloadTask task, Future<?> future, Consumer<Collection<Object>> errorReporter) {
+        this(task, future);
+        this.errorReporter = errorReporter;
+    }
+
     @Override
     public void run() {
         // wait for downloads task to finish (by waiting for the future to return a value)
@@ -46,15 +62,21 @@ public class PostDownloadHandler implements Runnable {
         try {
             future.get();
         } catch (InterruptedException | ExecutionException | CancellationException e) {
-            Main.error(e);
+            Logging.error(e);
             return;
         }
 
         // make sure errors are reported only once
         //
         Set<Object> errors = new LinkedHashSet<>(task.getErrorObjects());
-        if (errors.isEmpty())
+
+        if (this.errorReporter != null) {
+            GuiHelper.runInEDT(() -> errorReporter.accept(errors));
+        }
+
+        if (errors.isEmpty()) {
             return;
+        }
 
         // just one error object?
         //
diff --git a/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java b/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
index e6979a6..ce25972 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
@@ -12,11 +12,14 @@ 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.MainApplication;
+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;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Map mode to add a new note. Listens for a mouse click and then
@@ -46,15 +49,17 @@ public class AddNoteAction extends MapMode implements KeyPressReleaseListener {
     @Override
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.keyDetector.addKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.keyDetector.addKeyListener(this);
     }
 
     @Override
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.keyDetector.removeKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.keyDetector.removeKeyListener(this);
     }
 
     @Override
@@ -63,18 +68,19 @@ public class AddNoteAction extends MapMode implements KeyPressReleaseListener {
             // allow to pan without distraction
             return;
         }
-        Main.map.selectMapMode(Main.map.mapModeSelect);
+        MapFrame map = MainApplication.getMap();
+        map.selectMapMode(map.mapModeSelect);
 
         NoteInputDialog dialog = new NoteInputDialog(Main.parent, tr("Create new note"), tr("Create note"));
         dialog.showNoteDialog(tr("Enter a detailed comment to create a note"), ImageProvider.get("dialogs/notes", "note_new"));
 
         if (dialog.getValue() != 1) {
-            Main.debug("User aborted note creation");
+            Logging.debug("User aborted note creation");
             return;
         }
         String input = dialog.getInputText();
         if (input != null && !input.isEmpty()) {
-            LatLon latlon = Main.map.mapView.getLatLon(e.getPoint().x, e.getPoint().y);
+            LatLon latlon = map.mapView.getLatLon(e.getPoint().x, e.getPoint().y);
             noteData.createNote(latlon, input);
         } else {
             new Notification(tr("You must enter a comment to create a new note")).setIcon(JOptionPane.WARNING_MESSAGE).show();
@@ -84,7 +90,8 @@ public class AddNoteAction extends MapMode implements KeyPressReleaseListener {
     @Override
     public void doKeyPressed(KeyEvent e) {
         if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
-            Main.map.selectMapMode(Main.map.mapModeSelect);
+            MapFrame map = MainApplication.getMap();
+            map.selectMapMode(map.mapModeSelect);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
index 466a257..673f5b6 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
@@ -20,6 +20,9 @@ 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.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
@@ -109,18 +112,20 @@ public class DeleteAction extends MapMode implements ModifierExListener {
 
         drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
         // This is required to update the cursors when ctrl/shift/alt is pressed
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
     @Override
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.keyDetector.removeModifierExListener(this);
         removeHighlighting();
     }
 
@@ -135,7 +140,7 @@ public class DeleteAction extends MapMode implements ModifierExListener {
      * @param e Action event
      */
     public void doActionPerformed(ActionEvent e) {
-        MainLayerManager lm = Main.getLayerManager();
+        MainLayerManager lm = MainApplication.getLayerManager();
         OsmDataLayer editLayer = lm.getEditLayer();
         if (editLayer == null) {
             return;
@@ -151,7 +156,7 @@ public class DeleteAction extends MapMode implements ModifierExListener {
         }
         // if c is null, an error occurred or the user aborted. Don't do anything in that case.
         if (c != null) {
-            Main.main.undoRedo.add(c);
+            MainApplication.undoRedo.add(c);
             //FIXME: This should not be required, DeleteCommand should update the selection, otherwise undo/redo won't work.
             lm.getEditDataSet().setSelected();
         }
@@ -244,13 +249,14 @@ public class DeleteAction extends MapMode implements ModifierExListener {
      * @param modifiers extended mouse modifiers, not necessarly taken from the given mouse event
      */
     private void updateCursor(MouseEvent e, int modifiers) {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return;
-        if (!Main.map.mapView.isActiveLayerVisible() || e == null)
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible() || e == null)
             return;
 
         DeleteParameters parameters = getDeleteParameters(e, modifiers);
-        Main.map.mapView.setNewCursor(parameters.mode.cursor(), this);
+        map.mapView.setNewCursor(parameters.mode.cursor(), this);
     }
 
     /**
@@ -287,16 +293,17 @@ public class DeleteAction extends MapMode implements ModifierExListener {
     public void mouseReleased(MouseEvent e) {
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible())
             return;
 
         // request focus in order to enable the expected keyboard shortcuts
         //
-        Main.map.mapView.requestFocus();
+        map.mapView.requestFocus();
 
         Command c = buildDeleteCommands(e, e.getModifiersEx(), false);
         if (c != null) {
-            Main.main.undoRedo.add(c);
+            MainApplication.undoRedo.add(c);
         }
 
         getLayerManager().getEditDataSet().setSelected();
@@ -317,7 +324,7 @@ public class DeleteAction extends MapMode implements ModifierExListener {
 
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.isDisplayingMapView() && Main.map.mapView.isActiveLayerDrawable());
+        setEnabled(MainApplication.isDisplayingMapView() && MainApplication.getMap().mapView.isActiveLayerDrawable());
     }
 
     /**
@@ -347,7 +354,7 @@ public class DeleteAction extends MapMode implements ModifierExListener {
         final Command cmd = DeleteCommand.delete(layer, toDelete);
         if (cmd != null) {
             // cmd can be null if the user cancels dialogs DialogCommand displays
-            Main.main.undoRedo.add(cmd);
+            MainApplication.undoRedo.add(cmd);
             for (Relation relation : toDelete) {
                 if (layer.data.getSelectedRelations().contains(relation)) {
                     layer.data.toggleSelected(relation);
@@ -362,9 +369,10 @@ public class DeleteAction extends MapMode implements ModifierExListener {
 
         DeleteParameters result = new DeleteParameters();
 
-        result.nearestNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
+        MapView mapView = MainApplication.getMap().mapView;
+        result.nearestNode = mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
         if (result.nearestNode == null) {
-            result.nearestSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+            result.nearestSegment = mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
             if (result.nearestSegment != null) {
                 if (shift) {
                     result.mode = DeleteMode.segment;
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
index 61469d2..44a32d4 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
@@ -53,7 +53,9 @@ import org.openstreetmap.josm.data.preferences.CachingProperty;
 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.MainApplication;
 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;
@@ -183,14 +185,14 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
     }
 
     private JCheckBoxMenuItem addMenuItem() {
-        int n = Main.main.menu.editMenu.getItemCount();
+        int n = MainApplication.getMenu().editMenu.getItemCount();
         for (int i = n-1; i > 0; i--) {
-            JMenuItem item = Main.main.menu.editMenu.getItem(i);
+            JMenuItem item = MainApplication.getMenu().editMenu.getItem(i);
             if (item != null && item.getAction() != null && item.getAction() instanceof SnapChangeAction) {
-                Main.main.menu.editMenu.remove(i);
+                MainApplication.getMenu().editMenu.remove(i);
             }
         }
-        return MainMenu.addWithCheckbox(Main.main.menu.editMenu, snapChangeAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
+        return MainMenu.addWithCheckbox(MainApplication.getMenu().editMenu, snapChangeAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
     }
 
     /**
@@ -269,36 +271,38 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
         snapHelper.init();
         snapCheckboxMenuItem.getAction().setEnabled(true);
 
-        Main.map.statusLine.getAnglePanel().addMouseListener(snapHelper.anglePopupListener);
-        Main.registerActionShortcut(backspaceAction, backspaceShortcut);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.getAnglePanel().addMouseListener(snapHelper.anglePopupListener);
+        MainApplication.registerActionShortcut(backspaceAction, backspaceShortcut);
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
-        Main.map.mapView.addTemporaryLayer(this);
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
+        map.mapView.addTemporaryLayer(this);
         SelectionEventManager.getInstance().addSelectionListenerForEdt(this);
 
-        Main.map.keyDetector.addKeyListener(this);
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
+        map.keyDetector.addModifierExListener(this);
         ignoreNextKeyRelease = true;
     }
 
     @Override
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
-        Main.unregisterActionShortcut(backspaceAction, backspaceShortcut);
+        MainApplication.unregisterActionShortcut(backspaceAction, backspaceShortcut);
         snapHelper.unsetFixedMode();
         snapCheckboxMenuItem.getAction().setEnabled(false);
 
-        Main.map.statusLine.getAnglePanel().removeMouseListener(snapHelper.anglePopupListener);
-        Main.map.statusLine.activateAnglePanel(false);
+        map.statusLine.getAnglePanel().removeMouseListener(snapHelper.anglePopupListener);
+        map.statusLine.activateAnglePanel(false);
 
         removeHighlighting();
-        Main.map.keyDetector.removeKeyListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
+        map.keyDetector.removeModifierExListener(this);
     }
 
     /**
@@ -306,7 +310,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
      */
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.isDisplayingMapView() || !MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
         updateKeyModifiersEx(modifiers);
         computeHelperLine();
@@ -340,7 +344,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
      */
     @Override
     public void selectionChanged(SelectionChangeEvent event) {
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
         computeHelperLine();
         addHighlighting();
@@ -359,7 +363,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
     private void finishDrawing() {
         lastUsedNode = null;
         wayIsFinished = true;
-        Main.map.selectSelectTool(true);
+        MainApplication.getMap().selectSelectTool(true);
         snapHelper.noSnapNow();
 
         // Redraw to remove the helper line stub
@@ -391,11 +395,12 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
         }
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerDrawable())
             return;
         // request focus in order to enable the expected keyboard shortcuts
         //
-        Main.map.mapView.requestFocus();
+        mapView.requestFocus();
 
         if (e.getClickCount() > 1 && mousePos != null && mousePos.equals(oldMousePos)) {
             // A double click equals "user clicked last node again, finish way"
@@ -416,7 +421,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
         Collection<OsmPrimitive> selection = new ArrayList<>(ds.getSelected());
 
         boolean newNode = false;
-        Node n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
+        Node n = mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         if (ctrl) {
             Iterator<Way> it = ds.getSelectedWays().iterator();
             if (it.hasNext()) {
@@ -452,13 +457,13 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
                 // project found node to snapping line
                 newEN = snapHelper.getSnapPoint(foundPoint);
                 // do not add new node if there is some node within snapping distance
-                double tolerance = Main.map.mapView.getDist100Pixel() * toleranceMultiplier;
+                double tolerance = mapView.getDist100Pixel() * toleranceMultiplier;
                 if (foundPoint.distance(newEN) > tolerance) {
                     n = new Node(newEN); // point != projected, so we create new node
                     newNode = true;
                 }
             } else { // n==null, no node found in clicked area
-                EastNorth mouseEN = Main.map.mapView.getEastNorth(e.getX(), e.getY());
+                EastNorth mouseEN = mapView.getEastNorth(e.getX(), e.getY());
                 newEN = snapHelper.isSnapOn() ? snapHelper.getSnapPoint(mouseEN) : mouseEN;
                 n = new Node(newEN); //create node at clicked point
                 newNode = true;
@@ -485,8 +490,8 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
             if (!ctrl) {
                 // Insert the node into all the nearby way segments
-                List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                        Main.map.mapView.getPoint(n), OsmPrimitive::isSelectable);
+                List<WaySegment> wss = mapView.getNearestWaySegments(
+                        mapView.getPoint(n), OsmPrimitive::isSelectable);
                 if (snapHelper.isActive()) {
                     tryToMoveNodeOnIntersection(wss, n);
                 }
@@ -611,7 +616,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
         Command c = new SequenceCommand(title, cmds);
 
-        Main.main.undoRedo.add(c);
+        MainApplication.undoRedo.add(c);
         if (!wayIsFinished) {
             lastUsedNode = n;
         }
@@ -621,7 +626,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
         // "viewport following" mode for tracing long features
         // from aerial imagery or GPS tracks.
         if (VIEWPORT_FOLLOWING.get()) {
-            Main.map.mapView.smoothScrollTo(n.getEastNorth());
+            mapView.smoothScrollTo(n.getEastNorth());
         }
         computeHelperLine();
         removeHighlighting();
@@ -766,7 +771,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
     @Override
     public void mouseMoved(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerDrawable())
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
 
         // we copy ctrl/alt/shift from the event just in case our global
@@ -786,7 +791,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
      */
     private void tryToSetBaseSegmentForAngleSnap() {
         if (mousePos != null) {
-            WaySegment seg = Main.map.mapView.getNearestWaySegment(mousePos, OsmPrimitive::isSelectable);
+            WaySegment seg = MainApplication.getMap().mapView.getNearestWaySegment(mousePos, OsmPrimitive::isSelectable);
             if (seg != null) {
                 snapHelper.setBaseSegment(seg);
             }
@@ -808,7 +813,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
         Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
 
-        MapView mv = Main.map.mapView;
+        MapView mv = MainApplication.getMap().mapView;
         Node currentMouseNode = null;
         mouseOnExistingNode = null;
         mouseOnExistingWays = new HashSet<>();
@@ -863,10 +868,11 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
     }
 
     static void showStatusInfo(double angle, double hdg, double distance, boolean activeFlag) {
-        Main.map.statusLine.setAngle(angle);
-        Main.map.statusLine.activateAnglePanel(activeFlag);
-        Main.map.statusLine.setHeading(hdg);
-        Main.map.statusLine.setDist(distance);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setAngle(angle);
+        map.statusLine.activateAnglePanel(activeFlag);
+        map.statusLine.setHeading(hdg);
+        map.statusLine.setDist(distance);
     }
 
     /**
@@ -944,7 +950,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
      */
     @Override
     public void mouseExited(MouseEvent e) {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer == null)
             return;
         mousePos = e.getPoint();
@@ -1059,7 +1065,8 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
         // only adjust to intersection if within snapToIntersectionThreshold pixel of mouse click; otherwise
         // fall through to default action.
         // (for semi-parallel lines, intersection might be miles away!)
-        if (Main.map.mapView.getPoint2D(n).distance(Main.map.mapView.getPoint2D(intersection)) < SNAP_TO_INTERSECTION_THRESHOLD.get()) {
+        MapFrame map = MainApplication.getMap();
+        if (map.mapView.getPoint2D(n).distance(map.mapView.getPoint2D(intersection)) < SNAP_TO_INTERSECTION_THRESHOLD.get()) {
             n.setEastNorth(intersection);
             return;
         }
@@ -1112,21 +1119,22 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
      */
     private void addHighlighting() {
         newHighlights = new HashSet<>();
+        MapView mapView = MainApplication.getMap().mapView;
 
         // if ctrl key is held ("no join"), don't highlight anything
         if (ctrl) {
-            Main.map.mapView.setNewCursor(cursor, this);
+            mapView.setNewCursor(cursor, this);
             redrawIfRequired();
             return;
         }
 
         // This happens when nothing is selected, but we still want to highlight the "target node"
         if (mouseOnExistingNode == null && mousePos != null && getLayerManager().getEditDataSet().selectionEmpty()) {
-            mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
+            mouseOnExistingNode = mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         }
 
         if (mouseOnExistingNode != null) {
-            Main.map.mapView.setNewCursor(cursorJoinNode, this);
+            mapView.setNewCursor(cursorJoinNode, this);
             newHighlights.add(mouseOnExistingNode);
             redrawIfRequired();
             return;
@@ -1134,12 +1142,12 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
         // Insert the node into all the nearby way segments
         if (mouseOnExistingWays.isEmpty()) {
-            Main.map.mapView.setNewCursor(cursor, this);
+            mapView.setNewCursor(cursor, this);
             redrawIfRequired();
             return;
         }
 
-        Main.map.mapView.setNewCursor(cursorJoinWay, this);
+        mapView.setNewCursor(cursorJoinWay, this);
         newHighlights.addAll(mouseOnExistingWays);
         redrawIfRequired();
     }
@@ -1156,11 +1164,12 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
     @Override
     public void paint(Graphics2D g, MapView mv, Bounds box) {
         // sanity checks
-        if (Main.map.mapView == null || mousePos == null
+        MapView mapView = MainApplication.getMap().mapView;
+        if (mapView == null || mousePos == null
                 // don't draw line if we don't know where from or where to
                 || currentMouseEastNorth == null || getCurrentBaseNode() == null
                 // don't draw line if mouse is outside window
-                || !Main.map.mapView.getState().getForView(mousePos.getX(), mousePos.getY()).isInView())
+                || !mapView.getState().getForView(mousePos.getX(), mousePos.getY()).isInView())
             return;
 
         Graphics2D g2 = g;
@@ -1324,8 +1333,8 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.main.undoRedo.undo();
-            Command lastCmd = Main.main.undoRedo.getLastCommand();
+            MainApplication.undoRedo.undo();
+            Command lastCmd = MainApplication.undoRedo.getLastCommand();
             if (lastCmd == null) return;
             Node n = null;
             for (OsmPrimitive p: lastCmd.getParticipatingPrimitives()) {
@@ -1367,7 +1376,8 @@ public class DrawAction extends MapMode implements MapViewPaintable, DataSelecti
 
         @Override
         protected void updateEnabledState() {
-            setEnabled(Main.map != null && Main.map.mapMode instanceof DrawAction);
+            MapFrame map = MainApplication.getMap();
+            setEnabled(map != null && map.mapMode instanceof DrawAction);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java b/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
index 33ca741..e156eda 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawSnapHelper.java
@@ -24,13 +24,23 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
 import org.openstreetmap.josm.gui.draw.SymbolShape;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
+/**
+ * Class that enables the user to draw way segments in angles of exactly 30, 45,
+ * 60, 90 degrees.
+ *
+ * With enabled snapping, the new way node will be projected onto the helper line
+ * that indicates a certain fixed angle relative to the previous segment.
+ */
 class DrawSnapHelper {
 
     private final DrawAction drawAction;
@@ -238,7 +248,7 @@ class DrawSnapHelper {
         try {
             return Double.parseDouble(string);
         } catch (NumberFormatException e) {
-            Main.warn("Incorrect number in draw.anglesnap.angles preferences: {0}", string);
+            Logging.warn("Incorrect number in draw.anglesnap.angles preferences: {0}", string);
             return 0;
         }
     }
@@ -326,6 +336,7 @@ class DrawSnapHelper {
      * @param curHeading The current mouse heading
      */
     public void checkAngleSnapping(EastNorth currentEN, double baseHeading, double curHeading) {
+        MapView mapView = MainApplication.getMap().mapView;
         EastNorth p0 = drawAction.getCurrentBaseNode().getEastNorth();
         EastNorth snapPoint = currentEN;
         double angle = -1;
@@ -366,7 +377,7 @@ class DrawSnapHelper {
                 // (pe,pn) - direction of snapping line
                 pe = Math.sin(phi);
                 pn = Math.cos(phi);
-                double scale = 20 * Main.map.mapView.getDist100Pixel();
+                double scale = 20 * mapView.getDist100Pixel();
                 dir2 = new EastNorth(e0 + scale * pe, n0 + scale * pn);
                 snapPoint = getSnapPoint(currentEN);
             } else {
@@ -375,7 +386,7 @@ class DrawSnapHelper {
         }
 
         // find out the distance, in metres, between the base point and projected point
-        LatLon mouseLatLon = Main.map.mapView.getProjection().eastNorth2latlon(snapPoint);
+        LatLon mouseLatLon = mapView.getProjection().eastNorth2latlon(snapPoint);
         double distance = this.drawAction.getCurrentBaseNode().getCoor().greatCircleDistance(mouseLatLon);
         double hdg = Utils.toDegrees(p0.heading(snapPoint));
         // heading of segment from current to calculated point, not to mouse position
@@ -427,7 +438,7 @@ class DrawSnapHelper {
         double de = p.east()-e0;
         double dn = p.north()-n0;
         double l = de*pe+dn*pn;
-        double delta = Main.map.mapView.getDist100Pixel()/20;
+        double delta = MainApplication.getMap().mapView.getDist100Pixel()/20;
         if (!absoluteFix && l < delta) {
             active = false;
             return p;
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
index f715ed8..88d6cc6 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
@@ -44,7 +44,9 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 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.MainApplication;
 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;
@@ -56,6 +58,7 @@ import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
 import org.openstreetmap.josm.gui.util.ModifierExListener;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -203,7 +206,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
 
         @Override
         protected void updateEnabledState() {
-            setEnabled(Main.map != null && Main.map.mapMode instanceof ExtrudeAction);
+            MapFrame map = MainApplication.getMap();
+            setEnabled(map != null && map.mapMode instanceof ExtrudeAction);
         }
     }
 
@@ -237,14 +241,14 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     }
 
     private JCheckBoxMenuItem addDualAlignMenuItem() {
-        int n = Main.main.menu.editMenu.getItemCount();
+        int n = MainApplication.getMenu().editMenu.getItemCount();
         for (int i = n-1; i > 0; i--) {
-            JMenuItem item = Main.main.menu.editMenu.getItem(i);
+            JMenuItem item = MainApplication.getMenu().editMenu.getItem(i);
             if (item != null && item.getAction() != null && item.getAction() instanceof DualAlignChangeAction) {
-                Main.main.menu.editMenu.remove(i);
+                MainApplication.getMenu().editMenu.remove(i);
             }
         }
-        return MainMenu.addWithCheckbox(Main.main.menu.editMenu, dualAlignChangeAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
+        return MainMenu.addWithCheckbox(MainApplication.getMenu().editMenu, dualAlignChangeAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
     }
 
     // -------------------------------------------------------------------------
@@ -270,7 +274,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
             else if (mode == Mode.extrude || mode == Mode.create_new)
                 rv = new StringBuilder(tr("Draw a rectangle of the desired size, then release the mouse button."));
             else {
-                Main.warn("Extrude: unknown mode " + mode);
+                Logging.warn("Extrude: unknown mode " + mode);
                 rv = new StringBuilder();
             }
             if (dualAlignActive) {
@@ -291,11 +295,12 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     @Override
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
         ignoreNextKeyRelease = true;
-        Main.map.keyDetector.addKeyListener(this);
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
     @Override
@@ -319,12 +324,13 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
 
     @Override
     public void exitMode() {
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(this);
         dualAlignCheckboxMenuItem.getAction().setEnabled(false);
-        Main.map.keyDetector.removeKeyListener(this);
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
+        map.keyDetector.removeModifierExListener(this);
         super.exitMode();
     }
 
@@ -337,11 +343,12 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable())
+        MapFrame map = MainApplication.getMap();
+        if (!MainApplication.isDisplayingMapView() || !map.mapView.isActiveLayerDrawable())
             return;
         updateKeyModifiersEx(modifiers);
         if (mode == Mode.select) {
-            Main.map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
+            map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
         }
     }
 
@@ -378,7 +385,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     @Override
     public void mousePressed(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapFrame map = MainApplication.getMap();
+        if (!map.mapView.isActiveLayerVisible())
             return;
         if (!(Boolean) this.getValue("active"))
             return;
@@ -388,8 +396,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         requestFocusInMapView();
         updateKeyModifiers(e);
 
-        selectedNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
-        selectedSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+        selectedNode = map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
+        selectedSegment = map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
 
         // If nothing gets caught, stay in select mode
         if (selectedSegment == null && selectedNode == null) return;
@@ -439,10 +447,10 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         moveCommand = null;
         moveCommand2 = null;
 
-        Main.map.mapView.addTemporaryLayer(this);
+        map.mapView.addTemporaryLayer(this);
 
         updateStatusLine();
-        Main.map.mapView.repaint();
+        map.mapView.repaint();
 
         // Make note of time pressed
         mouseDownTime = System.currentTimeMillis();
@@ -457,7 +465,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     @Override
     public void mouseDragged(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerVisible())
             return;
 
         // do not count anything as a drag if it lasts less than 100 milliseconds.
@@ -469,10 +478,10 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         } else {
             //move, create new and extrude mode - move the selected segment
 
-            EastNorth mouseEn = Main.map.mapView.getEastNorth(e.getPoint().x, e.getPoint().y);
+            EastNorth mouseEn = mapView.getEastNorth(e.getPoint().x, e.getPoint().y);
             EastNorth bestMovement = calculateBestMovementAndNewNodes(mouseEn);
 
-            Main.map.mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
+            mapView.setNewCursor(Cursor.MOVE_CURSOR, this);
 
             if (dualAlignActive) {
                 if (mode == Mode.extrude || mode == Mode.create_new) {
@@ -486,7 +495,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
                         moveCommand = new MoveCommand(movingNodeList.get(0), movement1.getX(), movement1.getY());
                         moveCommand2 = new MoveCommand(movingNodeList.get(1), movement2.getX(), movement2.getY());
                         Command c = new SequenceCommand(tr("Extrude Way"), moveCommand, moveCommand2);
-                        Main.main.undoRedo.add(c);
+                        MainApplication.undoRedo.add(c);
                     } else {
                         // reuse existing move commands
                         moveCommand.moveAgainTo(movement1.getX(), movement1.getY());
@@ -501,7 +510,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
                     if (moveCommand == null) {
                         //make a new move command
                         moveCommand = new MoveCommand(new ArrayList<OsmPrimitive>(movingNodeList), bestMovement);
-                        Main.main.undoRedo.add(moveCommand);
+                        MainApplication.undoRedo.add(moveCommand);
                     } else {
                         //reuse existing move command
                         moveCommand.moveAgainTo(bestMovement.getX(), bestMovement.getY());
@@ -509,7 +518,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
                 }
             }
 
-            Main.map.mapView.repaint();
+            mapView.repaint();
         }
     }
 
@@ -520,7 +529,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     @Override
     public void mouseReleased(MouseEvent e) {
 
-        if (!Main.map.mapView.isActiveLayerVisible())
+        MapView mapView = MainApplication.getMap().mapView;
+        if (!mapView.isActiveLayerVisible())
             return;
 
         if (mode == Mode.select) {
@@ -540,7 +550,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
                         performExtrusion();
                     } catch (DataIntegrityProblemException ex) {
                         // Can occur if calling undo while extruding, see #12870
-                        Main.error(ex);
+                        Logging.error(ex);
                     }
                 }
             } else if (mode == Mode.translate || mode == Mode.translate_node) {
@@ -551,14 +561,14 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
 
             updateKeyModifiers(e);
             // Switch back into select mode
-            Main.map.mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
-            Main.map.mapView.removeTemporaryLayer(this);
+            mapView.setNewCursor(ctrl ? cursorTranslate : alt ? cursorCreateNew : shift ? cursorCreateNodes : cursor, this);
+            mapView.removeTemporaryLayer(this);
             selectedSegment = null;
             moveCommand = null;
             mode = Mode.select;
             dualAlignSegmentCollapsed = false;
             updateStatusLine();
-            Main.map.mapView.repaint();
+            mapView.repaint();
         }
     }
 
@@ -572,9 +582,10 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     private static void addNewNode(MouseEvent e) {
         // Should maybe do the same as in DrawAction and fetch all nearby segments?
-        WaySegment ws = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
+        MapView mapView = MainApplication.getMap().mapView;
+        WaySegment ws = mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
         if (ws != null) {
-            Node n = new Node(Main.map.mapView.getLatLon(e.getX(), e.getY()));
+            Node n = new Node(mapView.getLatLon(e.getX(), e.getY()));
             EastNorth a = ws.getFirstNode().getEastNorth();
             EastNorth b = ws.getSecondNode().getEastNorth();
             n.setEastNorth(Geometry.closestPointToSegment(a, b, n.getEastNorth()));
@@ -582,7 +593,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
             wnew.addNode(ws.lowerIndex+1, n);
             SequenceCommand cmds = new SequenceCommand(tr("Add a new node to an existing way"),
                     new AddCommand(n), new ChangeCommand(ws.way, wnew));
-            Main.main.undoRedo.add(cmds);
+            MainApplication.undoRedo.add(cmds);
         }
     }
 
@@ -612,7 +623,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         }
         cmds.add(new AddCommand(wnew));
         Command c = new SequenceCommand(tr("Extrude Way"), cmds);
-        Main.main.undoRedo.add(c);
+        MainApplication.undoRedo.add(c);
         getLayerManager().getEditDataSet().setSelected(wnew);
     }
 
@@ -700,7 +711,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
             cmds.add(new ChangeCommand(selectedSegment.way, wnew));
         }
         Command c = new SequenceCommand(tr("Extrude Way"), cmds);
-        Main.main.undoRedo.add(c);
+        MainApplication.undoRedo.add(c);
         joinNodesIfCollapsed(changedNodes);
     }
 
@@ -710,12 +721,12 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         // If the dual alignment moved two nodes to the same point, merge them
         Node targetNode = MergeNodesAction.selectTargetNode(changedNodes);
         Node locNode = MergeNodesAction.selectTargetLocationNode(changedNodes);
-        Command mergeCmd = MergeNodesAction.mergeNodes(Main.getLayerManager().getEditLayer(), changedNodes, targetNode, locNode);
+        Command mergeCmd = MergeNodesAction.mergeNodes(changedNodes, targetNode, locNode);
         if (mergeCmd != null) {
-            Main.main.undoRedo.add(mergeCmd);
+            MainApplication.undoRedo.add(mergeCmd);
         } else {
             // undo extruding command itself
-            Main.main.undoRedo.undo();
+            MainApplication.undoRedo.undo();
         }
     }
 
@@ -741,7 +752,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     private EastNorth calculateBestMovement(EastNorth mouseEn) {
 
-        EastNorth initialMouseEn = Main.map.mapView.getEastNorth(initialMousePos.x, initialMousePos.y);
+        EastNorth initialMouseEn = MainApplication.getMap().mapView.getEastNorth(initialMousePos.x, initialMousePos.y);
         EastNorth mouseMovement = mouseEn.subtract(initialMouseEn);
 
         double bestDistance = Double.POSITIVE_INFINITY;
@@ -924,7 +935,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         // find out the movement distance, in metres
         double distance = Main.getProjection().eastNorth2latlon(initialN1en).greatCircleDistance(
                 Main.getProjection().eastNorth2latlon(n1movedEn));
-        Main.map.statusLine.setDist(distance);
+        MainApplication.getMap().statusLine.setDist(distance);
         updateStatusLine();
 
         if (dualAlignActive) {
@@ -1190,7 +1201,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
             return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * linelength), start.getY()
                     + (unitvector.getY() * linelength)));
         } catch (NoninvertibleTransformException e) {
-            Main.debug(e);
+            Logging.debug(e);
             return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * 10), start.getY()
                     + (unitvector.getY() * 10)));
         }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
index 7afd7b6..0b7f907 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
@@ -39,6 +39,8 @@ 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.MainApplication;
+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;
@@ -51,6 +53,9 @@ import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
+ * A special map mode that is optimized for improving way geometry.
+ * (by efficiently moving, adding and deleting way-nodes)
+ *
  * @author Alexander Kachkaev <alexander at kachkaev.ru>, 2011
  */
 public class ImproveWayAccuracyAction extends MapMode implements
@@ -134,7 +139,8 @@ public class ImproveWayAccuracyAction extends MapMode implements
         super.enterMode();
         readPreferences();
 
-        mv = Main.map.mapView;
+        MapFrame map = MainApplication.getMap();
+        mv = map.mapView;
         mousePos = null;
         oldModeHelpText = "";
 
@@ -144,12 +150,12 @@ public class ImproveWayAccuracyAction extends MapMode implements
 
         updateStateByCurrentSelection();
 
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
-        Main.map.mapView.addTemporaryLayer(temporaryLayer);
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
+        map.mapView.addTemporaryLayer(temporaryLayer);
         DataSet.addSelectionListener(this);
 
-        Main.map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addModifierExListener(this);
     }
 
     @Override
@@ -161,12 +167,13 @@ public class ImproveWayAccuracyAction extends MapMode implements
     public void exitMode() {
         super.exitMode();
 
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
-        Main.map.mapView.removeTemporaryLayer(temporaryLayer);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
+        map.mapView.removeTemporaryLayer(temporaryLayer);
         DataSet.removeSelectionListener(this);
 
-        Main.map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeModifierExListener(this);
         temporaryLayer.invalidate();
     }
 
@@ -175,8 +182,9 @@ public class ImproveWayAccuracyAction extends MapMode implements
         String newModeHelpText = getModeHelpText();
         if (!newModeHelpText.equals(oldModeHelpText)) {
             oldModeHelpText = newModeHelpText;
-            Main.map.statusLine.setHelpText(newModeHelpText);
-            Main.map.statusLine.repaint();
+            MapFrame map = MainApplication.getMap();
+            map.statusLine.setHelpText(newModeHelpText);
+            map.statusLine.repaint();
         }
     }
 
@@ -344,7 +352,7 @@ public class ImproveWayAccuracyAction extends MapMode implements
     // -------------------------------------------------------------------------
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || !Main.map.mapView.isActiveLayerDrawable()) {
+        if (!MainApplication.isDisplayingMapView() || !MainApplication.getMap().mapView.isActiveLayerDrawable()) {
             return;
         }
         updateKeyModifiersEx(modifiers);
@@ -464,7 +472,7 @@ public class ImproveWayAccuracyAction extends MapMode implements
                         "Add a new node to {0} ways",
                         virtualSegments.size(), virtualSegments.size());
 
-                Main.main.undoRedo.add(new SequenceCommand(text, virtualCmds));
+                MainApplication.undoRedo.add(new SequenceCommand(text, virtualCmds));
 
             } else if (alt && !ctrl && candidateNode != null) {
                 // Deleting the highlighted node
@@ -481,10 +489,10 @@ public class ImproveWayAccuracyAction extends MapMode implements
                     if (nodes.size() < 2) {
                         final Command deleteCmd = DeleteCommand.delete(getLayerManager().getEditLayer(), Collections.singleton(targetWay), true);
                         if (deleteCmd != null) {
-                            Main.main.undoRedo.add(deleteCmd);
+                            MainApplication.undoRedo.add(deleteCmd);
                         }
                     } else {
-                        Main.main.undoRedo.add(new ChangeCommand(targetWay, newWay));
+                        MainApplication.undoRedo.add(new ChangeCommand(targetWay, newWay));
                     }
                 } else if (candidateNode.isTagged()) {
                     JOptionPane.showMessageDialog(Main.parent,
@@ -493,7 +501,7 @@ public class ImproveWayAccuracyAction extends MapMode implements
                 } else {
                     final Command deleteCmd = DeleteCommand.delete(getLayerManager().getEditLayer(), Collections.singleton(candidateNode), true);
                     if (deleteCmd != null) {
-                        Main.main.undoRedo.add(deleteCmd);
+                        MainApplication.undoRedo.add(deleteCmd);
                     }
                 }
 
@@ -503,7 +511,7 @@ public class ImproveWayAccuracyAction extends MapMode implements
                 EastNorth nodeEN = candidateNode.getEastNorth();
                 EastNorth cursorEN = mv.getEastNorth(mousePos.x, mousePos.y);
 
-                Main.main.undoRedo.add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() - nodeEN.north()));
+                MainApplication.undoRedo.add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() - nodeEN.north()));
             }
         }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
index 4873183..7f36f09 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
@@ -5,12 +5,12 @@ import java.awt.Point;
 import java.util.Collection;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Pair;
@@ -56,7 +56,7 @@ final class ImproveWayAccuracyHelper {
             }
         }
 
-        return Main.map.mapView.getNearestWay(p, OsmPrimitive::isSelectable);
+        return MainApplication.getMap().mapView.getNearestWay(p, OsmPrimitive::isSelectable);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
index 3226111..a4a7efa 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
@@ -15,6 +15,7 @@ import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -98,7 +99,7 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
         putValue("active", Boolean.TRUE);
         Main.pref.addPreferenceChangeListener(this);
         readPreferences();
-        Main.map.mapView.setNewCursor(cursor, this);
+        MainApplication.getMap().mapView.setNewCursor(cursor, this);
         updateStatusLine();
     }
 
@@ -108,13 +109,14 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
     public void exitMode() {
         putValue("active", Boolean.FALSE);
         Main.pref.removePreferenceChangeListener(this);
-        Main.map.mapView.resetCursor(this);
+        MainApplication.getMap().mapView.resetCursor(this);
     }
 
     protected void updateStatusLine() {
-        if (Main.map != null && Main.map.statusLine != null) {
-            Main.map.statusLine.setHelpText(getModeHelpText());
-            Main.map.statusLine.repaint();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.statusLine != null) {
+            map.statusLine.setHelpText(getModeHelpText());
+            map.statusLine.repaint();
         }
     }
 
@@ -133,8 +135,8 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
      */
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (Main.isDisplayingMapView()) {
-            Main.map.selectMapMode(this);
+        if (MainApplication.isDisplayingMapView()) {
+            MainApplication.getMap().selectMapMode(this);
         }
     }
 
@@ -224,7 +226,7 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
     protected void requestFocusInMapView() {
         if (isEnabled()) {
             // request focus in order to enable the expected keyboard shortcuts (see #8710)
-            Main.map.mapView.requestFocus();
+            MainApplication.getMap().mapView.requestFocus();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
index a7caf34..7f85f65 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
@@ -24,7 +24,6 @@ import java.util.stream.Stream;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -39,6 +38,7 @@ import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
@@ -50,10 +50,16 @@ import org.openstreetmap.josm.gui.util.ModifierExListener;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
-//// TODO: (list below)
-/* == Functionality ==
+/**
+ * MapMode for making parallel ways.
+ *
+ * All calculations are done in projected coordinates.
+ *
+ * TODO:
+ * == Functionality ==
  *
  * 1. Use selected nodes as split points for the selected ways.
  *
@@ -80,12 +86,6 @@ import org.openstreetmap.josm.tools.Shortcut;
  *
  * Current code doesn't not take into account that ways might been highlighted
  * by other than us. Don't think that situation should ever happen though.
- */
-
-/**
- * MapMode for making parallel ways.
- *
- * All calculations are done in projected coordinates.
  *
  * @author Ole Jørgen Brønner (olejorgenb)
  */
@@ -171,8 +171,8 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
         mv.addMouseMotionListener(this);
         mv.addTemporaryLayer(temporaryLayer);
 
-        //// Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
-        Main.map.keyDetector.addModifierExListener(this);
+        // Needed to update the mouse cursor if modifiers are changed when the mouse is motionless
+        MainApplication.getMap().keyDetector.addModifierExListener(this);
         sourceWays = new LinkedHashSet<>(getLayerManager().getEditDataSet().getSelectedWays());
         for (Way w : sourceWays) {
             w.setHighlighted(true);
@@ -185,9 +185,10 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
         mv.removeMouseListener(this);
         mv.removeMouseMotionListener(this);
         mv.removeTemporaryLayer(temporaryLayer);
-        Main.map.statusLine.setDist(-1);
-        Main.map.statusLine.repaint();
-        Main.map.keyDetector.removeModifierExListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setDist(-1);
+        map.statusLine.repaint();
+        map.keyDetector.removeModifierExListener(this);
         removeWayHighlighting(sourceWays);
         pWays = null;
         sourceWays = null;
@@ -216,7 +217,7 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
 
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (Main.map == null || mv == null || !mv.isActiveLayerDrawable())
+        if (MainApplication.getMap() == null || mv == null || !mv.isActiveLayerDrawable())
             return;
 
         // Should only get InputEvents due to the mask in enterMode
@@ -430,8 +431,9 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
         }
         pWays.changeOffset(d);
 
-        Main.map.statusLine.setDist(Math.abs(snappedRealD));
-        Main.map.statusLine.repaint();
+        MapFrame map = MainApplication.getMap();
+        map.statusLine.setDist(Math.abs(snappedRealD));
+        map.statusLine.repaint();
         temporaryLayer.invalidate();
     }
 
@@ -522,7 +524,7 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
             getLayerManager().getEditDataSet().setSelected(pWays.getWays());
             return true;
         } catch (IllegalArgumentException e) {
-            Main.debug(e);
+            Logging.debug(e);
             new Notification(tr("ParallelWayAction\n" +
                     "The ways selected must form a simple branchless path"))
                     .setIcon(JOptionPane.INFORMATION_MESSAGE)
@@ -584,7 +586,7 @@ public class ParallelWayAction extends MapMode implements ModifierExListener {
                 if (mod.isPresent()) {
                     ret.put(mod.get(), Character.isUpperCase(c));
                 } else {
-                    Main.debug("Ignoring unknown modifier {0}", c);
+                    Logging.debug("Ignoring unknown modifier {0}", c);
                 }
             }
             return Collections.unmodifiableMap(ret);
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java b/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java
index 5f57141..9582c7e 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java
@@ -10,7 +10,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -18,6 +17,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.NodeGraph;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Geometry;
 
 /**
@@ -181,7 +181,7 @@ public class ParallelWays {
      * Performs the action by adding a new sequence command to the undo/redo queue.
      */
     public void commit() {
-        Main.main.undoRedo.add(new SequenceCommand("Make parallel way(s)", makeAddWayAndNodesCommandList()));
+        MainApplication.undoRedo.add(new SequenceCommand("Make parallel way(s)", makeAddWayAndNodesCommandList()));
     }
 
     private List<Command> makeAddWayAndNodesCommandList() {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
index 13b7310..1e026e8 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
@@ -7,8 +7,9 @@ import java.awt.Cursor;
 import java.awt.Point;
 import java.awt.event.MouseEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -37,14 +38,16 @@ public class PlayHeadDragMode extends MapMode {
 
     @Override public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.addMouseListener(this);
+        map.mapView.addMouseMotionListener(this);
     }
 
     @Override public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.removeMouseListener(this);
+        map.mapView.removeMouseMotionListener(this);
     }
 
     @Override public void mousePressed(MouseEvent ev) {
@@ -61,7 +64,7 @@ public class PlayHeadDragMode extends MapMode {
             dragging = true;
         }
         if (p.distance(mousePos) == 0) return;
-        playHeadMarker.drag(Main.map.mapView.getEastNorth(ev.getX(), ev.getY()));
+        playHeadMarker.drag(MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY()));
         mousePos = p;
     }
 
@@ -73,7 +76,7 @@ public class PlayHeadDragMode extends MapMode {
         requestFocusInMapView();
         updateKeyModifiers(ev);
 
-        EastNorth en = Main.map.mapView.getEastNorth(ev.getX(), ev.getY());
+        EastNorth en = MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY());
         if (!shift) {
             playHeadMarker.reposition(en);
         } else {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
index d489ef7..a5f2318 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
@@ -16,7 +16,7 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
-import java.util.Set;
+import java.util.Optional;
 
 import javax.swing.JOptionPane;
 
@@ -39,6 +39,7 @@ import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor;
 import org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
@@ -50,6 +51,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.KeyPressReleaseListener;
 import org.openstreetmap.josm.gui.util.ModifierExListener;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -179,7 +181,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
      * to remove the highlight from them again as otherwise the whole data
      * set would have to be checked.
      */
-    private transient Set<OsmPrimitive> oldHighlights = new HashSet<>();
+    private transient Optional<OsmPrimitive> currentHighlight = Optional.empty();
 
     /**
      * Create a new SelectAction
@@ -207,8 +209,9 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
         cycleManager.init();
         virtualManager.init();
         // This is required to update the cursors when ctrl/shift/alt is pressed
-        Main.map.keyDetector.addModifierExListener(this);
-        Main.map.keyDetector.addKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.keyDetector.addModifierExListener(this);
+        map.keyDetector.addKeyListener(this);
     }
 
     @Override
@@ -218,14 +221,15 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
         mv.removeMouseListener(this);
         mv.removeMouseMotionListener(this);
         mv.setVirtualNodesEnabled(false);
-        Main.map.keyDetector.removeModifierExListener(this);
-        Main.map.keyDetector.removeKeyListener(this);
+        MapFrame map = MainApplication.getMap();
+        map.keyDetector.removeModifierExListener(this);
+        map.keyDetector.removeKeyListener(this);
         removeHighlighting();
     }
 
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (!Main.isDisplayingMapView() || oldEvent == null) return;
+        if (!MainApplication.isDisplayingMapView() || oldEvent == null) return;
         if (giveUserFeedback(oldEvent, modifiers)) {
             mv.repaint();
         }
@@ -249,13 +253,13 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
      * @return {@code true} if repaint is required
      */
     private boolean giveUserFeedback(MouseEvent e, int modifiers) {
-        Collection<OsmPrimitive> c = asColl(
+        Optional<OsmPrimitive> c = Optional.ofNullable(
                 mv.getNearestNodeOrWay(e.getPoint(), mv.isSelectablePredicate, true));
 
         updateKeyModifiersEx(modifiers);
-        determineMapMode(!c.isEmpty());
+        determineMapMode(c.isPresent());
 
-        Set<OsmPrimitive> newHighlights = new HashSet<>();
+        Optional<OsmPrimitive> newHighlight = Optional.empty();
 
         virtualManager.clear();
         if (mode == Mode.MOVE && !dragInProgress() && virtualManager.activateVirtualNodeNearPoint(e.getPoint())) {
@@ -265,26 +269,24 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             }
             mv.setNewCursor(SelectActionCursor.virtual_node.cursor(), this);
             // don't highlight anything else if a virtual node will be
-            return repaintIfRequired(newHighlights);
+            return repaintIfRequired(newHighlight);
         }
 
         mv.setNewCursor(getCursor(c), this);
 
         // return early if there can't be any highlights
-        if (!drawTargetHighlight || mode != Mode.MOVE || c.isEmpty())
-            return repaintIfRequired(newHighlights);
+        if (!drawTargetHighlight || mode != Mode.MOVE || !c.isPresent())
+            return repaintIfRequired(newHighlight);
 
         // CTRL toggles selection, but if while dragging CTRL means merge
         final boolean isToggleMode = ctrl && !dragInProgress();
-        for (OsmPrimitive x : c) {
+        if (c.isPresent() && (isToggleMode || !c.get().isSelected())) {
             // only highlight primitives that will change the selection
             // when clicked. I.e. don't highlight selected elements unless
             // we are in toggle mode.
-            if (isToggleMode || !x.isSelected()) {
-                newHighlights.add(x);
-            }
+            newHighlight = c;
         }
-        return repaintIfRequired(newHighlights);
+        return repaintIfRequired(newHighlight);
     }
 
     /**
@@ -294,7 +296,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
      * @param nearbyStuff  primitives near the cursor
      * @return the cursor that should be displayed
      */
-    private Cursor getCursor(Collection<OsmPrimitive> nearbyStuff) {
+    private Cursor getCursor(Optional<OsmPrimitive> nearbyStuff) {
         String c = "rect";
         switch(mode) {
         case MOVE:
@@ -302,8 +304,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
                 c = "virtual_node";
                 break;
             }
-            final Iterator<OsmPrimitive> it = nearbyStuff.iterator();
-            final OsmPrimitive osm = it.hasNext() ? it.next() : null;
+            final OsmPrimitive osm = nearbyStuff.orElse(null);
 
             if (dragInProgress()) {
                 // only consider merge if ctrl is pressed and there are nodes in
@@ -355,35 +356,22 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             needsRepaint = true;
             ds.clearHighlightedVirtualNodes();
         }
-        if (oldHighlights.isEmpty())
+        if (!currentHighlight.isPresent()) {
             return needsRepaint;
-
-        for (OsmPrimitive prim : oldHighlights) {
-            prim.setHighlighted(false);
+        } else {
+            currentHighlight.get().setHighlighted(false);
         }
-        oldHighlights = new HashSet<>();
+        currentHighlight = Optional.empty();
         return true;
     }
 
-    private boolean repaintIfRequired(Set<OsmPrimitive> newHighlights) {
-        if (!drawTargetHighlight)
+    private boolean repaintIfRequired(Optional<OsmPrimitive> newHighlight) {
+        if (!drawTargetHighlight || currentHighlight.equals(newHighlight))
             return false;
-
-        boolean needsRepaint = false;
-        for (OsmPrimitive x : newHighlights) {
-            if (oldHighlights.contains(x)) {
-                continue;
-            }
-            needsRepaint = true;
-            x.setHighlighted(true);
-        }
-        oldHighlights.removeAll(newHighlights);
-        for (OsmPrimitive x : oldHighlights) {
-            x.setHighlighted(false);
-            needsRepaint = true;
-        }
-        oldHighlights = newHighlights;
-        return needsRepaint;
+        currentHighlight.ifPresent(osm -> osm.setHighlighted(false));
+        newHighlight.ifPresent(osm -> osm.setHighlighted(true));
+        currentHighlight = newHighlight;
+        return true;
     }
 
     /**
@@ -522,10 +510,10 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             boolean needsRepaint = removeHighlighting();
             if (p != null) {
                 p.setHighlighted(true);
-                oldHighlights.add(p);
+                currentHighlight = Optional.of(p);
                 needsRepaint = true;
             }
-            mv.setNewCursor(getCursor(asColl(p)), this);
+            mv.setNewCursor(getCursor(Optional.ofNullable(p)), this);
             // also update the stored mouse event, so we can display the correct cursor
             // when dragging a node onto another one and then press CTRL to merge
             oldEvent = e;
@@ -582,6 +570,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
 
         startingDraggingPos = null;
         mouseReleaseTime = System.currentTimeMillis();
+        MapFrame map = MainApplication.getMap();
 
         if (mode == Mode.SELECT) {
             if (e.getButton() != MouseEvent.BUTTON1) {
@@ -592,7 +581,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
 
             // Select Draw Tool if no selection has been made
             if (!cancelDrawMode && getLayerManager().getEditDataSet().selectionEmpty()) {
-                Main.map.selectDrawTool(true);
+                map.selectDrawTool(true);
                 updateStatusLine();
                 return;
             }
@@ -613,7 +602,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
                     if (e.getClickCount() >= 2 && c.size() == 1 && c.iterator().next() instanceof Node) {
                         // We need to do it like this as otherwise drawAction will see a double
                         // click and switch back to SelectMode
-                        Main.worker.execute(() -> Main.map.selectDrawTool(true));
+                        MainApplication.worker.execute(() -> map.selectDrawTool(true));
                         return;
                     }
                 }
@@ -644,16 +633,17 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
 
     @Override
     public void doKeyPressed(KeyEvent e) {
-        if (!repeatedKeySwitchLassoOption || !Main.isDisplayingMapView() || !getShortcut().isEvent(e))
+        if (!repeatedKeySwitchLassoOption || !MainApplication.isDisplayingMapView() || !getShortcut().isEvent(e))
             return;
-        if (Main.isDebugEnabled()) {
-            Main.debug(getClass().getName()+" consuming event "+e);
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("{0} consuming event {1}", getClass().getName(), e);
         }
         e.consume();
+        MapFrame map = MainApplication.getMap();
         if (!lassoMode) {
-            Main.map.selectMapMode(Main.map.mapModeSelectLasso);
+            map.selectMapMode(map.mapModeSelectLasso);
         } else {
-            Main.map.selectMapMode(Main.map.mapModeSelect);
+            map.selectMapMode(map.mapModeSelect);
         }
     }
 
@@ -720,7 +710,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
                     ((MoveCommand) c).applyVectorTo(currentEN);
                 } else {
                     c = new MoveCommand(selection, startEN, currentEN);
-                    Main.main.undoRedo.add(c);
+                    MainApplication.undoRedo.add(c);
                 }
                 for (Node n : affectedNodes) {
                     LatLon ll = n.getCoor();
@@ -753,19 +743,19 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
                     if (c instanceof RotateCommand && affectedNodes.equals(((RotateCommand) c).getTransformedNodes())) {
                         ((RotateCommand) c).handleEvent(currentEN);
                     } else {
-                        Main.main.undoRedo.add(new RotateCommand(selection, currentEN));
+                        MainApplication.undoRedo.add(new RotateCommand(selection, currentEN));
                     }
                 } else if (mode == Mode.SCALE) {
                     if (c instanceof ScaleCommand && affectedNodes.equals(((ScaleCommand) c).getTransformedNodes())) {
                         ((ScaleCommand) c).handleEvent(currentEN);
                     } else {
-                        Main.main.undoRedo.add(new ScaleCommand(selection, currentEN));
+                        MainApplication.undoRedo.add(new ScaleCommand(selection, currentEN));
                     }
                 }
 
                 Collection<Way> ways = ds.getSelectedWays();
                 if (doesImpactStatusLine(affectedNodes, ways)) {
-                    Main.map.statusLine.setDist(ways);
+                    MainApplication.getMap().statusLine.setDist(ways);
                 }
             } finally {
                 ds.endUpdate();
@@ -808,7 +798,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
      * @return last command
      */
     private static Command getLastCommandInDataset(DataSet ds) {
-        Command lastCommand = Main.main.undoRedo.getLastCommand();
+        Command lastCommand = MainApplication.undoRedo.getLastCommand();
         if (lastCommand instanceof SequenceCommand) {
             lastCommand = ((SequenceCommand) lastCommand).getLastCommand();
         }
@@ -834,7 +824,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             ed.toggleEnable("movedHiddenElements");
             ed.showDialog();
             if (ed.getValue() != 1) {
-                Main.main.undoRedo.undo();
+                MainApplication.undoRedo.undo();
             }
         }
         int max = Main.pref.getInteger("warn.move.maxelements", 20), limit = max;
@@ -857,7 +847,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             ed.showDialog();
 
             if (ed.getValue() != 1) {
-                Main.main.undoRedo.undo();
+                MainApplication.undoRedo.undo();
             }
         } else {
             // if small number of elements were moved,
@@ -929,7 +919,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
 
         Collection<Node> nodesToMerge = new LinkedList<>(selNodes);
         nodesToMerge.add(target);
-        mergeNodes(Main.getLayerManager().getEditLayer(), nodesToMerge, target);
+        mergeNodes(MainApplication.getLayerManager().getEditLayer(), nodesToMerge, target);
     }
 
     /**
@@ -1256,7 +1246,7 @@ public class SelectAction extends MapMode implements ModifierExListener, KeyPres
             String text = trn("Add and move a virtual new node to way",
                     "Add and move a virtual new node to {0} ways", virtualWays.size(),
                     virtualWays.size());
-            Main.main.undoRedo.add(new SequenceCommand(text, virtualCmds));
+            MainApplication.undoRedo.add(new SequenceCommand(text, virtualCmds));
             getLayerManager().getEditDataSet().setSelected(Collections.singleton((OsmPrimitive) virtualNode));
             clear();
         }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java b/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
index daac666..a7e437f 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
@@ -7,7 +7,7 @@ import java.awt.Rectangle;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.SelectionManager;
@@ -52,20 +52,20 @@ public class ZoomAction extends MapMode implements SelectionEnded {
      */
     @Override
     public void selectionEnded(Rectangle r, MouseEvent e) {
-        if (r.width >= 3 && r.height >= 3 && Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (r.width >= 3 && r.height >= 3 && MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             mv.zoomToFactor(mv.getEastNorth(r.x+r.width/2, r.y+r.height/2), r.getWidth()/mv.getWidth());
         }
     }
 
     @Override public void enterMode() {
         super.enterMode();
-        selectionManager.register(Main.map.mapView, false);
+        selectionManager.register(MainApplication.getMap().mapView, false);
     }
 
     @Override public void exitMode() {
         super.exitMode();
-        selectionManager.unregister(Main.map.mapView);
+        selectionManager.unregister(MainApplication.getMap().mapView);
     }
 
     @Override public String getModeHelpText() {
diff --git a/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java b/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
index ba82307..6131534 100644
--- a/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
+++ b/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
@@ -10,12 +10,12 @@ import java.util.LinkedList;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -38,13 +38,13 @@ public class AddSelectionToRelations extends AbstractRelationAction implements S
     public void actionPerformed(ActionEvent e) {
         Collection<Command> cmds = new LinkedList<>();
         for (Relation orig : relations) {
-            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, Main.getLayerManager().getEditDataSet().getSelected());
+            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getEditDataSet().getSelected());
             if (c != null) {
                 cmds.add(c);
             }
         }
         if (!cmds.isEmpty()) {
-            Main.main.undoRedo.add(new SequenceCommand(tr("Add selection to relation"), cmds));
+            MainApplication.undoRedo.add(new SequenceCommand(tr("Add selection to relation"), cmds));
             new Notification(
                     "<html>"+
                     tr("{0}Add selection to relation{1}: Verify every single relation to avoid damage!", "<strong>", "</strong>")+
diff --git a/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java b/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
index fb49dfe..5b0d852 100644
--- a/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
@@ -6,9 +6,10 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.DeleteAction;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -28,14 +29,15 @@ public class DeleteRelationsAction extends AbstractRelationAction {
     }
 
     protected void deleteRelation(Collection<Relation> toDelete) {
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (toDelete == null || layer == null)
             return;
 
         DeleteAction.deleteRelations(layer, toDelete);
         // clear selection after deletion
-        if (Main.map.relationListDialog != null)
-                Main.map.relationListDialog.selectRelations(null);
+        MapFrame map = MainApplication.getMap();
+        if (map.relationListDialog != null)
+            map.relationListDialog.selectRelations(null);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java b/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
index e14c151..513d63a 100644
--- a/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
@@ -9,6 +9,7 @@ import java.util.Collection;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -32,8 +33,8 @@ public class DownloadMembersAction extends AbstractRelationAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
-        Main.worker.submit(new DownloadRelationTask(relations, Main.getLayerManager().getEditLayer()));
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
+        MainApplication.worker.submit(new DownloadRelationTask(relations, MainApplication.getLayerManager().getEditLayer()));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java b/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
index 11699d3..b80cb6d 100644
--- a/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
@@ -11,6 +11,7 @@ import java.util.Set;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -48,11 +49,11 @@ public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAct
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
-        Main.worker.submit(new DownloadRelationMemberTask(
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
+        MainApplication.worker.submit(new DownloadRelationMemberTask(
                 relations,
                 incompleteMembers,
-                Main.getLayerManager().getEditLayer()));
+                MainApplication.getLayerManager().getEditLayer()));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java b/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java
index a17ac0a..f39fb29 100644
--- a/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java
@@ -5,8 +5,8 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -33,7 +33,7 @@ public class DuplicateRelationAction extends AbstractRelationAction {
         Relation copy = new Relation(original, true);
         copy.setModified(true);
         RelationEditor editor = RelationEditor.getEditor(
-                Main.getLayerManager().getEditLayer(),
+                MainApplication.getLayerManager().getEditLayer(),
                 copy,
                 null /* no selected members */
                 );
diff --git a/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java b/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
index aaa7117..2f2b7e8 100644
--- a/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
@@ -15,6 +15,7 @@ import org.openstreetmap.josm.Main;
 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.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -41,8 +42,8 @@ public class EditRelationAction extends AbstractRelationAction {
      */
     public static Set<RelationMember> getMembersForCurrentSelection(Relation r) {
         Set<RelationMember> members = new HashSet<>();
-        if (Main.isDisplayingMapView()) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        if (MainApplication.isDisplayingMapView()) {
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null && editLayer.data != null) {
                 Collection<OsmPrimitive> selection = editLayer.data.getSelected();
                 for (RelationMember member: r.getMembers()) {
@@ -60,8 +61,8 @@ public class EditRelationAction extends AbstractRelationAction {
      * @param toEdit The relation to edit
      */
     public static void launchEditor(Relation toEdit) {
-        if (toEdit == null || toEdit.isDeleted() || !Main.isDisplayingMapView()) return;
-        RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), toEdit,
+        if (toEdit == null || toEdit.isDeleted() || !MainApplication.isDisplayingMapView()) return;
+        RelationEditor.getEditor(MainApplication.getLayerManager().getEditLayer(), toEdit,
                 getMembersForCurrentSelection(toEdit)).setVisible(true);
     }
 
diff --git a/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java b/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
index ff90ab8..17d2e41 100644
--- a/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
@@ -17,10 +17,10 @@ import javax.swing.JPopupMenu;
 import javax.swing.KeyStroke;
 import javax.swing.plaf.basic.BasicArrowButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -48,7 +48,7 @@ public class RecentRelationsAction extends JosmAction implements CommandQueueLis
         this.editButton = editButton;
         arrow = editButton.createArrow(this);
         arrow.setToolTipText(tr("List of recent relations"));
-        Main.main.undoRedo.addCommandQueueListener(this);
+        MainApplication.undoRedo.addCommandQueueListener(this);
         enableArrow();
         shortcut = Shortcut.registerShortcut(
             "relationeditor:editrecentrelation",
@@ -57,7 +57,7 @@ public class RecentRelationsAction extends JosmAction implements CommandQueueLis
             Shortcut.SHIFT
         );
         launchAction = new LaunchEditorAction();
-        Main.registerActionShortcut(launchAction, shortcut);
+        MainApplication.registerActionShortcut(launchAction, shortcut);
     }
 
     /**
@@ -93,7 +93,7 @@ public class RecentRelationsAction extends JosmAction implements CommandQueueLis
     public static boolean isRelationListable(Relation relation) {
         return relation != null &&
             !relation.isDeleted() &&
-            Main.getLayerManager().getEditDataSet().containsRelation(relation);
+            MainApplication.getLayerManager().getEditDataSet().containsRelation(relation);
     }
 
     @Override
@@ -113,7 +113,7 @@ public class RecentRelationsAction extends JosmAction implements CommandQueueLis
 
     @Override
     public void destroy() {
-        Main.unregisterActionShortcut(launchAction, shortcut);
+        MainApplication.unregisterActionShortcut(launchAction, shortcut);
         super.destroy();
     }
 
@@ -122,9 +122,9 @@ public class RecentRelationsAction extends JosmAction implements CommandQueueLis
      * @return the list of recent relations on active layer
      */
     public static List<Relation> getRecentRelationsOnActiveLayer() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return Collections.emptyList();
-        Layer activeLayer = Main.getLayerManager().getActiveLayer();
+        Layer activeLayer = MainApplication.getLayerManager().getActiveLayer();
         if (!(activeLayer instanceof OsmDataLayer)) {
             return Collections.emptyList();
         } else {
diff --git a/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java b/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java
index 9bf3b07..be5c6db 100644
--- a/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java
@@ -5,7 +5,8 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -25,8 +26,9 @@ public class SelectInRelationListAction extends AbstractRelationAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || Main.map == null || Main.map.relationListDialog == null) return;
-        Main.map.relationListDialog.unfurlDialog();
-        Main.map.relationListDialog.selectRelations(relations);
+        MapFrame map = MainApplication.getMap();
+        if (!isEnabled() || relations.isEmpty() || map == null || map.relationListDialog == null) return;
+        map.relationListDialog.unfurlDialog();
+        map.relationListDialog.selectRelations(relations);
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java b/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
index a59109d..1931be2 100644
--- a/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
@@ -7,9 +7,9 @@ import java.awt.event.ActionEvent;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -35,16 +35,16 @@ public class SelectMembersAction extends AbstractRelationAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
+        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
 
         Set<OsmPrimitive> members = new HashSet<>();
         for (Relation r: relations) {
             members.addAll(r.getMemberPrimitivesList());
         }
         if (add) {
-            Main.getLayerManager().getEditLayer().data.addSelected(members);
+            MainApplication.getLayerManager().getEditLayer().data.addSelected(members);
         } else {
-            Main.getLayerManager().getEditLayer().data.setSelected(members);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(members);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java b/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java
index c55715c..62e578e 100644
--- a/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java
@@ -5,7 +5,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -33,7 +33,7 @@ public class SelectRelationAction extends AbstractRelationAction {
     @Override
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled() || relations.isEmpty()) return;
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer == null || editLayer.data == null) return;
         if (add) {
             editLayer.data.addSelected(relations);
diff --git a/src/org/openstreetmap/josm/actions/search/InView.java b/src/org/openstreetmap/josm/actions/search/InView.java
new file mode 100644
index 0000000..230f2a2
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/search/InView.java
@@ -0,0 +1,34 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.search;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.InArea;
+import org.openstreetmap.josm.gui.MainApplication;
+
+/**
+ * Matches objects within current map view.
+ * @since 12662 (extracted from {@code SearchCompiler})
+ */
+class InView extends InArea {
+
+    InView(boolean all) {
+        super(all);
+    }
+
+    @Override
+    protected Collection<Bounds> getBounds(OsmPrimitive primitive) {
+        if (!MainApplication.isDisplayingMapView()) {
+            return null;
+        }
+        return Collections.singleton(MainApplication.getMap().mapView.getRealBounds());
+    }
+
+    @Override
+    public String toString() {
+        return all ? "allinview" : "inview";
+    }
+}
diff --git a/src/org/openstreetmap/josm/actions/search/SearchAction.java b/src/org/openstreetmap/josm/actions/search/SearchAction.java
index 24055c4..9ff8b39 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchAction.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchAction.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.actions.search;
 
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trc;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Cursor;
@@ -24,7 +23,6 @@ import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.function.Predicate;
 
@@ -42,15 +40,22 @@ import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ActionParameter;
-import org.openstreetmap.josm.actions.ActionParameter.SearchSettingsActionParameter;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.ParameterizedAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Filter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.search.PushbackTokenizer;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.SimpleMatchFactory;
+import org.openstreetmap.josm.data.osm.search.SearchMode;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSException;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
@@ -62,6 +67,7 @@ import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -83,49 +89,27 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
 
     private static final String SEARCH_EXPRESSION = "searchExpression";
 
-    /**
-     * Search mode.
-     */
-    public enum SearchMode {
-        /** replace selection */
-        replace('R'),
-        /** add to selection */
-        add('A'),
-        /** remove from selection */
-        remove('D'),
-        /** find in selection */
-        in_selection('S');
-
-        private final char code;
-
-        SearchMode(char code) {
-            this.code = code;
-        }
-
-        /**
-         * Returns the unique character code of this mode.
-         * @return the unique character code of this mode
-         */
-        public char getCode() {
-            return code;
-        }
+    private static final LinkedList<SearchSetting> searchHistory = new LinkedList<>();
+    static {
+        SearchCompiler.addMatchFactory(new SimpleMatchFactory() {
+            @Override
+            public Collection<String> getKeywords() {
+                return Arrays.asList("inview", "allinview");
+            }
 
-        /**
-         * Returns the search mode matching the given character code.
-         * @param code character code
-         * @return search mode matching the given character code
-         */
-        public static SearchMode fromCode(char code) {
-            for (SearchMode mode: values()) {
-                if (mode.getCode() == code)
-                    return mode;
+            @Override
+            public Match get(String keyword, boolean caseSensitive, boolean regexSearch, PushbackTokenizer tokenizer) throws SearchParseError {
+                switch(keyword) {
+                case "inview":
+                    return new InView(false);
+                case "allinview":
+                    return new InView(true);
+                default:
+                    throw new IllegalStateException("Not expecting keyword " + keyword);
+                }
             }
-            return null;
-        }
-    }
+        });
 
-    private static final LinkedList<SearchSetting> searchHistory = new LinkedList<>();
-    static {
         for (String s: Main.pref.getCollection("search.history", Collections.<String>emptyList())) {
             SearchSetting ss = SearchSetting.readFromString(s);
             if (ss != null) {
@@ -377,7 +361,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                     ss.mapCSSSearch = mapCSSSearch.isSelected();
                     SearchCompiler.compile(ss);
                     return true;
-                } catch (ParseError | MapCSSException e) {
+                } catch (SearchParseError | MapCSSException e) {
                     return false;
                 }
             }
@@ -415,8 +399,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                         ss.mapCSSSearch = mapCSSSearch.isSelected();
                         SearchCompiler.compile(ss);
                         super.buttonAction(buttonIndex, evt);
-                    } catch (ParseError e) {
-                        Main.debug(e);
+                    } catch (SearchParseError e) {
+                        Logging.debug(e);
                         JOptionPane.showMessageDialog(
                                 Main.parent,
                                 tr("Search expression is not valid: \n\n {0}", e.getMessage()),
@@ -442,18 +426,18 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         initialValues.mapCSSSearch = mapCSSSearch.isSelected();
 
         if (inSelection.isSelected()) {
-            initialValues.mode = SearchAction.SearchMode.in_selection;
+            initialValues.mode = SearchMode.in_selection;
         } else if (replace.isSelected()) {
-            initialValues.mode = SearchAction.SearchMode.replace;
+            initialValues.mode = SearchMode.replace;
         } else if (add.isSelected()) {
-            initialValues.mode = SearchAction.SearchMode.add;
+            initialValues.mode = SearchMode.add;
         } else {
-            initialValues.mode = SearchAction.SearchMode.remove;
+            initialValues.mode = SearchMode.remove;
         }
 
         if (addOnToolbar.isSelected()) {
             ToolbarPreferences.ActionDefinition aDef =
-                    new ToolbarPreferences.ActionDefinition(Main.main.menu.search);
+                    new ToolbarPreferences.ActionDefinition(MainApplication.getMenu().search);
             aDef.getParameters().put(SEARCH_EXPRESSION, initialValues);
             // Display search expression as tooltip instead of generic one
             aDef.setName(Utils.shortenString(initialValues.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY));
@@ -462,7 +446,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
             String res = actionParser.saveAction(aDef);
 
             // add custom search button to toolbar preferences
-            Main.toolbar.addCustomButton(res, -1, false);
+            MainApplication.getToolbar().addCustomButton(res, -1, false);
         }
 
         return initialValues;
@@ -695,6 +679,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         @Override
         public void receiveSearchResult(DataSet ds, Collection<OsmPrimitive> result, int foundMatches, SearchSetting setting) {
             ds.setSelected(result);
+            MapFrame map = MainApplication.getMap();
             if (foundMatches == 0) {
                 final String msg;
                 final String text = Utils.shortenString(setting.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY);
@@ -709,8 +694,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                 } else {
                     msg = null;
                 }
-                if (Main.map != null) {
-                    Main.map.statusLine.setHelpText(msg);
+                if (map != null) {
+                    map.statusLine.setHelpText(msg);
                 }
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(
@@ -721,7 +706,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                     );
                 }
             } else {
-                Main.map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
+                map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
             }
         }
     }
@@ -760,7 +745,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         }
 
         static SearchTask newSearchTask(SearchSetting setting, SearchReceiver resultReceiver) {
-            final DataSet ds = Main.getLayerManager().getEditDataSet();
+            final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             return newSearchTask(setting, ds, resultReceiver);
         }
 
@@ -824,8 +809,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                     subMonitor.worked(1);
                 }
                 subMonitor.finishTask();
-            } catch (ParseError e) {
-                Main.debug(e);
+            } catch (SearchParseError e) {
+                Logging.debug(e);
                 JOptionPane.showMessageDialog(
                         Main.parent,
                         e.getMessage(),
@@ -845,155 +830,34 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
     }
 
     /**
-     * This class defines a set of parameters that is used to
-     * perform search within the search dialog.
+     * {@link ActionParameter} implementation with {@link SearchSetting} as value type.
+     * @since 12547 (moved from {@link ActionParameter})
      */
-    public static class SearchSetting {
-        public String text;
-        public SearchMode mode;
-        public boolean caseSensitive;
-        public boolean regexSearch;
-        public boolean mapCSSSearch;
-        public boolean allElements;
-
-        /**
-         * Constructs a new {@code SearchSetting}.
-         */
-        public SearchSetting() {
-            text = "";
-            mode = SearchMode.replace;
-        }
+    public static class SearchSettingsActionParameter extends ActionParameter<SearchSetting> {
 
         /**
-         * Constructs a new {@code SearchSetting} from an existing one.
-         * @param original original search settings
+         * Constructs a new {@code SearchSettingsActionParameter}.
+         * @param name parameter name (the key)
          */
-        public SearchSetting(SearchSetting original) {
-            text = original.text;
-            mode = original.mode;
-            caseSensitive = original.caseSensitive;
-            regexSearch = original.regexSearch;
-            mapCSSSearch = original.mapCSSSearch;
-            allElements = original.allElements;
+        public SearchSettingsActionParameter(String name) {
+            super(name);
         }
 
         @Override
-        public String toString() {
-            String cs = caseSensitive ?
-                    /*case sensitive*/  trc("search", "CS") :
-                        /*case insensitive*/  trc("search", "CI");
-            String rx = regexSearch ? ", " +
-                            /*regex search*/ trc("search", "RX") : "";
-            String css = mapCSSSearch ? ", " +
-                            /*MapCSS search*/ trc("search", "CSS") : "";
-            String all = allElements ? ", " +
-                            /*all elements*/ trc("search", "A") : "";
-            return '"' + text + "\" (" + cs + rx + css + all + ", " + mode + ')';
+        public Class<SearchSetting> getType() {
+            return SearchSetting.class;
         }
 
         @Override
-        public boolean equals(Object other) {
-            if (this == other) return true;
-            if (other == null || getClass() != other.getClass()) return false;
-            SearchSetting that = (SearchSetting) other;
-            return caseSensitive == that.caseSensitive &&
-                    regexSearch == that.regexSearch &&
-                    mapCSSSearch == that.mapCSSSearch &&
-                    allElements == that.allElements &&
-                    mode == that.mode &&
-                    Objects.equals(text, that.text);
+        public SearchSetting readFromString(String s) {
+            return SearchSetting.readFromString(s);
         }
 
         @Override
-        public int hashCode() {
-            return Objects.hash(text, mode, caseSensitive, regexSearch, mapCSSSearch, allElements);
-        }
-
-        /**
-         * <p>Transforms a string following a certain format, namely "[R | A | D | S][C?,R?,A?,M?] [a-zA-Z]"
-         * where the first part defines the mode of the search, see {@link SearchMode}, the second defines
-         * a set of attributes within the {@code SearchSetting} class and the second is the search query.
-         * <p>
-         * Attributes are as follows:
-         * <ul>
-         *     <li>C - if search is case sensitive
-         *     <li>R - if the regex syntax is used
-         *     <li>A - if all objects are considered
-         *     <li>M - if the mapCSS syntax is used
-         * </ul>
-         * <p>For example, "RC type:node" is a valid string representation of an object that replaces the
-         * current selection, is case sensitive and searches for all objects of type node.
-         * @param s A string representation of a {@code SearchSetting} object
-         *          from which the object must be built.
-         * @return A {@code SearchSetting} defined by the input string.
-         */
-        public static SearchSetting readFromString(String s) {
-            if (s.isEmpty())
-                return null;
-
-            SearchSetting result = new SearchSetting();
-
-            int index = 1;
-
-            result.mode = SearchMode.fromCode(s.charAt(0));
-            if (result.mode == null) {
-                result.mode = SearchMode.replace;
-                index = 0;
-            }
-
-            while (index < s.length()) {
-                if (s.charAt(index) == 'C') {
-                    result.caseSensitive = true;
-                } else if (s.charAt(index) == 'R') {
-                    result.regexSearch = true;
-                } else if (s.charAt(index) == 'A') {
-                    result.allElements = true;
-                } else if (s.charAt(index) == 'M') {
-                    result.mapCSSSearch = true;
-                } else if (s.charAt(index) == ' ') {
-                    break;
-                } else {
-                    Main.warn("Unknown char in SearchSettings: " + s);
-                    break;
-                }
-                index++;
-            }
-
-            if (index < s.length() && s.charAt(index) == ' ') {
-                index++;
-            }
-
-            result.text = s.substring(index);
-
-            return result;
-        }
-
-        /**
-         * Builds a string representation of the {@code SearchSetting} object,
-         * see {@link #readFromString(String)} for more details.
-         * @return A string representation of the {@code SearchSetting} object.
-         */
-        public String writeToString() {
-            if (text == null || text.isEmpty())
+        public String writeToString(SearchSetting value) {
+            if (value == null)
                 return "";
-
-            StringBuilder result = new StringBuilder();
-            result.append(mode.getCode());
-            if (caseSensitive) {
-                result.append('C');
-            }
-            if (regexSearch) {
-                result.append('R');
-            }
-            if (mapCSSSearch) {
-                result.append('M');
-            }
-            if (allElements) {
-                result.append('A');
-            }
-            result.append(' ')
-                  .append(text);
-            return result.toString();
+            return value.writeToString();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java b/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
index d487363..dfb235c 100644
--- a/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
@@ -13,12 +13,18 @@ import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
+import org.openstreetmap.josm.tools.Logging;
 
+/**
+ * Checks certain basic conditions, that are listed in the OSM API
+ * {@link org.openstreetmap.josm.io.Capabilities}.
+ */
 public class ApiPreconditionCheckerHook implements UploadHook {
 
     @Override
@@ -41,7 +47,7 @@ public class ApiPreconditionCheckerHook implements UploadHook {
                     return false;
             }
         } catch (OsmTransferCanceledException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return false;
         } catch (OsmApiInitializationException e) {
             ExceptionDialogUtil.explainOsmTransferException(e);
@@ -57,7 +63,7 @@ public class ApiPreconditionCheckerHook implements UploadHook {
                 if (key.length() > 255) {
                     if (osmPrimitive.isDeleted()) {
                         // if OsmPrimitive is going to be deleted we automatically shorten the value
-                        Main.warn(
+                        Logging.warn(
                                 tr("Automatically truncating value of tag ''{0}'' on deleted object {1}",
                                         key,
                                         Long.toString(osmPrimitive.getId())
@@ -73,7 +79,7 @@ public class ApiPreconditionCheckerHook implements UploadHook {
                             tr("Precondition Violation"),
                             JOptionPane.ERROR_MESSAGE
                     );
-                    Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
+                    MainApplication.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                     return false;
                 }
             }
@@ -90,7 +96,7 @@ public class ApiPreconditionCheckerHook implements UploadHook {
                         tr("API Capabilities Violation"),
                         JOptionPane.ERROR_MESSAGE
                 );
-                Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
+                MainApplication.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                 return false;
             }
         }
diff --git a/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java b/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java
index e731142..966734f 100644
--- a/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java
@@ -9,11 +9,11 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * Removes discardable tags such as created_by from all modified objects before upload
@@ -43,7 +43,7 @@ public class DiscardTagsHook implements UploadHook {
 
             SequenceCommand removeKeys = new SequenceCommand(tr("Removed obsolete tags"),
                     new ChangePropertyCommand(objectsToUpload, map));
-            Main.main.undoRedo.add(removeKeys);
+            MainApplication.undoRedo.add(removeKeys);
         }
         return true;
     }
diff --git a/src/org/openstreetmap/josm/actions/upload/FixDataHook.java b/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
index 5dc2b73..f1618e3 100644
--- a/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * Fixes defective data entries for all modified objects before upload
@@ -203,7 +204,7 @@ public class FixDataHook implements UploadHook {
             }
 
             if (!cmds.isEmpty()) {
-                Main.main.undoRedo.add(new SequenceCommand(tr("Fix deprecated tags"), cmds));
+                MainApplication.undoRedo.add(new SequenceCommand(tr("Fix deprecated tags"), cmds));
             }
         }
         return true;
diff --git a/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java b/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
index 6fe0683..3036e33 100644
--- a/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
@@ -17,10 +17,11 @@ import javax.swing.table.DefaultTableModel;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 
 /**
  * This upload hook reorders the list of new relations to upload such that child
diff --git a/src/org/openstreetmap/josm/actions/upload/UploadHook.java b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
index 11301d7..5ef6488 100644
--- a/src/org/openstreetmap/josm/actions/upload/UploadHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
@@ -3,6 +3,11 @@ package org.openstreetmap.josm.actions.upload;
 
 import org.openstreetmap.josm.data.APIDataSet;
 
+/**
+ * A check right before the upload. The UploadHook may modify the uploaded data
+ * silently, it may display a warning message to the user or prevent the upload
+ * altogether.
+ */
 @FunctionalInterface
 public interface UploadHook {
 
diff --git a/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java b/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
index b9a3bf2..e57037c 100644
--- a/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
+++ b/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
@@ -9,15 +9,16 @@ import java.util.Map;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -34,7 +35,7 @@ public class UploadNotesTask {
      */
     public void uploadNotes(NoteData noteData, ProgressMonitor progressMonitor) {
         this.noteData = noteData;
-        Main.worker.submit(new UploadTask(tr("Uploading modified notes"), progressMonitor));
+        MainApplication.worker.submit(new UploadTask(tr("Uploading modified notes"), progressMonitor));
     }
 
     private class UploadTask extends PleaseWaitRunnable {
@@ -54,9 +55,7 @@ public class UploadNotesTask {
 
         @Override
         protected void cancel() {
-            if (Main.isDebugEnabled()) {
-                Main.debug("note upload canceled");
-            }
+            Logging.debug("note upload canceled");
             isCanceled = true;
         }
 
@@ -66,14 +65,12 @@ public class UploadNotesTask {
             OsmApi api = OsmApi.getOsmApi();
             for (Note note : noteData.getNotes()) {
                 if (isCanceled) {
-                    Main.info("Note upload interrupted by user");
+                    Logging.info("Note upload interrupted by user");
                     break;
                 }
                 for (NoteComment comment : note.getComments()) {
                     if (comment.isNew()) {
-                        if (Main.isDebugEnabled()) {
-                            Main.debug("found note change to upload");
-                        }
+                        Logging.debug("found note change to upload");
                         processNoteComment(monitor, api, note, comment);
                     }
                 }
@@ -89,27 +86,19 @@ public class UploadNotesTask {
                 Note newNote;
                 switch (comment.getNoteAction()) {
                 case OPENED:
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("opening new note");
-                    }
+                    Logging.debug("opening new note");
                     newNote = api.createNote(note.getLatLon(), comment.getText(), monitor);
                     break;
                 case CLOSED:
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("closing note " + note.getId());
-                    }
+                    Logging.debug("closing note {0}", note.getId());
                     newNote = api.closeNote(note, comment.getText(), monitor);
                     break;
                 case COMMENTED:
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("adding comment to note " + note.getId());
-                    }
+                    Logging.debug("adding comment to note {0}", note.getId());
                     newNote = api.addCommentToNote(note, comment.getText(), monitor);
                     break;
                 case REOPENED:
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("reopening note " + note.getId());
-                    }
+                    Logging.debug("reopening note {0}", note.getId());
                     newNote = api.reopenNote(note, comment.getText(), monitor);
                     break;
                 default:
@@ -117,8 +106,8 @@ public class UploadNotesTask {
                 }
                 updatedNotes.put(note, newNote);
             } catch (OsmTransferException e) {
-                Main.error("Failed to upload note to server: " + note.getId());
-                Main.error(e);
+                Logging.error("Failed to upload note to server: {0}", note.getId());
+                Logging.error(e);
                 failedNotes.put(note, e);
             }
         }
@@ -126,18 +115,19 @@ public class UploadNotesTask {
         /** Updates the note layer with uploaded notes and notifies the user of any upload failures */
         @Override
         protected void finish() {
-            if (Main.isDebugEnabled()) {
-                Main.debug("finish called in notes upload task. Notes to update: " + updatedNotes.size());
+            if (Logging.isDebugEnabled()) {
+                Logging.debug("finish called in notes upload task. Notes to update: {0}", updatedNotes.size());
             }
             noteData.updateNotes(updatedNotes);
             if (!failedNotes.isEmpty()) {
                 StringBuilder sb = new StringBuilder();
                 for (Map.Entry<Note, Exception> entry : failedNotes.entrySet()) {
-                    sb.append(tr("Note {0} failed: {1}", entry.getKey().getId(), entry.getValue().getMessage()));
-                    sb.append('\n');
+                    sb.append(tr("Note {0} failed: {1}", entry.getKey().getId(), entry.getValue().getMessage()))
+                      .append('\n');
                 }
-                Main.error("Notes failed to upload: " + sb.toString());
-                JOptionPane.showMessageDialog(Main.map, sb.toString(), tr("Notes failed to upload"), JOptionPane.ERROR_MESSAGE);
+                Logging.error("Notes failed to upload: " + sb.toString());
+                JOptionPane.showMessageDialog(MainApplication.getMap(), sb.toString(),
+                        tr("Notes failed to upload"), JOptionPane.ERROR_MESSAGE);
                 ExceptionDialogUtil.explainException(failedNotes.values().iterator().next());
             }
         }
diff --git a/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java b/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
index 06b29d2..c8d4f65 100644
--- a/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
@@ -15,16 +15,18 @@ import javax.swing.JScrollPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.AggregatePrimitivesVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.dialogs.validator.ValidatorTreePanel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.ValidatorLayer;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -61,7 +63,7 @@ public class ValidateUploadHook implements UploadHook {
             test.startTest(null);
             test.visit(selection);
             test.endTest();
-            if (ValidatorPreference.PREF_OTHER.get() && ValidatorPreference.PREF_OTHER_UPLOAD.get()) {
+            if (ValidatorPrefHelper.PREF_OTHER.get() && ValidatorPrefHelper.PREF_OTHER_UPLOAD.get()) {
                 errors.addAll(test.getErrors());
             } else {
                 for (TestError e : test.getErrors()) {
@@ -71,18 +73,19 @@ public class ValidateUploadHook implements UploadHook {
                 }
             }
         }
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.validationErrors.clear();
             editLayer.validationErrors.addAll(errors);
         }
-        if (Main.map != null) {
-            Main.map.validatorDialog.tree.setErrors(errors);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.validatorDialog.tree.setErrors(errors);
         }
         if (errors.isEmpty())
             return true;
 
-        if (ValidatorPreference.PREF_USE_IGNORE.get()) {
+        if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
             int nume = 0;
             for (TestError error : errors) {
                 List<String> s = new ArrayList<>();
@@ -147,8 +150,8 @@ public class ValidateUploadHook implements UploadHook {
         if (ed.showDialog().getValue() != 1) {
             OsmValidator.initializeTests();
             OsmValidator.initializeErrorLayer();
-            Main.map.validatorDialog.unfurlDialog();
-            Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+            MainApplication.getMap().validatorDialog.unfurlDialog();
+            MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
             return false;
         }
         return true;
diff --git a/src/org/openstreetmap/josm/command/AddCommand.java b/src/org/openstreetmap/josm/command/AddCommand.java
index 9f4ee6b..8c107aa 100644
--- a/src/org/openstreetmap/josm/command/AddCommand.java
+++ b/src/org/openstreetmap/josm/command/AddCommand.java
@@ -11,10 +11,10 @@ import java.util.Objects;
 import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
diff --git a/src/org/openstreetmap/josm/command/ChangeCommand.java b/src/org/openstreetmap/josm/command/ChangeCommand.java
index 38bd44a..f59e498 100644
--- a/src/org/openstreetmap/josm/command/ChangeCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangeCommand.java
@@ -10,10 +10,10 @@ import java.util.Objects;
 import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
diff --git a/src/org/openstreetmap/josm/command/ChangeNodesCommand.java b/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
index ca60540..58eef21 100644
--- a/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
@@ -9,11 +9,11 @@ import java.util.Objects;
 
 import javax.swing.Icon;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
index bfe9eee..fdc7756 100644
--- a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
@@ -18,9 +18,9 @@ import java.util.stream.Collectors;
 import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
 
diff --git a/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java b/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
index ad16974..1621de0 100644
--- a/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
@@ -9,11 +9,11 @@ import java.util.Objects;
 import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/command/Command.java b/src/org/openstreetmap/josm/command/Command.java
index e5a0e88..5b1ae5c 100644
--- a/src/org/openstreetmap/josm/command/Command.java
+++ b/src/org/openstreetmap/josm/command/Command.java
@@ -24,6 +24,7 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -143,7 +144,7 @@ public abstract class Command implements PseudoCommand {
      * Creates a new command in the context of the current edit layer, if any
      */
     public Command() {
-        this.layer = Main.getLayerManager().getEditLayer();
+        this.layer = MainApplication.getLayerManager().getEditLayer();
         this.data = layer != null ? layer.data : null;
     }
 
diff --git a/src/org/openstreetmap/josm/command/DeleteCommand.java b/src/org/openstreetmap/josm/command/DeleteCommand.java
index b8c93c6..1b6a682 100644
--- a/src/org/openstreetmap/josm/command/DeleteCommand.java
+++ b/src/org/openstreetmap/josm/command/DeleteCommand.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SplitWayAction;
 import org.openstreetmap.josm.actions.SplitWayAction.SplitWayResult;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -37,7 +38,6 @@ import org.openstreetmap.josm.data.osm.RelationToChildReference;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.dialogs.DeleteFromRelationConfirmationDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
diff --git a/src/org/openstreetmap/josm/command/PurgeCommand.java b/src/org/openstreetmap/josm/command/PurgeCommand.java
index d36b8e3..a345165 100644
--- a/src/org/openstreetmap/josm/command/PurgeCommand.java
+++ b/src/org/openstreetmap/josm/command/PurgeCommand.java
@@ -15,6 +15,7 @@ import java.util.Set;
 
 import javax.swing.Icon;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -25,6 +26,7 @@ import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationData;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Storage;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WayData;
@@ -100,9 +102,9 @@ public class PurgeCommand extends Command {
         getAffectedDataSet().beginUpdate();
         try {
             purgedConflicts.get().clear();
-            /**
-             * Loop from back to front to keep referential integrity.
-             */
+            // unselect primitives in advance to not fire a selection change for every one of them
+            getAffectedDataSet().clearSelection(toPurge);
+            // Loop from back to front to keep referential integrity.
             for (int i = toPurge.size()-1; i >= 0; --i) {
                 OsmPrimitive osm = toPurge.get(i);
                 if (makeIncompleteDataByPrimId.containsKey(osm)) {
@@ -121,12 +123,10 @@ public class PurgeCommand extends Command {
                     osm.load(empty);
                 } else {
                     getAffectedDataSet().removePrimitive(osm);
-                    if (getLayer() != null) {
-                        Conflict<?> conflict = getLayer().getConflicts().getConflictForMy(osm);
-                        if (conflict != null) {
-                            purgedConflicts.add(conflict);
-                            getLayer().getConflicts().remove(conflict);
-                        }
+                    Conflict<?> conflict = getAffectedDataSet().getConflicts().getConflictForMy(osm);
+                    if (conflict != null) {
+                        purgedConflicts.add(conflict);
+                        getAffectedDataSet().getConflicts().remove(conflict);
                     }
                 }
             }
@@ -156,7 +156,7 @@ public class PurgeCommand extends Command {
         }
 
         for (Conflict<?> conflict : purgedConflicts) {
-            getLayer().getConflicts().add(conflict);
+            getAffectedDataSet().getConflicts().add(conflict);
         }
     }
 
@@ -310,4 +310,128 @@ public class PurgeCommand extends Command {
                 Objects.equals(makeIncompleteDataByPrimId, that.makeIncompleteDataByPrimId) &&
                 Objects.equals(purgedConflicts, that.purgedConflicts);
     }
+
+    /**
+     * Creates a new {@code PurgeCommand} to purge selected OSM primitives.
+     * @param layer optional osm data layer, can be null
+     * @param sel selected OSM primitives
+     * @param toPurgeAdditionally optional list that will be filled with primitives to be purged that have not been in the selection
+     * @return command to purge selected OSM primitives
+     * @since 12688
+     */
+    public static PurgeCommand build(OsmDataLayer layer, Collection<OsmPrimitive> sel, List<OsmPrimitive> toPurgeAdditionally) {
+        Set<OsmPrimitive> toPurge = new HashSet<>(sel);
+        // finally, contains all objects that are purged
+        Set<OsmPrimitive> toPurgeChecked = new HashSet<>();
+
+        // Add referrer, unless the object to purge is not new and the parent is a relation
+        Set<OsmPrimitive> toPurgeRecursive = new HashSet<>();
+        while (!toPurge.isEmpty()) {
+
+            for (OsmPrimitive osm: toPurge) {
+                for (OsmPrimitive parent: osm.getReferrers()) {
+                    if (toPurge.contains(parent) || toPurgeChecked.contains(parent) || toPurgeRecursive.contains(parent)) {
+                        continue;
+                    }
+                    if (parent instanceof Way || (parent instanceof Relation && osm.isNew())) {
+                        if (toPurgeAdditionally != null) {
+                            toPurgeAdditionally.add(parent);
+                        }
+                        toPurgeRecursive.add(parent);
+                    }
+                }
+                toPurgeChecked.add(osm);
+            }
+            toPurge = toPurgeRecursive;
+            toPurgeRecursive = new HashSet<>();
+        }
+
+        // Subset of toPurgeChecked. Marks primitives that remain in the dataset, but incomplete.
+        Set<OsmPrimitive> makeIncomplete = new HashSet<>();
+
+        // Find the objects that will be incomplete after purging.
+        // At this point, all parents of new to-be-purged primitives are
+        // also to-be-purged and
+        // all parents of not-new to-be-purged primitives are either
+        // to-be-purged or of type relation.
+        TOP:
+            for (OsmPrimitive child : toPurgeChecked) {
+                if (child.isNew()) {
+                    continue;
+                }
+                for (OsmPrimitive parent : child.getReferrers()) {
+                    if (parent instanceof Relation && !toPurgeChecked.contains(parent)) {
+                        makeIncomplete.add(child);
+                        continue TOP;
+                    }
+                }
+            }
+
+        // Add untagged way nodes. Do not add nodes that have other referrers not yet to-be-purged.
+        if (Main.pref.getBoolean("purge.add_untagged_waynodes", true)) {
+            Set<OsmPrimitive> wayNodes = new HashSet<>();
+            for (OsmPrimitive osm : toPurgeChecked) {
+                if (osm instanceof Way) {
+                    Way w = (Way) osm;
+                    NODE:
+                        for (Node n : w.getNodes()) {
+                            if (n.isTagged() || toPurgeChecked.contains(n)) {
+                                continue;
+                            }
+                            for (OsmPrimitive ref : n.getReferrers()) {
+                                if (ref != w && !toPurgeChecked.contains(ref)) {
+                                    continue NODE;
+                                }
+                            }
+                            wayNodes.add(n);
+                        }
+                }
+            }
+            toPurgeChecked.addAll(wayNodes);
+            if (toPurgeAdditionally != null) {
+                toPurgeAdditionally.addAll(wayNodes);
+            }
+        }
+
+        if (Main.pref.getBoolean("purge.add_relations_with_only_incomplete_members", true)) {
+            Set<Relation> relSet = new HashSet<>();
+            for (OsmPrimitive osm : toPurgeChecked) {
+                for (OsmPrimitive parent : osm.getReferrers()) {
+                    if (parent instanceof Relation
+                            && !(toPurgeChecked.contains(parent))
+                            && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relSet)) {
+                        relSet.add((Relation) parent);
+                    }
+                }
+            }
+
+            // Add higher level relations (list gets extended while looping over it)
+            List<Relation> relLst = new ArrayList<>(relSet);
+            for (int i = 0; i < relLst.size(); ++i) { // foreach loop not applicable since list gets extended while looping over it
+                for (OsmPrimitive parent : relLst.get(i).getReferrers()) {
+                    if (!(toPurgeChecked.contains(parent))
+                            && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relLst)) {
+                        relLst.add((Relation) parent);
+                    }
+                }
+            }
+            relSet = new HashSet<>(relLst);
+            toPurgeChecked.addAll(relSet);
+            if (toPurgeAdditionally != null) {
+                toPurgeAdditionally.addAll(relSet);
+            }
+        }
+
+        return layer != null ? new PurgeCommand(layer, toPurgeChecked, makeIncomplete)
+                : new PurgeCommand(toPurgeChecked.iterator().next().getDataSet(), toPurgeChecked, makeIncomplete);
+    }
+
+    private static boolean hasOnlyIncompleteMembers(
+            Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) {
+        for (RelationMember m : r.getMembers()) {
+            if (!m.getMember().isIncomplete() && !toPurge.contains(m.getMember()) && !moreToPurge.contains(m.getMember()))
+                return false;
+        }
+        return true;
+    }
 }
diff --git a/src/org/openstreetmap/josm/command/RemoveNodesCommand.java b/src/org/openstreetmap/josm/command/RemoveNodesCommand.java
index 8033e60..a947393 100644
--- a/src/org/openstreetmap/josm/command/RemoveNodesCommand.java
+++ b/src/org/openstreetmap/josm/command/RemoveNodesCommand.java
@@ -11,11 +11,11 @@ import java.util.Set;
 
 import javax.swing.Icon;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/command/ScaleCommand.java b/src/org/openstreetmap/josm/command/ScaleCommand.java
index a72c46d..88f117a 100644
--- a/src/org/openstreetmap/josm/command/ScaleCommand.java
+++ b/src/org/openstreetmap/josm/command/ScaleCommand.java
@@ -10,6 +10,10 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 
+/**
+ * Command, to scale a given set of primitives.
+ * The relative distance of the nodes will be increased/decreased.
+ */
 public class ScaleCommand extends TransformNodesCommand {
     /**
      * Pivot point
diff --git a/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java b/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
index 5c07adb..8263b59 100644
--- a/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
@@ -12,10 +12,13 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -35,6 +38,17 @@ public class ConflictAddCommand extends Command {
         this.conflict = conflict;
     }
 
+    /**
+     * Constructs a new {@code ConflictAddCommand}.
+     * @param ds the data set. Must not be null.
+     * @param conflict the conflict to add
+     * @since 12672
+     */
+    public ConflictAddCommand(DataSet ds, Conflict<? extends OsmPrimitive> conflict) {
+        super(ds);
+        this.conflict = conflict;
+    }
+
     protected void warnBecauseOfDoubleConflict() {
         JOptionPane.showMessageDialog(
                 Main.parent,
@@ -52,9 +66,9 @@ public class ConflictAddCommand extends Command {
     @Override
     public boolean executeCommand() {
         try {
-            getLayer().getConflicts().add(conflict);
+            getAffectedDataSet().getConflicts().add(conflict);
         } catch (IllegalStateException e) {
-            Main.error(e);
+            Logging.error(e);
             warnBecauseOfDoubleConflict();
         }
         return true;
@@ -62,14 +76,14 @@ public class ConflictAddCommand extends Command {
 
     @Override
     public void undoCommand() {
-        if (Main.isDisplayingMapView() && !Main.getLayerManager().containsLayer(getLayer())) {
-            Main.warn(tr("Layer ''{0}'' does not exist any more. Cannot remove conflict for object ''{1}''.",
+        if (MainApplication.isDisplayingMapView() && !MainApplication.getLayerManager().containsLayer(getLayer())) {
+            Logging.warn(tr("Layer ''{0}'' does not exist any more. Cannot remove conflict for object ''{1}''.",
                     getLayer().getName(),
                     conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance())
             ));
             return;
         }
-        getLayer().getConflicts().remove(conflict);
+        getAffectedDataSet().getConflicts().remove(conflict);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
index 5f21a57..3c6c4e0 100644
--- a/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
@@ -5,11 +5,13 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is the common base class for {@link Command}s which manipulate {@link Conflict}s in
@@ -57,10 +59,10 @@ public abstract class ConflictResolveCommand extends Command {
      *
      */
     protected void reconstituteConflicts() {
-        OsmDataLayer editLayer = getLayer();
+        DataSet ds = getAffectedDataSet();
         for (Conflict<?> c : resolvedConflicts) {
-            if (!editLayer.getConflicts().hasConflictForMy(c.getMy())) {
-                editLayer.getConflicts().add(c);
+            if (!ds.getConflicts().hasConflictForMy(c.getMy())) {
+                ds.getConflicts().add(c);
             }
         }
     }
@@ -69,16 +71,16 @@ public abstract class ConflictResolveCommand extends Command {
     public void undoCommand() {
         super.undoCommand();
 
-        if (Main.isDisplayingMapView()) {
-            if (!Main.getLayerManager().containsLayer(getLayer())) {
-                Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
+        if (MainApplication.isDisplayingMapView()) {
+            if (!MainApplication.getLayerManager().containsLayer(getLayer())) {
+                Logging.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                         this.toString(),
                         getLayer().toString()
                 ));
                 return;
             }
 
-            Main.getLayerManager().setActiveLayer(getLayer());
+            MainApplication.getLayerManager().setActiveLayer(getLayer());
         }
         reconstituteConflicts();
     }
diff --git a/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
index a05ca34..c127d99 100644
--- a/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
@@ -54,7 +54,7 @@ public class ModifiedConflictResolveCommand extends ConflictResolveCommand {
         if (!conflict.getMy().isNew() && conflict.getMy().hasEqualSemanticAttributes(conflict.getTheir())) {
             conflict.getMy().setModified(conflict.getTheir().isModified());
         }
-        getLayer().getConflicts().remove(conflict);
+        getAffectedDataSet().getConflicts().remove(conflict);
         rememberConflict(conflict);
         return true;
     }
diff --git a/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java b/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java
index 5835b78..154db86 100644
--- a/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommand.java
@@ -9,13 +9,15 @@ import java.util.Objects;
 
 import javax.swing.Icon;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
+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.RelationMember;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Represents the resolution of conflicts in the member list of two {@link Relation}s.
@@ -70,16 +72,16 @@ public class RelationMemberConflictResolverCommand extends ConflictResolveComman
     @Override
     public void undoCommand() {
         OsmDataLayer layer = getLayer();
-        if (!Main.getLayerManager().containsLayer(layer)) {
-            Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
+        if (!MainApplication.getLayerManager().containsLayer(layer)) {
+            Logging.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
                     this.toString(),
                     layer.toString()
             ));
             return;
         }
 
-        Main.getLayerManager().setActiveLayer(layer);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().setActiveLayer(layer);
+        DataSet editDs = MainApplication.getLayerManager().getEditDataSet();
 
         // restore the former state
         //
@@ -87,8 +89,8 @@ public class RelationMemberConflictResolverCommand extends ConflictResolveComman
 
         // restore a conflict if necessary
         //
-        if (!editLayer.getConflicts().hasConflictForMy(conflict.getMy())) {
-            editLayer.getConflicts().add(conflict);
+        if (!editDs.getConflicts().hasConflictForMy(conflict.getMy())) {
+            editDs.getConflicts().add(conflict);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
index 07b1690..01c9150 100644
--- a/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
@@ -63,7 +63,7 @@ public class VersionConflictResolveCommand extends ConflictResolveCommand {
                 conflict.getMy().setVisible(conflict.getTheir().isVisible());
             }
         }
-        getLayer().getConflicts().remove(conflict);
+        getAffectedDataSet().getConflicts().remove(conflict);
         rememberConflict(conflict);
         return true;
     }
diff --git a/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java b/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
index 5d2e85b..52a630d 100644
--- a/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
@@ -9,12 +9,12 @@ import java.util.Objects;
 
 import javax.swing.Icon;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Represents the resolution of conflicts in the node list of two {@link Way}s.
@@ -59,7 +59,7 @@ public class WayNodesConflictResolverCommand extends ConflictResolveCommand {
         //
         for (Node n:mergedNodeList) {
             if (!getAffectedDataSet().getNodes().contains(n)) {
-                Main.warn(tr("Main dataset does not include node {0}", n.toString()));
+                Logging.warn(tr("Main dataset does not include node {0}", n.toString()));
             }
         }
         conflict.getMy().setNodes(mergedNodeList);
diff --git a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
index e6a20fe..f5d494c 100644
--- a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
@@ -10,12 +10,12 @@ import java.util.Map;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 
diff --git a/src/org/openstreetmap/josm/corrector/TagCorrector.java b/src/org/openstreetmap/josm/corrector/TagCorrector.java
index 55e2144..ad2052a 100644
--- a/src/org/openstreetmap/josm/corrector/TagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/TagCorrector.java
@@ -26,11 +26,11 @@ import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.correction.RoleCorrection;
 import org.openstreetmap.josm.data.correction.TagCorrection;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.correction.RoleCorrectionTable;
 import org.openstreetmap.josm.gui.correction.TagCorrectionTable;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
diff --git a/src/org/openstreetmap/josm/data/APIDataSet.java b/src/org/openstreetmap/josm/data/APIDataSet.java
index c6aab17..502f677 100644
--- a/src/org/openstreetmap/josm/data/APIDataSet.java
+++ b/src/org/openstreetmap/josm/data/APIDataSet.java
@@ -14,8 +14,8 @@ import java.util.Stack;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.Node;
diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
index 440f15d..4139f75 100644
--- a/src/org/openstreetmap/josm/data/Preferences.java
+++ b/src/org/openstreetmap/josm/data/Preferences.java
@@ -67,9 +67,8 @@ import org.openstreetmap.josm.data.preferences.PreferencesReader;
 import org.openstreetmap.josm.data.preferences.PreferencesWriter;
 import org.openstreetmap.josm.data.preferences.Setting;
 import org.openstreetmap.josm.data.preferences.StringSetting;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorTagCheckerRulesPreference;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorTagCheckerRulesPreference.RulePrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.io.OfflineAccessException;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -77,6 +76,7 @@ import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
@@ -233,6 +233,24 @@ public class Preferences {
     private final HashMap<String, ListenerList<PreferenceChangedListener>> keyListeners = new HashMap<>();
 
     /**
+     * Constructs a new {@code Preferences}.
+     */
+    public Preferences() {
+        // Default constructor
+    }
+
+    /**
+     * Constructs a new {@code Preferences} from an existing instance.
+     * @param pref existing preferences to copy
+     * @since 12634
+     */
+    public Preferences(Preferences pref) {
+        settingsMap.putAll(pref.settingsMap);
+        defaultsMap.putAll(pref.defaultsMap);
+        colornames.putAll(pref.colornames);
+    }
+
+    /**
      * Adds a new preferences listener.
      * @param listener The listener to add
      */
@@ -413,7 +431,7 @@ public class Preferences {
             }
         }
         if (!cacheDir.exists() && !cacheDir.mkdirs()) {
-            Main.warn(tr("Failed to create missing cache directory: {0}", cacheDir.getAbsoluteFile()));
+            Logging.warn(tr("Failed to create missing cache directory: {0}", cacheDir.getAbsoluteFile()));
             JOptionPane.showMessageDialog(
                     Main.parent,
                     tr("<html>Failed to create missing cache directory: {0}</html>", cacheDir.getAbsoluteFile()),
@@ -670,20 +688,20 @@ public class Preferences {
     }
 
     private static void setCorrectPermissions(File file) {
-        if (!file.setReadable(false, false) && Main.isDebugEnabled()) {
-            Main.debug(tr("Unable to set file non-readable {0}", file.getAbsolutePath()));
+        if (!file.setReadable(false, false) && Logging.isTraceEnabled()) {
+            Logging.trace(tr("Unable to set file non-readable {0}", file.getAbsolutePath()));
         }
-        if (!file.setWritable(false, false) && Main.isDebugEnabled()) {
-            Main.debug(tr("Unable to set file non-writable {0}", file.getAbsolutePath()));
+        if (!file.setWritable(false, false) && Logging.isTraceEnabled()) {
+            Logging.trace(tr("Unable to set file non-writable {0}", file.getAbsolutePath()));
         }
-        if (!file.setExecutable(false, false) && Main.isDebugEnabled()) {
-            Main.debug(tr("Unable to set file non-executable {0}", file.getAbsolutePath()));
+        if (!file.setExecutable(false, false) && Logging.isTraceEnabled()) {
+            Logging.trace(tr("Unable to set file non-executable {0}", file.getAbsolutePath()));
         }
-        if (!file.setReadable(true, true) && Main.isDebugEnabled()) {
-            Main.debug(tr("Unable to set file readable {0}", file.getAbsolutePath()));
+        if (!file.setReadable(true, true) && Logging.isTraceEnabled()) {
+            Logging.trace(tr("Unable to set file readable {0}", file.getAbsolutePath()));
         }
-        if (!file.setWritable(true, true) && Main.isDebugEnabled()) {
-            Main.debug(tr("Unable to set file writable {0}", file.getAbsolutePath()));
+        if (!file.setWritable(true, true) && Logging.isTraceEnabled()) {
+            Logging.trace(tr("Unable to set file writable {0}", file.getAbsolutePath()));
         }
     }
 
@@ -750,7 +768,7 @@ public class Preferences {
         File prefDir = getPreferencesDirectory();
         if (prefDir.exists()) {
             if (!prefDir.isDirectory()) {
-                Main.warn(tr("Failed to initialize preferences. Preference directory ''{0}'' is not a directory.",
+                Logging.warn(tr("Failed to initialize preferences. Preference directory ''{0}'' is not a directory.",
                         prefDir.getAbsoluteFile()));
                 JOptionPane.showMessageDialog(
                         Main.parent,
@@ -763,7 +781,7 @@ public class Preferences {
             }
         } else {
             if (!prefDir.mkdirs()) {
-                Main.warn(tr("Failed to initialize preferences. Failed to create missing preference directory: {0}",
+                Logging.warn(tr("Failed to initialize preferences. Failed to create missing preference directory: {0}",
                         prefDir.getAbsoluteFile()));
                 JOptionPane.showMessageDialog(
                         Main.parent,
@@ -779,18 +797,18 @@ public class Preferences {
         File preferenceFile = getPreferenceFile();
         try {
             if (!preferenceFile.exists()) {
-                Main.info(tr("Missing preference file ''{0}''. Creating a default preference file.", preferenceFile.getAbsoluteFile()));
+                Logging.info(tr("Missing preference file ''{0}''. Creating a default preference file.", preferenceFile.getAbsoluteFile()));
                 resetToDefault();
                 save();
             } else if (reset) {
                 File backupFile = new File(prefDir, "preferences.xml.bak");
                 Main.platform.rename(preferenceFile, backupFile);
-                Main.warn(tr("Replacing existing preference file ''{0}'' with default preference file.", preferenceFile.getAbsoluteFile()));
+                Logging.warn(tr("Replacing existing preference file ''{0}'' with default preference file.", preferenceFile.getAbsoluteFile()));
                 resetToDefault();
                 save();
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             JOptionPane.showMessageDialog(
                     Main.parent,
                     tr("<html>Failed to initialize preferences.<br>Failed to reset preference file to default: {0}</html>",
@@ -804,7 +822,7 @@ public class Preferences {
             load();
             initSuccessful = true;
         } catch (IOException | SAXException | XMLStreamException e) {
-            Main.error(e);
+            Logging.error(e);
             File backupFile = new File(prefDir, "preferences.xml.bak");
             JOptionPane.showMessageDialog(
                     Main.parent,
@@ -819,8 +837,8 @@ public class Preferences {
                 resetToDefault();
                 save();
             } catch (IOException e1) {
-                Main.error(e1);
-                Main.warn(tr("Failed to initialize preferences. Failed to reset preference file to default: {0}", getPreferenceFile()));
+                Logging.error(e1);
+                Logging.warn(tr("Failed to initialize preferences. Failed to reset preference file to default: {0}", getPreferenceFile()));
             }
         }
         File def = getDefaultsCacheFile();
@@ -828,11 +846,11 @@ public class Preferences {
             try {
                 loadDefaults();
             } catch (IOException | XMLStreamException | SAXException e) {
-                Main.error(e);
-                Main.warn(tr("Failed to load defaults cache file: {0}", def));
+                Logging.error(e);
+                Logging.warn(tr("Failed to load defaults cache file: {0}", def));
                 defaultsMap.clear();
                 if (!def.delete()) {
-                    Main.warn(tr("Failed to delete faulty defaults cache file: {0}", def));
+                    Logging.warn(tr("Failed to delete faulty defaults cache file: {0}", def));
                 }
             }
         }
@@ -965,7 +983,7 @@ public class Preferences {
             return Integer.parseInt(v);
         } catch (NumberFormatException e) {
             // fall out
-            Main.trace(e);
+            Logging.trace(e);
         }
         return def;
     }
@@ -988,7 +1006,7 @@ public class Preferences {
             return Integer.parseInt(v);
         } catch (NumberFormatException e) {
             // fall out
-            Main.trace(e);
+            Logging.trace(e);
         }
         return def;
     }
@@ -1009,7 +1027,7 @@ public class Preferences {
             return Long.parseLong(v);
         } catch (NumberFormatException e) {
             // fall out
-            Main.trace(e);
+            Logging.trace(e);
         }
         return def;
     }
@@ -1030,7 +1048,7 @@ public class Preferences {
             return Double.parseDouble(v);
         } catch (NumberFormatException e) {
             // fall out
-            Main.trace(e);
+            Logging.trace(e);
         }
         return def;
     }
@@ -1098,7 +1116,7 @@ public class Preferences {
                 try {
                     save();
                 } catch (IOException e) {
-                    Main.warn(e, tr("Failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
+                    Logging.log(Logging.LEVEL_WARN, tr("Failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()), e);
                 }
             }
         }
@@ -1132,7 +1150,7 @@ public class Preferences {
         CheckParameterUtil.ensureParameterNotNull(def);
         Setting<?> oldDef = defaultsMap.get(key);
         if (oldDef != null && oldDef.isNew() && oldDef.getValue() != null && def.getValue() != null && !def.equals(oldDef)) {
-            Main.info("Defaults for " + key + " differ: " + def + " != " + defaultsMap.get(key));
+            Logging.info("Defaults for " + key + " differ: " + def + " != " + defaultsMap.get(key));
         }
         if (def.getValue() != null || oldDef == null) {
             Setting<?> defCopy = def.copy();
@@ -1462,7 +1480,7 @@ public class Preferences {
             try {
                 f = klass.getDeclaredField(keyValue.getKey().replace('-', '_'));
             } catch (NoSuchFieldException ex) {
-                Main.trace(ex);
+                Logging.trace(ex);
                 continue;
             }
             if (f.getAnnotation(pref.class) == null) {
@@ -1525,7 +1543,7 @@ public class Preferences {
     public void updateSystemProperties() {
         if ("true".equals(get("prefer.ipv6", "auto")) && !"true".equals(Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true"))) {
             // never set this to false, only true!
-            Main.info(tr("Try enabling IPv6 network, prefering IPv6 over IPv4 (only works on early startup)."));
+            Logging.info(tr("Try enabling IPv6 network, prefering IPv6 over IPv4 (only works on early startup)."));
         }
         Utils.updateSystemProperty("http.agent", Version.getInstance().getAgentString());
         Utils.updateSystemProperty("user.language", get("language"));
@@ -1539,7 +1557,7 @@ public class Preferences {
                 field.set(null, ResourceBundle.getBundle("sun.awt.resources.awt"));
             } catch (ReflectiveOperationException | RuntimeException e) { // NOPMD
                 // Catch RuntimeException in order to catch InaccessibleObjectException, new in Java 9
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         // Possibility to disable SNI (not by default) in case of misconfigured https servers
@@ -1570,7 +1588,7 @@ public class Preferences {
             try {
                 OnlineResource.JOSM_WEBSITE.checkOfflineAccess(it.next(), Main.getJOSMWebsite());
             } catch (OfflineAccessException ex) {
-                Main.warn(ex, false);
+                Logging.log(Logging.LEVEL_WARN, ex);
                 it.remove();
             }
         }
@@ -1612,7 +1630,7 @@ public class Preferences {
             sw.flush();
             return sw.toString();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             return null;
         }
     }
@@ -1642,7 +1660,7 @@ public class Preferences {
         for (String key : OBSOLETE_PREF_KEYS) {
             if (settingsMap.containsKey(key)) {
                 settingsMap.remove(key);
-                Main.info(tr("Preference setting {0} has been removed since it is no longer used.", key));
+                Logging.info(tr("Preference setting {0} has been removed since it is no longer used.", key));
             }
         }
     }
@@ -1655,7 +1673,7 @@ public class Preferences {
                 .forEach(entry -> {
                     final String oldKey = entry.getKey();
                     final String newKey = entry.getValue();
-                    Main.info("Migrating old color key {0} => {1}", oldKey, newKey);
+                    Logging.info("Migrating old color key {0} => {1}", oldKey, newKey);
                     put(newKey, get(oldKey));
                     put(oldKey, null);
                 });
@@ -1694,7 +1712,7 @@ public class Preferences {
         if (setting instanceof MapListSetting) {
             List<Map<String, String>> l = new ArrayList<>(((MapListSetting) setting).getValue());
             if (l.stream().noneMatch(x -> x.containsValue(url))) {
-                RulePrefHelper helper = ValidatorTagCheckerRulesPreference.RulePrefHelper.INSTANCE;
+                ValidatorPrefHelper helper = ValidatorPrefHelper.INSTANCE;
                 Optional<ExtendedSourceEntry> val = helper.getDefault().stream().filter(x -> url.equals(x.url)).findFirst();
                 if (val.isPresent()) {
                     l.add(helper.serialize(val.get()));
diff --git a/src/org/openstreetmap/josm/data/PreferencesUtils.java b/src/org/openstreetmap/josm/data/PreferencesUtils.java
new file mode 100644
index 0000000..a8e599b
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/PreferencesUtils.java
@@ -0,0 +1,430 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
+
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.ListListSetting;
+import org.openstreetmap.josm.data.preferences.ListSetting;
+import org.openstreetmap.josm.data.preferences.MapListSetting;
+import org.openstreetmap.josm.data.preferences.Setting;
+import org.openstreetmap.josm.data.preferences.StringSetting;
+import org.openstreetmap.josm.gui.io.CustomConfigurator;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * Helper class to do specific Preferences operation - appending, replacing, deletion by key and by value
+ * Also contains functions that convert preferences object to JavaScript object and back
+ * @since 12634 (extracted from {@code CustomConfigurator})
+ */
+public final class PreferencesUtils {
+
+    private PreferencesUtils() {
+        // Hide implicit public constructor for utility class
+    }
+
+    public static void replacePreferences(Preferences fragment, Preferences mainpref) {
+        for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
+            mainpref.putSetting(entry.getKey(), entry.getValue());
+        }
+    }
+
+    public static void appendPreferences(Preferences fragment, Preferences mainpref) {
+        for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
+            String key = entry.getKey();
+            if (entry.getValue() instanceof StringSetting) {
+                mainpref.putSetting(key, entry.getValue());
+            } else if (entry.getValue() instanceof ListSetting) {
+                ListSetting lSetting = (ListSetting) entry.getValue();
+                Collection<String> newItems = getCollection(mainpref, key, true);
+                if (newItems == null) continue;
+                for (String item : lSetting.getValue()) {
+                    // add nonexisting elements to then list
+                    if (!newItems.contains(item)) {
+                        newItems.add(item);
+                    }
+                }
+                mainpref.putCollection(key, newItems);
+            } else if (entry.getValue() instanceof ListListSetting) {
+                ListListSetting llSetting = (ListListSetting) entry.getValue();
+                Collection<Collection<String>> newLists = getArray(mainpref, key, true);
+                if (newLists == null) continue;
+
+                for (Collection<String> list : llSetting.getValue()) {
+                    // add nonexisting list (equals comparison for lists is used implicitly)
+                    if (!newLists.contains(list)) {
+                        newLists.add(list);
+                    }
+                }
+                mainpref.putArray(key, newLists);
+            } else if (entry.getValue() instanceof MapListSetting) {
+                MapListSetting mlSetting = (MapListSetting) entry.getValue();
+                List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
+                if (newMaps == null) continue;
+
+                // get existing properties as list of maps
+
+                for (Map<String, String> map : mlSetting.getValue()) {
+                    // add nonexisting map (equals comparison for maps is used implicitly)
+                    if (!newMaps.contains(map)) {
+                        newMaps.add(map);
+                    }
+                }
+                mainpref.putListOfStructs(entry.getKey(), newMaps);
+            }
+        }
+    }
+
+    /**
+     * Delete items from {@code mainpref} collections that match items from {@code fragment} collections.
+     * @param fragment preferences
+     * @param mainpref main preferences
+     */
+    public static void deletePreferenceValues(Preferences fragment, Preferences mainpref) {
+
+        for (Entry<String, Setting<?>> entry : fragment.settingsMap.entrySet()) {
+            String key = entry.getKey();
+            if (entry.getValue() instanceof StringSetting) {
+                StringSetting sSetting = (StringSetting) entry.getValue();
+                // if mentioned value found, delete it
+                if (sSetting.equals(mainpref.settingsMap.get(key))) {
+                    mainpref.put(key, null);
+                }
+            } else if (entry.getValue() instanceof ListSetting) {
+                ListSetting lSetting = (ListSetting) entry.getValue();
+                Collection<String> newItems = getCollection(mainpref, key, true);
+                if (newItems == null) continue;
+
+                // remove mentioned items from collection
+                for (String item : lSetting.getValue()) {
+                    CustomConfigurator.log("Deleting preferences: from list %s: %s\n", key, item);
+                    newItems.remove(item);
+                }
+                mainpref.putCollection(entry.getKey(), newItems);
+            } else if (entry.getValue() instanceof ListListSetting) {
+                ListListSetting llSetting = (ListListSetting) entry.getValue();
+                Collection<Collection<String>> newLists = getArray(mainpref, key, true);
+                if (newLists == null) continue;
+
+                // if items are found in one of lists, remove that list!
+                Iterator<Collection<String>> listIterator = newLists.iterator();
+                while (listIterator.hasNext()) {
+                    Collection<String> list = listIterator.next();
+                    for (Collection<String> removeList : llSetting.getValue()) {
+                        if (list.containsAll(removeList)) {
+                            // remove current list, because it matches search criteria
+                            CustomConfigurator.log("Deleting preferences: list from lists %s: %s\n", key, list);
+                            listIterator.remove();
+                        }
+                    }
+                }
+
+                mainpref.putArray(key, newLists);
+            } else if (entry.getValue() instanceof MapListSetting) {
+                MapListSetting mlSetting = (MapListSetting) entry.getValue();
+                List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
+                if (newMaps == null) continue;
+
+                Iterator<Map<String, String>> mapIterator = newMaps.iterator();
+                while (mapIterator.hasNext()) {
+                    Map<String, String> map = mapIterator.next();
+                    for (Map<String, String> removeMap : mlSetting.getValue()) {
+                        if (map.entrySet().containsAll(removeMap.entrySet())) {
+                            // the map contain all mentioned key-value pair, so it should be deleted from "maps"
+                            CustomConfigurator.log("Deleting preferences: deleting map from maps %s: %s\n", key, map);
+                            mapIterator.remove();
+                        }
+                    }
+                }
+                mainpref.putListOfStructs(entry.getKey(), newMaps);
+            }
+        }
+    }
+
+    public static void deletePreferenceKeyByPattern(String pattern, Preferences pref) {
+        Map<String, Setting<?>> allSettings = pref.getAllSettings();
+        for (Entry<String, Setting<?>> entry : allSettings.entrySet()) {
+            String key = entry.getKey();
+            if (key.matches(pattern)) {
+                CustomConfigurator.log("Deleting preferences: deleting key from preferences: " + key);
+                pref.putSetting(key, null);
+            }
+        }
+    }
+
+    public static void deletePreferenceKey(String key, Preferences pref) {
+        Map<String, Setting<?>> allSettings = pref.getAllSettings();
+        if (allSettings.containsKey(key)) {
+            CustomConfigurator.log("Deleting preferences: deleting key from preferences: " + key);
+            pref.putSetting(key, null);
+        }
+    }
+
+    private static Collection<String> getCollection(Preferences mainpref, String key, boolean warnUnknownDefault) {
+        ListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListSetting.class);
+        ListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListSetting.class);
+        if (existing == null && defaults == null) {
+            if (warnUnknownDefault) defaultUnknownWarning(key);
+            return null;
+        }
+        if (existing != null)
+            return new ArrayList<>(existing.getValue());
+        else
+            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
+    }
+
+    private static Collection<Collection<String>> getArray(Preferences mainpref, String key, boolean warnUnknownDefault) {
+        ListListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListListSetting.class);
+        ListListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListListSetting.class);
+
+        if (existing == null && defaults == null) {
+            if (warnUnknownDefault) defaultUnknownWarning(key);
+            return null;
+        }
+        if (existing != null)
+            return new ArrayList<>(existing.getValue());
+        else
+            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
+    }
+
+    private static List<Map<String, String>> getListOfStructs(Preferences mainpref, String key, boolean warnUnknownDefault) {
+        MapListSetting existing = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
+        MapListSetting defaults = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
+
+        if (existing == null && defaults == null) {
+            if (warnUnknownDefault) defaultUnknownWarning(key);
+            return null;
+        }
+
+        if (existing != null)
+            return new ArrayList<>(existing.getValue());
+        else
+            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
+    }
+
+    private static void defaultUnknownWarning(String key) {
+        CustomConfigurator.log("Warning: Unknown default value of %s , skipped\n", key);
+        JOptionPane.showMessageDialog(
+                Main.parent,
+                tr("<html>Settings file asks to append preferences to <b>{0}</b>,<br/> "+
+                        "but its default value is unknown at this moment.<br/> " +
+                        "Please activate corresponding function manually and retry importing.", key),
+                tr("Warning"),
+                JOptionPane.WARNING_MESSAGE);
+    }
+
+    public static void showPrefs(Preferences tmpPref) {
+        Logging.info("properties: " + tmpPref.settingsMap);
+    }
+
+    public static void modifyPreferencesByScript(ScriptEngine engine, Preferences tmpPref, String js) throws ScriptException {
+        loadPrefsToJS(engine, tmpPref, "API.pref", true);
+        engine.eval(js);
+        readPrefsFromJS(engine, tmpPref, "API.pref");
+    }
+
+    /**
+     * Convert JavaScript preferences object to preferences data structures
+     * @param engine - JS engine to put object
+     * @param tmpPref - preferences to fill from JS
+     * @param varInJS - JS variable name, where preferences are stored
+     * @throws ScriptException if the evaluation fails
+     */
+    public static void readPrefsFromJS(ScriptEngine engine, Preferences tmpPref, String varInJS) throws ScriptException {
+        String finish =
+            "stringMap = new java.util.TreeMap ;"+
+            "listMap =  new java.util.TreeMap ;"+
+            "listlistMap = new java.util.TreeMap ;"+
+            "listmapMap =  new java.util.TreeMap ;"+
+            "for (key in "+varInJS+") {"+
+            "  val = "+varInJS+"[key];"+
+            "  type = typeof val == 'string' ? 'string' : val.type;"+
+            "  if (type == 'string') {"+
+            "    stringMap.put(key, val);"+
+            "  } else if (type == 'list') {"+
+            "    l = new java.util.ArrayList;"+
+            "    for (i=0; i<val.length; i++) {"+
+            "      l.add(java.lang.String.valueOf(val[i]));"+
+            "    }"+
+            "    listMap.put(key, l);"+
+            "  } else if (type == 'listlist') {"+
+            "    l = new java.util.ArrayList;"+
+            "    for (i=0; i<val.length; i++) {"+
+            "      list=val[i];"+
+            "      jlist=new java.util.ArrayList;"+
+            "      for (j=0; j<list.length; j++) {"+
+            "         jlist.add(java.lang.String.valueOf(list[j]));"+
+            "      }"+
+            "      l.add(jlist);"+
+            "    }"+
+            "    listlistMap.put(key, l);"+
+            "  } else if (type == 'listmap') {"+
+            "    l = new java.util.ArrayList;"+
+            "    for (i=0; i<val.length; i++) {"+
+            "      map=val[i];"+
+            "      jmap=new java.util.TreeMap;"+
+            "      for (var key2 in map) {"+
+            "         jmap.put(key2,java.lang.String.valueOf(map[key2]));"+
+            "      }"+
+            "      l.add(jmap);"+
+            "    }"+
+            "    listmapMap.put(key, l);"+
+            "  }  else {" +
+            "   " + CustomConfigurator.class.getName() + ".log('Unknown type:'+val.type+ '- use list, listlist or listmap'); }"+
+            "  }";
+        engine.eval(finish);
+
+        @SuppressWarnings("unchecked")
+        Map<String, String> stringMap = (Map<String, String>) engine.get("stringMap");
+        @SuppressWarnings("unchecked")
+        Map<String, List<String>> listMap = (Map<String, List<String>>) engine.get("listMap");
+        @SuppressWarnings("unchecked")
+        Map<String, List<Collection<String>>> listlistMap = (Map<String, List<Collection<String>>>) engine.get("listlistMap");
+        @SuppressWarnings("unchecked")
+        Map<String, List<Map<String, String>>> listmapMap = (Map<String, List<Map<String, String>>>) engine.get("listmapMap");
+
+        tmpPref.settingsMap.clear();
+
+        Map<String, Setting<?>> tmp = new HashMap<>();
+        for (Entry<String, String> e : stringMap.entrySet()) {
+            tmp.put(e.getKey(), new StringSetting(e.getValue()));
+        }
+        for (Entry<String, List<String>> e : listMap.entrySet()) {
+            tmp.put(e.getKey(), new ListSetting(e.getValue()));
+        }
+
+        for (Entry<String, List<Collection<String>>> e : listlistMap.entrySet()) {
+            @SuppressWarnings({ "unchecked", "rawtypes" })
+            List<List<String>> value = (List) e.getValue();
+            tmp.put(e.getKey(), new ListListSetting(value));
+        }
+        for (Entry<String, List<Map<String, String>>> e : listmapMap.entrySet()) {
+            tmp.put(e.getKey(), new MapListSetting(e.getValue()));
+        }
+        for (Entry<String, Setting<?>> e : tmp.entrySet()) {
+            if (e.getValue().equals(tmpPref.defaultsMap.get(e.getKey()))) continue;
+            tmpPref.settingsMap.put(e.getKey(), e.getValue());
+        }
+    }
+
+    /**
+     * Convert preferences data structures to JavaScript object
+     * @param engine - JS engine to put object
+     * @param tmpPref - preferences to convert
+     * @param whereToPutInJS - variable name to store preferences in JS
+     * @param includeDefaults - include known default values to JS objects
+     * @throws ScriptException if the evaluation fails
+     */
+    public static void loadPrefsToJS(ScriptEngine engine, Preferences tmpPref, String whereToPutInJS, boolean includeDefaults)
+            throws ScriptException {
+        Map<String, String> stringMap = new TreeMap<>();
+        Map<String, List<String>> listMap = new TreeMap<>();
+        Map<String, List<List<String>>> listlistMap = new TreeMap<>();
+        Map<String, List<Map<String, String>>> listmapMap = new TreeMap<>();
+
+        if (includeDefaults) {
+            for (Map.Entry<String, Setting<?>> e: tmpPref.defaultsMap.entrySet()) {
+                Setting<?> setting = e.getValue();
+                if (setting instanceof StringSetting) {
+                    stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
+                } else if (setting instanceof ListSetting) {
+                    listMap.put(e.getKey(), ((ListSetting) setting).getValue());
+                } else if (setting instanceof ListListSetting) {
+                    listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
+                } else if (setting instanceof MapListSetting) {
+                    listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
+                }
+            }
+        }
+        tmpPref.settingsMap.entrySet().removeIf(e -> e.getValue().getValue() == null);
+
+        for (Map.Entry<String, Setting<?>> e: tmpPref.settingsMap.entrySet()) {
+            Setting<?> setting = e.getValue();
+            if (setting instanceof StringSetting) {
+                stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
+            } else if (setting instanceof ListSetting) {
+                listMap.put(e.getKey(), ((ListSetting) setting).getValue());
+            } else if (setting instanceof ListListSetting) {
+                listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
+            } else if (setting instanceof MapListSetting) {
+                listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
+            }
+        }
+
+        engine.put("stringMap", stringMap);
+        engine.put("listMap", listMap);
+        engine.put("listlistMap", listlistMap);
+        engine.put("listmapMap", listmapMap);
+
+        String init =
+            "function getJSList( javaList ) {"+
+            " var jsList; var i; "+
+            " if (javaList == null) return null;"+
+            "jsList = [];"+
+            "  for (i = 0; i < javaList.size(); i++) {"+
+            "    jsList.push(String(list.get(i)));"+
+            "  }"+
+            "return jsList;"+
+            "}"+
+            "function getJSMap( javaMap ) {"+
+            " var jsMap; var it; var e; "+
+            " if (javaMap == null) return null;"+
+            " jsMap = {};"+
+            " for (it = javaMap.entrySet().iterator(); it.hasNext();) {"+
+            "    e = it.next();"+
+            "    jsMap[ String(e.getKey()) ] = String(e.getValue()); "+
+            "  }"+
+            "  return jsMap;"+
+            "}"+
+            "for (it = stringMap.entrySet().iterator(); it.hasNext();) {"+
+            "  e = it.next();"+
+            whereToPutInJS+"[String(e.getKey())] = String(e.getValue());"+
+            "}\n"+
+            "for (it = listMap.entrySet().iterator(); it.hasNext();) {"+
+            "  e = it.next();"+
+            "  list = e.getValue();"+
+            "  jslist = getJSList(list);"+
+            "  jslist.type = 'list';"+
+            whereToPutInJS+"[String(e.getKey())] = jslist;"+
+            "}\n"+
+            "for (it = listlistMap.entrySet().iterator(); it.hasNext(); ) {"+
+            "  e = it.next();"+
+            "  listlist = e.getValue();"+
+            "  jslistlist = [];"+
+            "  for (it2 = listlist.iterator(); it2.hasNext(); ) {"+
+            "    list = it2.next(); "+
+            "    jslistlist.push(getJSList(list));"+
+            "    }"+
+            "  jslistlist.type = 'listlist';"+
+            whereToPutInJS+"[String(e.getKey())] = jslistlist;"+
+            "}\n"+
+            "for (it = listmapMap.entrySet().iterator(); it.hasNext();) {"+
+            "  e = it.next();"+
+            "  listmap = e.getValue();"+
+            "  jslistmap = [];"+
+            "  for (it2 = listmap.iterator(); it2.hasNext();) {"+
+            "    map = it2.next();"+
+            "    jslistmap.push(getJSMap(map));"+
+            "    }"+
+            "  jslistmap.type = 'listmap';"+
+            whereToPutInJS+"[String(e.getKey())] = jslistmap;"+
+            "}\n";
+
+        // Execute conversion script
+        engine.eval(init);
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
index 6edbd47..751551c 100644
--- a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
+++ b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
@@ -12,18 +12,24 @@ import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 
 /**
  * A system of units used to express length and area measurements.
  * <p>
- * This class also manages one globally set system of measurement stored in the {@link ProjectionPreference}
+ * This class also manages one globally set system of measurement stored in the {@code ProjectionPreference}
  * @since 3406 (creation)
  * @since 6992 (extraction in this package)
  */
 public class SystemOfMeasurement {
 
     /**
+     * Preferences entry for system of measurement.
+     * @since 12674 (moved from ProjectionPreference)
+     */
+    public static final StringProperty PROP_SYSTEM_OF_MEASUREMENT = new StringProperty("system_of_measurement", "Metric");
+
+    /**
      * Interface to notify listeners of the change of the system of measurement.
      * @since 8554
      * @since 10600 (functional interface)
@@ -115,7 +121,7 @@ public class SystemOfMeasurement {
      * @since 8554
      */
     public static SystemOfMeasurement getSystemOfMeasurement() {
-        return Optional.ofNullable(SystemOfMeasurement.ALL_SYSTEMS.get(ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.get()))
+        return Optional.ofNullable(SystemOfMeasurement.ALL_SYSTEMS.get(PROP_SYSTEM_OF_MEASUREMENT.get()))
                 .orElse(SystemOfMeasurement.METRIC);
     }
 
@@ -129,8 +135,8 @@ public class SystemOfMeasurement {
         if (!SystemOfMeasurement.ALL_SYSTEMS.containsKey(somKey)) {
             throw new IllegalArgumentException("Invalid system of measurement: "+somKey);
         }
-        String oldKey = ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.get();
-        if (ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.put(somKey)) {
+        String oldKey = PROP_SYSTEM_OF_MEASUREMENT.get();
+        if (PROP_SYSTEM_OF_MEASUREMENT.put(somKey)) {
             fireSoMChanged(oldKey, somKey);
         }
     }
diff --git a/src/org/openstreetmap/josm/data/UndoRedoHandler.java b/src/org/openstreetmap/josm/data/UndoRedoHandler.java
index 86d091c..39caaf8 100644
--- a/src/org/openstreetmap/josm/data/UndoRedoHandler.java
+++ b/src/org/openstreetmap/josm/data/UndoRedoHandler.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -43,7 +44,7 @@ public class UndoRedoHandler implements LayerChangeListener {
      * Constructs a new {@code UndoRedoHandler}.
      */
     public UndoRedoHandler() {
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
     /**
@@ -84,7 +85,7 @@ public class UndoRedoHandler implements LayerChangeListener {
      * @param c The command to execute. Must not be {@code null}.
      */
     public synchronized void add(final Command c) {
-        DataSet ds = Optional.ofNullable(c.getAffectedDataSet()).orElseGet(() -> Main.getLayerManager().getEditDataSet());
+        DataSet ds = Optional.ofNullable(c.getAffectedDataSet()).orElseGet(() -> Main.main.getEditDataSet());
         Collection<? extends OsmPrimitive> oldSelection = null;
         if (ds != null) {
             oldSelection = ds.getSelected();
@@ -113,7 +114,7 @@ public class UndoRedoHandler implements LayerChangeListener {
     public synchronized void undo(int num) {
         if (commands.isEmpty())
             return;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         Collection<? extends OsmPrimitive> oldSelection = null;
         if (ds != null) {
             oldSelection = ds.getSelected();
@@ -154,7 +155,7 @@ public class UndoRedoHandler implements LayerChangeListener {
     public void redo(int num) {
         if (redoCommands.isEmpty())
             return;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         Collection<? extends OsmPrimitive> oldSelection = ds.getSelected();
         for (int i = 0; i < num; ++i) {
             final Command c = redoCommands.removeFirst();
diff --git a/src/org/openstreetmap/josm/data/Version.java b/src/org/openstreetmap/josm/data/Version.java
index 03f24bc..b07b73c 100644
--- a/src/org/openstreetmap/josm/data/Version.java
+++ b/src/org/openstreetmap/josm/data/Version.java
@@ -11,6 +11,7 @@ import java.util.Properties;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Provides basic information about the currently used JOSM build.
@@ -59,7 +60,7 @@ public class Version {
         try {
             properties.load(revisionInfo);
         } catch (IOException e) {
-            Main.warn(e, tr("Error reading revision info from revision file: {0}", e.getMessage()));
+            Logging.log(Logging.LEVEL_WARN, tr("Error reading revision info from revision file: {0}", e.getMessage()), e);
         }
         String value = Optional.ofNullable(properties.getProperty("Revision")).orElse("").trim();
         if (!value.isEmpty()) {
@@ -67,7 +68,7 @@ public class Version {
                 version = Integer.parseInt(value);
             } catch (NumberFormatException e) {
                 version = 0;
-                Main.warn(tr("Unexpected JOSM version number in revision file, value is ''{0}''", value));
+                Logging.warn(tr("Unexpected JOSM version number in revision file, value is ''{0}''", value));
             }
         } else {
             version = JOSM_UNKNOWN_VERSION;
@@ -102,16 +103,16 @@ public class Version {
      * Initializes version info
      */
     public void init() {
-        try (InputStream stream = Main.class.getResourceAsStream("/REVISION")) {
+        try (InputStream stream = Version.class.getResourceAsStream("/REVISION")) {
             if (stream == null) {
-                Main.warn(tr("The revision file ''/REVISION'' is missing."));
+                Logging.warn(tr("The revision file ''/REVISION'' is missing."));
                 version = 0;
                 releaseDescription = "";
                 return;
             }
             initFromRevisionInfo(stream);
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java b/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java
index 46fddff..9df5d12 100644
--- a/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java
+++ b/src/org/openstreetmap/josm/data/cache/CacheEntryAttributes.java
@@ -10,7 +10,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.jcs.engine.ElementAttributes;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class that contains attributes for JCS cache entries. Parameters are used to properly handle HTTP caching,
@@ -161,7 +161,7 @@ public class CacheEntryAttributes extends ElementAttributes {
     public void setMetadata(Map<String, String> map) {
         for (Entry<String, String> e: map.entrySet()) {
             if (RESERVED_KEYS.contains(e.getKey())) {
-                Main.info("Metadata key configuration contains key {0} which is reserved for internal use");
+                Logging.info("Metadata key configuration contains key {0} which is reserved for internal use");
             } else {
                 attrs.put(e.getKey(), e.getValue());
             }
@@ -190,7 +190,7 @@ public class CacheEntryAttributes extends ElementAttributes {
      * @since 10469
      */
     public void setError(Exception error) {
-        setErrorMessage(Main.getErrorMessage(error));
+        setErrorMessage(Logging.getErrorMessage(error));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java b/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
index 3b62ff8..2f86f0d 100644
--- a/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
+++ b/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
@@ -11,7 +11,7 @@ import java.util.concurrent.Semaphore;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Queue for ThreadPoolExecutor that implements per-host limit. It will acquire a semaphore for each task
@@ -66,9 +66,9 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
                     try {
                         url = job.getUrl();
                     } catch (IOException e) {
-                        Main.debug(e);
+                        Logging.debug(e);
                     }
-                    Main.debug("TMS - Skipping job {0} because host limit reached", url);
+                    Logging.debug("TMS - Skipping job {0} because host limit reached", url);
                 }
             }
         }
@@ -89,7 +89,7 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
             } catch (InterruptedException e) {
                 // acquire my got interrupted, first offer back what was taken
                 if (!offer(job)) {
-                    Main.warn("Unable to offer back " + job);
+                    Logging.warn("Unable to offer back " + job);
                 }
                 throw e;
             }
@@ -109,7 +109,7 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
         } catch (InterruptedException e) {
             // acquire my got interrupted, first offer back what was taken
             if (!offer(job)) {
-                Main.warn("Unable to offer back " + job);
+                Logging.warn("Unable to offer back " + job);
             }
             throw e;
         }
@@ -208,7 +208,7 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
         if (limit != null) {
             limit.release();
             if (limit.availablePermits() > hostLimit) {
-                Main.warn("More permits than it should be");
+                Logging.warn("More permits than it should be");
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
index f8051fc..2785920 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
@@ -30,6 +30,7 @@ import org.openstreetmap.gui.jmapviewer.FeatureAdapter;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -90,14 +91,14 @@ public final class JCSCacheManager {
             public void publish(LogRecord record) {
                 String msg = formatter.formatMessage(record);
                 if (record.getLevel().intValue() >= Level.SEVERE.intValue()) {
-                    Main.error(msg);
+                    Logging.error(msg);
                 } else if (record.getLevel().intValue() >= Level.WARNING.intValue()) {
-                    Main.warn(msg);
+                    Logging.warn(msg);
                     // downgrade INFO level to debug, as JCS is too verbose at INFO level
                 } else if (record.getLevel().intValue() >= Level.INFO.intValue()) {
-                    Main.debug(msg);
+                    Logging.debug(msg);
                 } else {
-                    Main.trace(msg);
+                    Logging.trace(msg);
                 }
             }
 
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
index 1314c0d..9023319 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
@@ -21,11 +21,11 @@ import java.util.logging.Logger;
 import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.apache.commons.jcs.engine.behavior.ICacheElement;
 import org.openstreetmap.gui.jmapviewer.FeatureAdapter;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.ICachedLoaderListener.LoadResult;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -215,7 +215,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
         try {
             return getUrl().getHost();
         } catch (IOException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return null;
         }
     }
@@ -263,7 +263,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                 listeners = inProgress.remove(getUrl().toString());
             } catch (IOException e) {
                 listeners = null;
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         if (listeners == null) {
@@ -405,7 +405,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
         } catch (InterruptedException e) {
             attributes.setError(e);
             LOG.log(Level.WARNING, "JCS - Exception during download {0}", getUrlNoException());
-            Main.warn(e);
+            Logging.warn(e);
             Thread.currentThread().interrupt();
         }
         LOG.log(Level.WARNING, "JCS - Silent failure during download: {0}", getUrlNoException());
@@ -445,7 +445,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                 }
             } catch (NumberFormatException e) {
                 // ignore malformed Cache-Control headers
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/data/coor/EastNorth.java b/src/org/openstreetmap/josm/data/coor/EastNorth.java
index 03800aa..58869aa 100644
--- a/src/org/openstreetmap/josm/data/coor/EastNorth.java
+++ b/src/org/openstreetmap/josm/data/coor/EastNorth.java
@@ -1,10 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.coor;
 
-import org.openstreetmap.gui.jmapviewer.JMapViewer;
-import org.openstreetmap.gui.jmapviewer.Projected;
-import org.openstreetmap.gui.jmapviewer.interfaces.IProjected;
-
 /**
  * Northing, Easting of the projected coordinates.
  *
@@ -31,14 +27,6 @@ public class EastNorth extends Coordinate {
     }
 
     /**
-     * Constructs a new {@code EastNorth} from {@link IProjected}.
-     * @param p projected coordinates
-     */
-    public EastNorth(IProjected p) {
-        super(p.getEast(), p.getNorth());
-    }
-
-    /**
      * Returns easting.
      * @return easting
      */
@@ -187,14 +175,6 @@ public class EastNorth extends Coordinate {
         return new EastNorth(nx, ny);
     }
 
-    /**
-     * Converts this to a {@link IProjected} instance to be used in the {@link JMapViewer}
-     * @return The projected
-     */
-    public IProjected toProjected() {
-        return new Projected(east(), north());
-    }
-
     @Override
     public String toString() {
         return "EastNorth[e="+x+", n="+y+']';
diff --git a/src/org/openstreetmap/josm/data/coor/LatLon.java b/src/org/openstreetmap/josm/data/coor/LatLon.java
index 24cdc7e..d81cfd8 100644
--- a/src/org/openstreetmap/josm/data/coor/LatLon.java
+++ b/src/org/openstreetmap/josm/data/coor/LatLon.java
@@ -22,9 +22,9 @@ import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -204,8 +204,20 @@ public class LatLon extends Coordinate implements ILatLon {
      * Replies the coordinate in degrees/minutes/seconds format
      * @param pCoordinate The coordinate to convert
      * @return The coordinate in degrees/minutes/seconds format
+     * @deprecated use {@link #degreesMinutesSeconds} instead
      */
+    @Deprecated
     public static String dms(double pCoordinate) {
+        return degreesMinutesSeconds(pCoordinate);
+    }
+
+    /**
+     * Replies the coordinate in degrees/minutes/seconds format
+     * @param pCoordinate The coordinate to convert
+     * @return The coordinate in degrees/minutes/seconds format
+     * @since 12561
+     */
+    public static String degreesMinutesSeconds(double pCoordinate) {
 
         double tAbsCoord = Math.abs(pCoordinate);
         int tDegree = (int) tAbsCoord;
@@ -280,14 +292,6 @@ public class LatLon extends Coordinate implements ILatLon {
         super(coor.lon(), coor.lat());
     }
 
-    /**
-     * Constructs a new object for the given coordinate
-     * @param coor the coordinate
-     */
-    public LatLon(ICoordinate coor) {
-        this(coor.getLat(), coor.getLon());
-    }
-
     @Override
     public double lat() {
         return y;
@@ -301,7 +305,7 @@ public class LatLon extends Coordinate implements ILatLon {
     public String latToString(CoordinateFormat d) {
         switch(d) {
         case DECIMAL_DEGREES: return cDdFormatter.format(y);
-        case DEGREES_MINUTES_SECONDS: return dms(y) + ((y < 0) ? SOUTH : NORTH);
+        case DEGREES_MINUTES_SECONDS: return degreesMinutesSeconds(y) + ((y < 0) ? SOUTH : NORTH);
         case NAUTICAL: return degreesMinutes(y) + ((y < 0) ? SOUTH : NORTH);
         case EAST_NORTH: return cDdFormatter.format(this.getEastNorth().north());
         default: return "ERR";
@@ -321,7 +325,7 @@ public class LatLon extends Coordinate implements ILatLon {
     public String lonToString(CoordinateFormat d) {
         switch(d) {
         case DECIMAL_DEGREES: return cDdFormatter.format(x);
-        case DEGREES_MINUTES_SECONDS: return dms(x) + ((x < 0) ? WEST : EAST);
+        case DEGREES_MINUTES_SECONDS: return degreesMinutesSeconds(x) + ((x < 0) ? WEST : EAST);
         case NAUTICAL: return degreesMinutes(x) + ((x < 0) ? WEST : EAST);
         case EAST_NORTH: return cDdFormatter.format(this.getEastNorth().east());
         default: return "ERR";
@@ -383,7 +387,7 @@ public class LatLon extends Coordinate implements ILatLon {
         // rounding errors could make the argument of asin greater than 1
         // (This should almost never happen.)
         if (java.lang.Double.isNaN(d)) {
-            Main.error("NaN in greatCircleDistance");
+            Logging.error("NaN in greatCircleDistance");
             d = PI * WGS84.a;
         }
         return d;
@@ -554,14 +558,6 @@ public class LatLon extends Coordinate implements ILatLon {
                Double.compare(that.y, y) == 0;
     }
 
-    /**
-     * Converts this latitude/longitude to an instance of {@link ICoordinate}.
-     * @return a {@link ICoordinate} instance of this latitude/longitude
-     */
-    public ICoordinate toCoordinate() {
-        return new org.openstreetmap.gui.jmapviewer.Coordinate(lat(), lon());
-    }
-
     private static class LatLonHolder {
         private double lat = Double.NaN;
         private double lon = Double.NaN;
diff --git a/src/org/openstreetmap/josm/data/gpx/WayPoint.java b/src/org/openstreetmap/josm/data/gpx/WayPoint.java
index bd08067..4077fab 100644
--- a/src/org/openstreetmap/josm/data/gpx/WayPoint.java
+++ b/src/org/openstreetmap/josm/data/gpx/WayPoint.java
@@ -7,12 +7,12 @@ import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.projection.Projecting;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.date.DateUtils;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
@@ -156,7 +156,7 @@ public class WayPoint extends WithAttributes implements Comparable<WayPoint>, Te
                 this.time = time.getTime() / 1000.;
                 return time;
             } catch (UncheckedParseException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 time = 0;
             }
         }
diff --git a/src/org/openstreetmap/josm/data/imagery/AbstractWMSTileSource.java b/src/org/openstreetmap/josm/data/imagery/AbstractWMSTileSource.java
index df2162f..aa45d24 100644
--- a/src/org/openstreetmap/josm/data/imagery/AbstractWMSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/AbstractWMSTileSource.java
@@ -109,7 +109,7 @@ public abstract class AbstractWMSTileSource extends TMSTileSource {
 
     @Override
     public ICoordinate tileXYToLatLon(int x, int y, int zoom) {
-        return tileProjection.eastNorth2latlon(getTileEastNorth(x, y, zoom)).toCoordinate();
+        return CoordinateConversion.llToCoor(tileProjection.eastNorth2latlon(getTileEastNorth(x, y, zoom)));
     }
 
     private TileXY eastNorthToTileXY(EastNorth enPoint, int zoom) {
@@ -178,7 +178,7 @@ public abstract class AbstractWMSTileSource extends TMSTileSource {
                 anchorPosition.east() + x * scale,
                 anchorPosition.north() - y * scale
                 );
-        return tileProjection.eastNorth2latlon(ret).toCoordinate();
+        return CoordinateConversion.llToCoor(tileProjection.eastNorth2latlon(ret));
     }
 
     protected EastNorth getTileEastNorth(int x, int y, int z) {
diff --git a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
index 3c5a335..4bb8b31 100644
--- a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
@@ -11,11 +11,11 @@ import java.util.concurrent.TimeUnit;
 
 import org.openstreetmap.gui.jmapviewer.tilesources.BingAerialTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.TileSourceInfo;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.CacheCustomContent;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.InputSource;
 
 /**
@@ -56,7 +56,7 @@ public class CachedAttributionBingAerialTileSource extends BingAerialTileSource
         protected byte[] updateData() throws IOException {
             URL u = getAttributionUrl();
             final String r = HttpClient.create(u).connect().fetchContent();
-            Main.info("Successfully loaded Bing attribution data.");
+            Logging.info("Successfully loaded Bing attribution data.");
             return r.getBytes("UTF-8");
         }
 
@@ -66,7 +66,7 @@ public class CachedAttributionBingAerialTileSource extends BingAerialTileSource
                 String attributionUrl = getAttributionUrl().toExternalForm();
                 OnlineResource.ALL.checkOfflineAccess(attributionUrl, attributionUrl);
             } catch (MalformedURLException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
@@ -86,7 +86,7 @@ public class CachedAttributionBingAerialTileSource extends BingAerialTileSource
                     }
                     return ret;
                 } catch (IOException ex) {
-                    Main.warn(ex, "Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds.");
+                    Logging.log(Logging.LEVEL_WARN, "Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds.", ex);
                     Thread.sleep(TimeUnit.SECONDS.toMillis(waitTimeSec));
                     waitTimeSec *= 2;
                 }
diff --git a/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java b/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
index f75184f..96bc632 100644
--- a/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
+++ b/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
@@ -15,6 +15,7 @@ import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * TileLoaderFactory creating JCS cached TileLoaders
@@ -46,7 +47,7 @@ public class CachedTileLoaderFactory implements TileLoaderFactory {
                     int.class,
                     Map.class);
         } catch (NoSuchMethodException | SecurityException e) {
-            Main.warn(e);
+            Logging.warn(e);
             throw new IllegalArgumentException(e);
         }
     }
@@ -56,7 +57,7 @@ public class CachedTileLoaderFactory implements TileLoaderFactory {
         try {
             defPath = new File(Main.pref.getCacheDirectory(), "tiles").getAbsolutePath();
         } catch (SecurityException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return new StringProperty("imagery.generic.loader.cachedir", defPath);
     }
@@ -85,10 +86,10 @@ public class CachedTileLoaderFactory implements TileLoaderFactory {
                     readTimeout,
                     headers);
         } catch (IllegalArgumentException e) {
-            Main.warn(e);
+            Logging.warn(e);
             throw e;
         } catch (ReflectiveOperationException e) {
-            Main.warn(e);
+            Logging.warn(e);
             throw new IllegalArgumentException(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/data/imagery/CoordinateConversion.java b/src/org/openstreetmap/josm/data/imagery/CoordinateConversion.java
new file mode 100644
index 0000000..b5a5fb1
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/imagery/CoordinateConversion.java
@@ -0,0 +1,56 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.imagery;
+
+import org.openstreetmap.gui.jmapviewer.Coordinate;
+import org.openstreetmap.gui.jmapviewer.Projected;
+import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
+import org.openstreetmap.gui.jmapviewer.interfaces.IProjected;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.LatLon;
+
+/**
+ * Allows easy conversion between JMapViewer coordinate types and JOSM coordinate types.
+ * @since 12669
+ */
+public final class CoordinateConversion {
+
+    private CoordinateConversion() {
+        // Hide default constructor for utility classes
+    }
+
+    /**
+     * Converts an {@link EastNorth} to an {@link IProjected} instance.
+     * @param en east/north coordinate
+     * @return {@code IProjected} instance
+     */
+    public static IProjected enToProj(EastNorth en) {
+        return new Projected(en.east(), en.north());
+    }
+
+    /**
+     * Converts an {@link IProjected} to an {@link EastNorth} instance.
+     * @param p projected coordinate
+     * @return {@code EastNorth} instance
+     */
+    public static EastNorth projToEn(IProjected p) {
+        return new EastNorth(p.getEast(), p.getNorth());
+    }
+
+    /**
+     * Converts a {@link LatLon} to an {@link ICoordinate} instance.
+     * @param ll latitude/longitude coordinate
+     * @return {@code ICoordinate} instance
+     */
+    public static ICoordinate llToCoor(LatLon ll) {
+        return new Coordinate(ll.lat(), ll.lon());
+    }
+
+    /**
+     * Converts an {@link ICoordinate} to a {@link LatLon} instance.
+     * @param c coordinate
+     * @return {@code LatLon} instance
+     */
+    public static LatLon coorToLL(ICoordinate c) {
+        return new LatLon(c.getLat(), c.getLon());
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
index 7c451ff..6cc6ea3 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
@@ -33,6 +33,7 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -420,7 +421,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
                         bounds.addShape(new Shape(s, ","));
                     }
                 } catch (IllegalArgumentException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
index f2fbdc8..3f89f3b 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
@@ -15,6 +15,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.concurrent.ExecutorService;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
@@ -23,6 +24,7 @@ import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.OfflineAccessException;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.io.imagery.ImageryReader;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -31,6 +33,7 @@ import org.xml.sax.SAXException;
  */
 public class ImageryLayerInfo {
 
+    /** Unique instance */
     public static final ImageryLayerInfo instance = new ImageryLayerInfo();
     /** List of all usable layers */
     private final List<ImageryInfo> layers = new ArrayList<>();
@@ -59,10 +62,17 @@ public class ImageryLayerInfo {
     private ImageryLayerInfo() {
     }
 
+    /**
+     * Constructs a new {@code ImageryLayerInfo} from an existing one.
+     * @param info info to copy
+     */
     public ImageryLayerInfo(ImageryLayerInfo info) {
         layers.addAll(info.layers);
     }
 
+    /**
+     * Clear the lists of layers.
+     */
     public void clear() {
         layers.clear();
         layerIds.clear();
@@ -81,32 +91,33 @@ public class ImageryLayerInfo {
                     ImageryInfo i = new ImageryInfo(prefEntry);
                     add(i);
                 } catch (IllegalArgumentException e) {
-                    Main.warn("Unable to load imagery preference entry:"+e);
+                    Logging.warn("Unable to load imagery preference entry:"+e);
                 }
             }
             Collections.sort(layers);
         }
-        loadDefaults(false, true, fastFail);
+        loadDefaults(false, null, fastFail);
     }
 
     /**
      * Loads the available imagery entries.
      *
      * The data is downloaded from the JOSM website (or loaded from cache).
-     * Entries marked as "default" are added to the user selection, if not
-     * already present.
+     * Entries marked as "default" are added to the user selection, if not already present.
      *
      * @param clearCache if true, clear the cache and start a fresh download.
-     * @param quiet whether not the loading should be performed using a {@link PleaseWaitRunnable} in the background
+     * @param worker executor service which will perform the loading.
+     * If null, it should be performed using a {@link PleaseWaitRunnable} in the background
      * @param fastFail whether opening HTTP connections should fail fast, see {@link ImageryReader#setFastFail(boolean)}
+     * @since 12634
      */
-    public void loadDefaults(boolean clearCache, boolean quiet, boolean fastFail) {
+    public void loadDefaults(boolean clearCache, ExecutorService worker, boolean fastFail) {
         final DefaultEntryLoader loader = new DefaultEntryLoader(clearCache, fastFail);
-        if (quiet) {
+        if (worker == null) {
             loader.realRun();
             loader.finish();
         } else {
-            Main.worker.execute(new DefaultEntryLoader(clearCache, fastFail));
+            worker.execute(loader);
         }
     }
 
@@ -149,7 +160,7 @@ public class ImageryLayerInfo {
             try {
                 OnlineResource.JOSM_WEBSITE.checkOfflineAccess(source, Main.getJOSMWebsite());
             } catch (OfflineAccessException e) {
-                Main.warn(e, false);
+                Logging.log(Logging.LEVEL_WARN, e);
                 online = false;
             }
             if (clearCache && online) {
@@ -162,10 +173,10 @@ public class ImageryLayerInfo {
                 newLayers.addAll(result);
             } catch (IOException ex) {
                 loadError = true;
-                Main.error(ex, false);
+                Logging.log(Logging.LEVEL_ERROR, ex);
             } catch (SAXException ex) {
                 loadError = true;
-                Main.error(ex);
+                Logging.error(ex);
             }
         }
 
@@ -204,7 +215,7 @@ public class ImageryLayerInfo {
             if (i.getId() != null) {
                 if (idMap.containsKey(i.getId())) {
                     notUnique.add(i.getId());
-                    Main.error("Id ''{0}'' is not unique - used by ''{1}'' and ''{2}''!",
+                    Logging.error("Id ''{0}'' is not unique - used by ''{1}'' and ''{2}''!",
                             i.getId(), i.getName(), idMap.get(i.getId()).getName());
                     continue;
                 }
@@ -255,7 +266,7 @@ public class ImageryLayerInfo {
                             }
                         }
                     } else {
-                        Main.error("Default imagery ''{0}'' has no id. Skipping.", def.getName());
+                        Logging.error("Default imagery ''{0}'' has no id. Skipping.", def.getName());
                     }
                 }
                 if (!isKnownDefault && !isInUserList) {
@@ -278,7 +289,7 @@ public class ImageryLayerInfo {
             ImageryInfo matchingDefault = defaultLayerIds.get(info.getId());
             if (matchingDefault != null && !matchingDefault.equalsPref(info)) {
                 layers.set(i, matchingDefault);
-                Main.info(tr("Update imagery ''{0}''", info.getName()));
+                Logging.info(tr("Update imagery ''{0}''", info.getName()));
                 changed = true;
             }
         }
@@ -299,7 +310,7 @@ public class ImageryLayerInfo {
             if (!defaultLayerIds.containsKey(info.getKey())) {
                 remove(info.getValue());
                 drop.add(info.getKey());
-                Main.info(tr("Drop old imagery ''{0}''", info.getValue().getName()));
+                Logging.info(tr("Drop old imagery ''{0}''", info.getValue().getName()));
             }
         }
 
@@ -325,14 +336,25 @@ public class ImageryLayerInfo {
         return Objects.equals(a, b) || (a != null && b != null && !a.isEmpty() && !b.isEmpty() && (a.contains(b) || b.contains(a)));
     }
 
+    /**
+     * Add a new imagery entry.
+     * @param info imagery entry to add
+     */
     public void add(ImageryInfo info) {
         layers.add(info);
     }
 
+    /**
+     * Remove an imagery entry.
+     * @param info imagery entry to remove
+     */
     public void remove(ImageryInfo info) {
         layers.remove(info);
     }
 
+    /**
+     * Save the list of imagery entries to preferences.
+     */
     public void save() {
         List<ImageryPreferenceEntry> entries = new ArrayList<>();
         for (ImageryInfo info : layers) {
diff --git a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
index f04e6fa..aa81a0e 100644
--- a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
+++ b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
@@ -18,8 +18,10 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class to save a displacement of background imagery as a bookmark.
@@ -77,7 +79,7 @@ public class OffsetBookmark {
             this.center_lat = Double.parseDouble(array.get(6));
         }
         if (projection_code == null) {
-            Main.error(tr("Projection ''{0}'' is not found, bookmark ''{1}'' is not usable", projection_code, name));
+            Logging.error(tr("Projection ''{0}'' is not found, bookmark ''{1}'' is not usable", projection_code, name));
         }
     }
 
@@ -244,8 +246,8 @@ public class OffsetBookmark {
 
     public static void bookmarkOffset(String name, AbstractTileSourceLayer layer) {
         LatLon center;
-        if (Main.isDisplayingMapView()) {
-            center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
+        if (MainApplication.isDisplayingMapView()) {
+            center = Main.getProjection().eastNorth2latlon(MainApplication.getMap().mapView.getCenter());
         } else {
             center = LatLon.ZERO;
         }
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
index bfd35c4..e07ba56 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
@@ -26,7 +26,6 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.cache.CacheEntry;
 import org.openstreetmap.josm.data.cache.CacheEntryAttributes;
@@ -34,6 +33,7 @@ import org.openstreetmap.josm.data.cache.ICachedLoaderListener;
 import org.openstreetmap.josm.data.cache.JCSCachedTileLoaderJob;
 import org.openstreetmap.josm.data.preferences.LongProperty;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class bridging TMS requests to JCS cache requests
@@ -123,7 +123,7 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                 return content.length > 0 || cacheData.getImage() != null || isNoTileAtZoom();
             } catch (IOException e) {
                 LOG.log(Level.WARNING, "JCS TMS - error loading from cache for tile {0}: {1}", new Object[] {tile.getKey(), e.getMessage()});
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return false;
@@ -151,7 +151,7 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
             super.submit(this, force);
         } catch (IOException | IllegalArgumentException e) {
             // if we fail to submit the job, mark tile as loaded and set error message
-            Main.warn(e, false);
+            Logging.log(Logging.LEVEL_WARN, e);
             tile.finishLoading();
             tile.setError(e.getMessage());
         }
diff --git a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
index c3d6ef0..ba79978 100644
--- a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
@@ -57,6 +57,7 @@ import org.openstreetmap.josm.gui.layer.NativeScaleLayer.ScaleList;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -292,7 +293,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         this.baseUrl = GetCapabilitiesParseHelper.normalizeCapabilitiesUrl(handleTemplate(info.getUrl()));
         this.layers = getCapabilities();
         if (info.getDefaultLayers().isEmpty()) {
-            Main.warn(tr("No default layer selected, choosing first layer."));
+            Logging.warn(tr("No default layer selected, choosing first layer."));
             if (!layers.isEmpty()) {
                 Layer first = layers.iterator().next();
                 this.defaultLayer = new WMTSDefaultLayer(first.identifier, first.tileMatrixSet.identifier);
@@ -382,7 +383,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                 return ret;
             } catch (XMLStreamException e) {
                 cf.clear();
-                Main.warn(new String(data, StandardCharsets.UTF_8));
+                Logging.warn(new String(data, StandardCharsets.UTF_8));
                 throw new IllegalArgumentException(e);
             }
         }
@@ -490,7 +491,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         }
         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}",
+            Logging.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;
@@ -659,7 +660,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
         if (matchingLayers.size() > 1) {
             this.currentLayer = matchingLayers.stream().filter(
                     l -> l.tileMatrixSet.identifier.equals(defaultLayer.getTileMatrixSet()))
-                    .findFirst().orElse(null);
+                    .findFirst().orElse(matchingLayers.get(0));
             this.tileProjection = proj;
         } else if (matchingLayers.size() == 1) {
             this.currentLayer = matchingLayers.get(0);
@@ -683,12 +684,14 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                     return;
             } // else: keep currentLayer and tileProjection as is
         }
-        this.currentTileMatrixSet = this.currentLayer.tileMatrixSet;
-        Collection<Double> scales = new ArrayList<>(currentTileMatrixSet.tileMatrix.size());
-        for (TileMatrix tileMatrix : currentTileMatrixSet.tileMatrix) {
-            scales.add(tileMatrix.scaleDenominator * 0.28e-03);
+        if (this.currentLayer != null) {
+            this.currentTileMatrixSet = this.currentLayer.tileMatrixSet;
+            Collection<Double> scales = new ArrayList<>(currentTileMatrixSet.tileMatrix.size());
+            for (TileMatrix tileMatrix : currentTileMatrixSet.tileMatrix) {
+                scales.add(tileMatrix.scaleDenominator * 0.28e-03);
+            }
+            this.nativeScaleList = new ScaleList(scales);
         }
-        this.nativeScaleList = new ScaleList(scales);
         this.crsScale = getTileSize() * 0.28e-03 / this.tileProjection.getMetersPerUnit();
     }
 
@@ -722,7 +725,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
             return projLayers.iterator().next().tileMatrixSet.tileMatrix.get(0).tileHeight;
         }
         // if no layers is found, fallback to default mercator tile size. Maybe it will work
-        Main.warn("WMTS: Could not determine tile size. Using default tile size of: {0}", getDefaultTileSize());
+        Logging.warn("WMTS: Could not determine tile size. Using default tile size of: {0}", getDefaultTileSize());
         return getDefaultTileSize();
     }
 
@@ -804,11 +807,11 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
     public ICoordinate tileXYToLatLon(int x, int y, int zoom) {
         TileMatrix matrix = getTileMatrix(zoom);
         if (matrix == null) {
-            return tileProjection.getWorldBoundsLatLon().getCenter().toCoordinate();
+            return CoordinateConversion.llToCoor(tileProjection.getWorldBoundsLatLon().getCenter());
         }
         double scale = matrix.scaleDenominator * this.crsScale;
         EastNorth ret = new EastNorth(matrix.topLeftCorner.east() + x * scale, matrix.topLeftCorner.north() - y * scale);
-        return tileProjection.eastNorth2latlon(ret).toCoordinate();
+        return CoordinateConversion.llToCoor(tileProjection.eastNorth2latlon(ret));
     }
 
     @Override
@@ -1010,10 +1013,13 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
                 -(projected.getNorth() - matrix.topLeftCorner.north()) / scale);
     }
 
+    private EastNorth tileToEastNorth(int x, int y, int z) {
+        return CoordinateConversion.projToEn(this.tileXYtoProjected(x, y, z));
+    }
+
     private ProjectionBounds getTileProjectionBounds(Tile tile) {
-        ProjectionBounds pb = new ProjectionBounds(new EastNorth(
-                this.tileXYtoProjected(tile.getXtile(), tile.getYtile(), tile.getZoom())));
-        pb.extend(new EastNorth(this.tileXYtoProjected(tile.getXtile() + 1, tile.getYtile() + 1, tile.getZoom())));
+        ProjectionBounds pb = new ProjectionBounds(tileToEastNorth(tile.getXtile(), tile.getYtile(), tile.getZoom()));
+        pb.extend(tileToEastNorth(tile.getXtile() + 1, tile.getYtile() + 1, tile.getZoom()));
         return pb;
     }
 
@@ -1021,8 +1027,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
     public boolean isInside(Tile inner, Tile outer) {
         ProjectionBounds pbInner = getTileProjectionBounds(inner);
         ProjectionBounds pbOuter = getTileProjectionBounds(outer);
-        // a little tolerance, for when inner tile touches the border of the
-        // outer tile
+        // a little tolerance, for when inner tile touches the border of the outer tile
         double epsilon = 1e-7 * (pbOuter.maxEast - pbOuter.minEast);
         return pbOuter.minEast <= pbInner.minEast + epsilon &&
                 pbOuter.minNorth <= pbInner.minNorth + epsilon &&
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAccessTokenHolder.java b/src/org/openstreetmap/josm/data/oauth/OAuthAccessTokenHolder.java
similarity index 91%
rename from src/org/openstreetmap/josm/gui/preferences/server/OAuthAccessTokenHolder.java
rename to src/org/openstreetmap/josm/data/oauth/OAuthAccessTokenHolder.java
index d050392..7cf7a99 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAccessTokenHolder.java
+++ b/src/org/openstreetmap/josm/data/oauth/OAuthAccessTokenHolder.java
@@ -1,17 +1,17 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.preferences.server;
+package org.openstreetmap.josm.data.oauth;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
-import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.io.auth.CredentialsAgent;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class holding OAuth access token key and secret.
+ * @since 12686 (moved from {@code gui.preferences.server} package)
  */
 public class OAuthAccessTokenHolder {
     private static OAuthAccessTokenHolder instance;
@@ -153,9 +153,9 @@ public class OAuthAccessTokenHolder {
         try {
             token = cm.lookupOAuthAccessToken();
         } catch (CredentialsAgentException e) {
-            Main.error(e);
-            Main.warn(tr("Failed to retrieve OAuth Access Token from credential manager"));
-            Main.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
+            Logging.error(e);
+            Logging.warn(tr("Failed to retrieve OAuth Access Token from credential manager"));
+            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
         }
         saveToPreferences = pref.getBoolean("oauth.access-token.save-to-preferences", true);
         if (token != null) {
@@ -184,9 +184,9 @@ public class OAuthAccessTokenHolder {
                 cm.storeOAuthAccessToken(new OAuthToken(accessTokenKey, accessTokenSecret));
             }
         } catch (CredentialsAgentException e) {
-            Main.error(e);
-            Main.warn(tr("Failed to store OAuth Access Token to credentials manager"));
-            Main.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
+            Logging.error(e);
+            Logging.warn(tr("Failed to store OAuth Access Token to credentials manager"));
+            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/upload/CyclicUploadDependencyException.java b/src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java
similarity index 94%
rename from src/org/openstreetmap/josm/actions/upload/CyclicUploadDependencyException.java
rename to src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java
index c3b0dd4..70993a6 100644
--- a/src/org/openstreetmap/josm/actions/upload/CyclicUploadDependencyException.java
+++ b/src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.upload;
+package org.openstreetmap.josm.data.osm;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -8,10 +8,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Stack;
 
-import org.openstreetmap.josm.data.osm.Relation;
-
 /**
  * This is an exception that is thrown if the user attempts to upload a list of relations with a cyclic dependency in them
+ * @since 12673 (moved from {@code action.upload} package)
  */
 public class CyclicUploadDependencyException extends Exception {
     private final List<Relation> cycle;
diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index bea7e72..247e973 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.Data;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.SelectionChangedListener;
+import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSelectionListener.SelectionAddEvent;
@@ -54,6 +55,7 @@ import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
@@ -194,6 +196,8 @@ public final class DataSet extends QuadBucketPrimitiveStore implements Data, Pro
      */
     private final Collection<DataSource> dataSources = new LinkedList<>();
 
+    private final ConflictCollection conflicts = new ConflictCollection();
+
     /**
      * Constructs a new {@code DataSet}.
      */
@@ -1009,10 +1013,10 @@ public final class DataSet extends QuadBucketPrimitiveStore implements Data, Pro
     private OsmPrimitive getPrimitiveByIdChecked(PrimitiveId primitiveId) {
         OsmPrimitive result = getPrimitiveById(primitiveId);
         if (result == null && primitiveId != null) {
-            Main.warn(tr("JOSM expected to find primitive [{0} {1}] in dataset but it is not there. Please report this "
+            Logging.warn(tr("JOSM expected to find primitive [{0} {1}] in dataset but it is not there. Please report this "
                     + "at {2}. This is not a critical error, it should be safe to continue in your work.",
                     primitiveId.getType(), Long.toString(primitiveId.getUniqueId()), Main.getJOSMWebsite()));
-            Main.error(new Exception());
+            Logging.error(new Exception());
         }
 
         return result;
@@ -1345,6 +1349,16 @@ public final class DataSet extends QuadBucketPrimitiveStore implements Data, Pro
         }
     }
 
+    /**
+     * Replies the set of conflicts currently managed in this layer.
+     *
+     * @return the set of conflicts currently managed in this layer
+     * @since 12672
+     */
+    public ConflictCollection getConflicts() {
+        return conflicts;
+    }
+
     /* --------------------------------------------------------------------------------- */
     /* interface ProjectionChangeListner                                                 */
     /* --------------------------------------------------------------------------------- */
diff --git a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
index b67c8a3..db5ae21 100644
--- a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
+++ b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
@@ -7,8 +7,8 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -185,11 +185,11 @@ public class DatasetConsistencyTest {
     }
 
     private void printElapsedTime(long startTime) {
-        if (Main.isDebugEnabled()) {
+        if (Logging.isDebugEnabled()) {
             StackTraceElement item = Thread.currentThread().getStackTrace()[2];
             String operation = getClass().getSimpleName() + '.' + item.getMethodName();
             long elapsedTime = System.currentTimeMillis() - startTime;
-            Main.debug(tr("Test ''{0}'' completed in {1}",
+            Logging.debug(tr("Test ''{0}'' completed in {1}",
                     operation, Utils.getDurationString(elapsedTime)));
         }
     }
@@ -215,7 +215,7 @@ public class DatasetConsistencyTest {
         } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
             writer.println("Exception during dataset integrity test:");
             e.printStackTrace(writer);
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
similarity index 98%
rename from src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
rename to src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
index c03b9a9..6ee4bd3 100644
--- a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
+++ b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui;
+package org.openstreetmap.josm.data.osm;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
@@ -23,15 +23,6 @@ import java.util.stream.Collectors;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.osm.Changeset;
-import org.openstreetmap.josm.data.osm.IPrimitive;
-import org.openstreetmap.josm.data.osm.IRelation;
-import org.openstreetmap.josm.data.osm.NameFormatter;
-import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.OsmUtils;
-import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.history.HistoryNameFormatter;
 import org.openstreetmap.josm.data.osm.history.HistoryNode;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
@@ -46,6 +37,7 @@ import org.openstreetmap.josm.tools.Utils;
 /**
  * This is the default implementation of a {@link NameFormatter} for names of {@link OsmPrimitive}s
  * and {@link HistoryOsmPrimitive}s.
+ * @since 12663 (moved from {@code gui} package)
  * @since 1990
  */
 public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter {
diff --git a/src/org/openstreetmap/josm/data/osm/Filter.java b/src/org/openstreetmap/josm/data/osm/Filter.java
index 278942f..4479f83 100644
--- a/src/org/openstreetmap/josm/data/osm/Filter.java
+++ b/src/org/openstreetmap/josm/data/osm/Filter.java
@@ -3,10 +3,10 @@ package org.openstreetmap.josm.data.osm;
 
 import java.util.Objects;
 
-import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
 import org.openstreetmap.josm.data.Preferences.pref;
 import org.openstreetmap.josm.data.Preferences.writeExplicitly;
+import org.openstreetmap.josm.data.osm.search.SearchMode;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
 
 /**
  * Data class representing one entry in the filter dialog.
diff --git a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
index 89d6fca..2d0c31d 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
@@ -5,12 +5,13 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Not;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchMode;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Not;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
@@ -77,7 +78,7 @@ public class FilterMatcher {
         private final boolean isDelete;
         private final boolean isInverted;
 
-        FilterInfo(Filter filter) throws ParseError {
+        FilterInfo(Filter filter) throws SearchParseError {
             if (filter.mode == SearchMode.remove || filter.mode == SearchMode.in_selection) {
                 isDelete = true;
             } else {
@@ -96,9 +97,9 @@ public class FilterMatcher {
     /**
      * Clears the current filters, and adds the given filters
      * @param filters the filters to add
-     * @throws ParseError if the search expression in one of the filters cannot be parsed
+     * @throws SearchParseError if the search expression in one of the filters cannot be parsed
      */
-    public void update(Collection<Filter> filters) throws ParseError {
+    public void update(Collection<Filter> filters) throws SearchParseError {
         reset();
         for (Filter filter : filters) {
             add(filter);
@@ -116,9 +117,9 @@ public class FilterMatcher {
     /**
      * Adds a filter to the currently used filters
      * @param filter the filter to add
-     * @throws ParseError if the search expression in the filter cannot be parsed
+     * @throws SearchParseError if the search expression in the filter cannot be parsed
      */
-    public void add(final Filter filter) throws ParseError {
+    public void add(final Filter filter) throws SearchParseError {
         if (!filter.enable) {
             return;
         }
@@ -223,9 +224,9 @@ public class FilterMatcher {
     }
 
     private static FilterType test(List<FilterInfo> filters, OsmPrimitive primitive, boolean hidden) {
-
+        MapFrame map = MainApplication.getMap();
         if (primitive.isIncomplete() ||
-                (Main.map != null && Main.map.mapMode != null && Main.map.mapMode.getPreservedPrimitives().contains(primitive)))
+                (map != null && map.mapMode != null && map.mapMode.getPreservedPrimitives().contains(primitive)))
             return FilterType.NOT_FILTERED;
 
         boolean filtered = false;
@@ -328,10 +329,10 @@ public class FilterMatcher {
      * Returns a new {@code FilterMatcher} containing the given filters.
      * @param filters filters to add to the resulting filter matcher
      * @return a new {@code FilterMatcher} containing the given filters
-     * @throws ParseError if the search expression in a filter cannot be parsed
+     * @throws SearchParseError if the search expression in a filter cannot be parsed
      * @since 12383
      */
-    public static FilterMatcher of(Filter... filters) throws ParseError {
+    public static FilterMatcher of(Filter... filters) throws SearchParseError {
         FilterMatcher result = new FilterMatcher();
         for (Filter filter : filters) {
             result.add(filter);
diff --git a/src/org/openstreetmap/josm/data/osm/FilterModel.java b/src/org/openstreetmap/josm/data/osm/FilterModel.java
index c027021..52e0dd1 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterModel.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterModel.java
@@ -16,10 +16,12 @@ import java.util.Stack;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.osm.Filter.FilterPreferenceEntry;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.OSDLabel;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -49,8 +51,8 @@ public class FilterModel {
         for (Filter filter : filters) {
             try {
                 filterMatcher.add(filter);
-            } catch (ParseError e) {
-                Main.error(e);
+            } catch (SearchParseError e) {
+                Logging.error(e);
                 JOptionPane.showMessageDialog(
                         Main.parent,
                         tr("<html>Error in filter <code>{0}</code>:<br>{1}",
@@ -93,7 +95,7 @@ public class FilterModel {
      * Runs the filters on the current edit data set.
      */
     public void executeFilters() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         changed = false;
         if (ds == null) {
             disabledAndHiddenCount = 0;
@@ -142,7 +144,7 @@ public class FilterModel {
      * @param primitives The primitives
      */
     public void executeFilters(Collection<? extends OsmPrimitive> primitives) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         if (ds == null)
             return;
 
@@ -194,7 +196,7 @@ public class FilterModel {
     }
 
     private static void updateMap() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.invalidate();
         }
@@ -204,7 +206,7 @@ public class FilterModel {
      * Clears all filtered flags from all primitives in the dataset
      */
     public void clearFilterFlags() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         if (ds != null) {
             FilterWorker.clearFilterFlags(ds.allPrimitives());
         }
@@ -321,7 +323,7 @@ public class FilterModel {
         lblOSD.setText(message);
         lblOSD.setSize(lblOSD.getPreferredSize());
 
-        int dx = Main.map.mapView.getWidth() - lblOSD.getPreferredSize().width - 15;
+        int dx = MainApplication.getMap().mapView.getWidth() - lblOSD.getPreferredSize().width - 15;
         int dy = 15;
         g.translate(dx, dy);
         lblOSD.paintComponent(g);
diff --git a/src/org/openstreetmap/josm/data/osm/FilterWorker.java b/src/org/openstreetmap/josm/data/osm/FilterWorker.java
index 4312dc2..6850c47 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterWorker.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterWorker.java
@@ -4,8 +4,8 @@ package org.openstreetmap.josm.data.osm;
 import java.util.Collection;
 import java.util.Collections;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.osm.FilterMatcher.FilterType;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
@@ -27,10 +27,10 @@ public final class FilterWorker {
      * @param all the collection of primitives for that the filter state should be updated
      * @param filters the filters
      * @return true, if the filter state (normal / disabled / hidden) of any primitive has changed in the process
-     * @throws ParseError if the search expression in a filter cannot be parsed
+     * @throws SearchParseError if the search expression in a filter cannot be parsed
      * @since 12383
      */
-    public static boolean executeFilters(Collection<OsmPrimitive> all, Filter... filters) throws ParseError {
+    public static boolean executeFilters(Collection<OsmPrimitive> all, Filter... filters) throws SearchParseError {
         return executeFilters(all, FilterMatcher.of(filters));
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
index 07c6ebd..b7d31e0 100644
--- a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
+++ b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
@@ -22,10 +22,10 @@ import java.util.concurrent.RecursiveTask;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Geometry.PolygonIntersection;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
@@ -202,7 +202,7 @@ public class MultipolygonBuilder {
             //analyze witch way is inside witch outside.
             return makeFromPolygons(joinedWays);
         } catch (JoinedPolygonCreationException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
             return ex.getMessage();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/NameFormatterHook.java b/src/org/openstreetmap/josm/data/osm/NameFormatterHook.java
similarity index 89%
rename from src/org/openstreetmap/josm/gui/NameFormatterHook.java
rename to src/org/openstreetmap/josm/data/osm/NameFormatterHook.java
index 0ea8aba..1c829fd 100644
--- a/src/org/openstreetmap/josm/gui/NameFormatterHook.java
+++ b/src/org/openstreetmap/josm/data/osm/NameFormatterHook.java
@@ -1,13 +1,10 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui;
-
-import org.openstreetmap.josm.data.osm.INode;
-import org.openstreetmap.josm.data.osm.IRelation;
-import org.openstreetmap.josm.data.osm.IWay;
+package org.openstreetmap.josm.data.osm;
 
 /**
  * Hooks that allow correcting the name of a OSM primitive
  * @see DefaultNameFormatter
+ * @since 12663 (moved from {@code gui} package)
  */
 public interface NameFormatterHook {
 
diff --git a/src/org/openstreetmap/josm/data/osm/NoteData.java b/src/org/openstreetmap/josm/data/osm/NoteData.java
index 77cad62..34ae8ef 100644
--- a/src/org/openstreetmap/josm/data/osm/NoteData.java
+++ b/src/org/openstreetmap/josm/data/osm/NoteData.java
@@ -9,13 +9,15 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.notes.Note.State;
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class to hold and perform operations on a set of notes
@@ -83,21 +85,24 @@ public class NoteData {
         return list;
     }
 
-    /** Returns the currently selected note
+    /**
+     * Returns the currently selected note
      * @return currently selected note
      */
     public Note getSelectedNote() {
         return selectedNote;
     }
 
-    /** Set a selected note. Causes the dialog to select the note and
+    /**
+     * Set a selected note. Causes the dialog to select the note and
      * the note layer to draw the selected note's comments.
      * @param note Selected note. Null indicates no selection
      */
     public void setSelectedNote(Note note) {
         selectedNote = note;
-        if (Main.map != null) {
-            Main.map.noteDialog.selectionChanged();
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.noteDialog.selectionChanged();
         }
         listeners.fireEvent(l -> l.selectedNoteChanged(this));
     }
@@ -136,7 +141,7 @@ public class NoteData {
                     noteList.put(newNote);
                 } else {
                     // TODO merge comments?
-                    Main.info("Keeping existing note id={0} with uncommitted changes", String.valueOf(newNote.getId()));
+                    Logging.info("Keeping existing note id={0} with uncommitted changes", String.valueOf(newNote.getId()));
                 }
             }
             if (newNote.getId() <= newNoteId) {
@@ -161,8 +166,8 @@ public class NoteData {
         note.setId(newNoteId--);
         NoteComment comment = new NoteComment(new Date(), getCurrentUser(), text, NoteComment.Action.OPENED, true);
         note.addComment(comment);
-        if (Main.isDebugEnabled()) {
-            Main.debug("Created note {0} with comment: {1}", note.getId(), text);
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("Created note {0} with comment: {1}", note.getId(), text);
         }
         noteList.add(note);
         dataUpdated();
@@ -180,8 +185,8 @@ public class NoteData {
         if (note.getState() == State.CLOSED) {
             throw new IllegalStateException("Cannot add a comment to a closed note");
         }
-        if (Main.isDebugEnabled()) {
-            Main.debug("Adding comment to note {0}: {1}", note.getId(), text);
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("Adding comment to note {0}: {1}", note.getId(), text);
         }
         NoteComment comment = new NoteComment(new Date(), getCurrentUser(), text, NoteComment.Action.COMMENTED, true);
         note.addComment(comment);
@@ -200,8 +205,8 @@ public class NoteData {
         if (note.getState() != State.OPEN) {
             throw new IllegalStateException("Cannot close a note that isn't open");
         }
-        if (Main.isDebugEnabled()) {
-            Main.debug("closing note {0} with comment: {1}", note.getId(), text);
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("closing note {0} with comment: {1}", note.getId(), text);
         }
         NoteComment comment = new NoteComment(new Date(), getCurrentUser(), text, NoteComment.Action.CLOSED, true);
         note.addComment(comment);
@@ -222,9 +227,7 @@ public class NoteData {
         if (note.getState() != State.CLOSED) {
             throw new IllegalStateException("Cannot reopen a note that isn't closed");
         }
-        if (Main.isDebugEnabled()) {
-            Main.debug("reopening note {0} with comment: {1}", note.getId(), text);
-        }
+        Logging.debug("reopening note {0} with comment: {1}", note.getId(), text);
         NoteComment comment = new NoteComment(new Date(), getCurrentUser(), text, NoteComment.Action.REOPENED, true);
         note.addComment(comment);
         note.setState(State.OPEN);
@@ -232,8 +235,8 @@ public class NoteData {
     }
 
     private void dataUpdated() {
-        if (Main.isDisplayingMapView()) {
-            Main.map.noteDialog.setNotes(getSortedNotes());
+        if (MainApplication.isDisplayingMapView()) {
+            MainApplication.getMap().noteDialog.setNotes(getSortedNotes());
         }
         listeners.fireEvent(l -> l.noteDataUpdated(this));
     }
diff --git a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
index 248bacc..22235a8 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
@@ -20,12 +20,13 @@ import java.util.Objects;
 import java.util.Set;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.gui.mappaint.StyleCache;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
 
@@ -759,13 +760,13 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
     private static Match compileDirectionKeys(String prefName, String defaultValue) throws AssertionError {
         try {
             return SearchCompiler.compile(Main.pref.get(prefName, defaultValue));
-        } catch (ParseError e) {
-            Main.error(e, "Unable to compile pattern for " + prefName + ", trying default pattern:");
+        } catch (SearchParseError e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to compile pattern for " + prefName + ", trying default pattern:", e);
         }
 
         try {
             return SearchCompiler.compile(defaultValue);
-        } catch (ParseError e2) {
+        } catch (SearchParseError e2) {
             throw new AssertionError("Unable to compile default pattern for direction keys: " + e2.getMessage(), e2);
         }
     }
diff --git a/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java b/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
index cf8dead..f331366 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmPrimitiveComparator.java
@@ -9,7 +9,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Function;
 
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 
 /**
diff --git a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
index 0a68387..409adaa 100644
--- a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
+++ b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
@@ -9,9 +9,9 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.NoSuchElementException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.coor.QuadTiling;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Note: bbox of primitives added to QuadBuckets has to stay the same. In case of coordinate change, primitive must
@@ -597,7 +597,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
 
         if (searchCache == null) {
             searchCache = root;
-            Main.info("bbox: " + searchBbox + " is out of the world");
+            Logging.info("bbox: " + searchBbox + " is out of the world");
         }
 
         // Save parent because searchCache might change during search call
diff --git a/src/org/openstreetmap/josm/data/osm/TagCollection.java b/src/org/openstreetmap/josm/data/osm/TagCollection.java
index 441ddce..86efe22 100644
--- a/src/org/openstreetmap/josm/data/osm/TagCollection.java
+++ b/src/org/openstreetmap/josm/data/osm/TagCollection.java
@@ -21,7 +21,7 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -376,7 +376,7 @@ public class TagCollection implements Iterable<Tag>, Serializable {
      * @return true it there is at least one tag with a non empty value for key.
      */
     public boolean hasValuesFor(String key) {
-        return generateStreamForKey(key).filter(t -> !t.getValue().isEmpty()).findAny().isPresent();
+        return generateStreamForKey(key).anyMatch(t -> !t.getValue().isEmpty());
     }
 
     /**
@@ -724,7 +724,7 @@ public class TagCollection implements Iterable<Tag>, Serializable {
             try {
                 result += Integer.parseInt(value);
             } catch (NumberFormatException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         return Integer.toString(result);
diff --git a/src/org/openstreetmap/josm/data/osm/Way.java b/src/org/openstreetmap/josm/data/osm/Way.java
index a92844e..80760dc 100644
--- a/src/org/openstreetmap/josm/data/osm/Way.java
+++ b/src/org/openstreetmap/josm/data/osm/Way.java
@@ -14,7 +14,6 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.CopyList;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
diff --git a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
index f17759c..2245ae1 100644
--- a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
@@ -11,9 +11,9 @@ import java.util.concurrent.LinkedBlockingQueue;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter.Listener;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 
@@ -151,7 +151,7 @@ public class DatasetEventManager implements ActiveLayerChangeListener, Listener
      * Constructs a new {@code DatasetEventManager}.
      */
     public DatasetEventManager() {
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
index ea24e40..83ab791 100644
--- a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
@@ -10,11 +10,11 @@ import java.util.stream.Stream;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
@@ -104,7 +104,7 @@ public class SelectionEventManager implements DataSelectionListener, ActiveLayer
      * Constructs a new {@code SelectionEventManager}.
      */
     protected SelectionEventManager() {
-        MainLayerManager layerManager = Main.getLayerManager();
+        MainLayerManager layerManager = MainApplication.getLayerManager();
         // We do not allow for destructing this object.
         // Currently, this is a singleton class, so this is not required.
         layerManager.addAndFireActiveLayerChangeListener(this);
@@ -211,6 +211,6 @@ public class SelectionEventManager implements DataSelectionListener, ActiveLayer
     public void resetState() {
         inEDTListeners.clear();
         immedatelyListeners.clear();
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java b/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
index 491e377..8de0f4c 100644
--- a/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
@@ -11,12 +11,12 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -40,7 +40,7 @@ public class HistoryDataSet implements LayerChangeListener {
     public static synchronized HistoryDataSet getInstance() {
         if (historyDataSet == null) {
             historyDataSet = new HistoryDataSet();
-            Main.getLayerManager().addLayerChangeListener(historyDataSet);
+            MainApplication.getLayerManager().addLayerChangeListener(historyDataSet);
         }
         return historyDataSet;
     }
@@ -225,8 +225,8 @@ public class HistoryDataSet implements LayerChangeListener {
 
     @Override
     public void layerRemoving(LayerRemoveEvent e) {
-        if (!Main.isDisplayingMapView()) return;
-        if (Main.getLayerManager().getLayers().isEmpty()) {
+        if (!MainApplication.isDisplayingMapView()) return;
+        if (MainApplication.getLayerManager().getLayers().isEmpty()) {
             data.clear();
             fireCacheCleared();
         }
diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
index 8b42e40..22326a7 100644
--- a/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
@@ -12,7 +12,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 
-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;
@@ -25,6 +24,7 @@ import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -353,7 +353,7 @@ public abstract class HistoryOsmPrimitive implements Tagged, Comparable<HistoryO
         try {
             data.setVisible(visible);
         } catch (IllegalStateException e) {
-            Main.error(e, "Cannot change visibility for "+data+':');
+            Logging.log(Logging.LEVEL_ERROR, "Cannot change visibility for "+data+':', e);
         }
         data.setTimestamp(timestamp);
         data.setKeys(tags);
diff --git a/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java b/src/org/openstreetmap/josm/data/osm/search/PushbackTokenizer.java
similarity index 94%
rename from src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
rename to src/org/openstreetmap/josm/data/osm/search/PushbackTokenizer.java
index a17d549..ea1d229 100644
--- a/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
+++ b/src/org/openstreetmap/josm/data/osm/search/PushbackTokenizer.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.search;
+package org.openstreetmap.josm.data.osm.search;
 
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
@@ -10,12 +10,12 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 
 /**
  * This class is used to parse a search string and split it into tokens.
  * It provides methods to parse numbers and extract strings.
+ * @since 12656 (moved from actions.search package)
  */
 public class PushbackTokenizer {
 
@@ -299,13 +299,13 @@ public class PushbackTokenizer {
      * Reads a number
      * @param errorMessage The error if the number cannot be read
      * @return The number that was found
-     * @throws ParseError if there is no number
+     * @throws SearchParseError if there is no number
      */
-    public long readNumber(String errorMessage) throws ParseError {
+    public long readNumber(String errorMessage) throws SearchParseError {
         if ((nextToken() == Token.KEY) && (currentNumber != null))
             return currentNumber;
         else
-            throw new ParseError(errorMessage);
+            throw new SearchParseError(errorMessage);
     }
 
     /**
@@ -320,11 +320,11 @@ public class PushbackTokenizer {
      * Reads a range of numbers
      * @param errorMessage The error if the input is malformed
      * @return The range that was found
-     * @throws ParseError If the input is not as expected for a range
+     * @throws SearchParseError If the input is not as expected for a range
      */
-    public Range readRange(String errorMessage) throws ParseError {
+    public Range readRange(String errorMessage) throws SearchParseError {
         if (nextToken() != Token.KEY || (currentNumber == null && currentRange == null)) {
-            throw new ParseError(errorMessage);
+            throw new SearchParseError(errorMessage);
         } else if (!isRange && currentNumber != null) {
             if (currentNumber >= 0) {
                 return new Range(currentNumber, currentNumber);
@@ -336,7 +336,7 @@ public class PushbackTokenizer {
         } else if (currentNumber != null && currentRange != null) {
             return new Range(currentNumber, currentRange);
         } else {
-            throw new ParseError(errorMessage);
+            throw new SearchParseError(errorMessage);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java b/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java
similarity index 89%
rename from src/org/openstreetmap/josm/actions/search/SearchCompiler.java
rename to src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java
index 861118c..9cae7a4 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
+++ b/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.search;
+package org.openstreetmap.josm.data.osm.search;
 
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
@@ -23,8 +23,6 @@ import java.util.regex.PatternSyntaxException;
 import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.PushbackTokenizer.Range;
-import org.openstreetmap.josm.actions.search.PushbackTokenizer.Token;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -35,6 +33,8 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.search.PushbackTokenizer.Range;
+import org.openstreetmap.josm.data.osm.search.PushbackTokenizer.Token;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
@@ -45,30 +45,32 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSeparator;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Geometry;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
- Implements a google-like search.
- <br>
- Grammar:
-<pre>
-expression =
-  fact | expression
-  fact expression
-  fact
-
-fact =
- ( expression )
- -fact
- term?
- term=term
- term:term
- term
- </pre>
-
- @author Imi
+ * Implements a google-like search.
+ * <br>
+ * Grammar:
+ * <pre>
+ * expression =
+ *   fact | expression
+ *   fact expression
+ *   fact
+ *
+ * fact =
+ *  ( expression )
+ *  -fact
+ *  term?
+ *  term=term
+ *  term:term
+ *  term
+ *  </pre>
+ *
+ * @author Imi
+ * @since 12656 (moved from actions.search package)
  */
 public class SearchCompiler {
 
@@ -81,18 +83,15 @@ public class SearchCompiler {
     private static Map<String, UnaryMatchFactory> unaryMatchFactoryMap = new HashMap<>();
     private static Map<String, BinaryMatchFactory> binaryMatchFactoryMap = new HashMap<>();
 
+    static {
+        addMatchFactory(new CoreSimpleMatchFactory());
+        addMatchFactory(new CoreUnaryMatchFactory());
+    }
+
     public SearchCompiler(boolean caseSensitive, boolean regexSearch, PushbackTokenizer tokenizer) {
         this.caseSensitive = caseSensitive;
         this.regexSearch = regexSearch;
         this.tokenizer = tokenizer;
-
-        // register core match factories at first instance, so plugins should never be able to generate a NPE
-        if (simpleMatchFactoryMap.isEmpty()) {
-            addMatchFactory(new CoreSimpleMatchFactory());
-        }
-        if (unaryMatchFactoryMap.isEmpty()) {
-            addMatchFactory(new CoreUnaryMatchFactory());
-        }
     }
 
     /**
@@ -111,19 +110,19 @@ public class SearchCompiler {
             } else
                 throw new AssertionError("Unknown match factory");
             if (existing != null) {
-                Main.warn("SearchCompiler: for key ''{0}'', overriding match factory ''{1}'' with ''{2}''", keyword, existing, factory);
+                Logging.warn("SearchCompiler: for key ''{0}'', overriding match factory ''{1}'' with ''{2}''", keyword, existing, factory);
             }
         }
     }
 
-    public class CoreSimpleMatchFactory implements SimpleMatchFactory {
+    public static class CoreSimpleMatchFactory implements SimpleMatchFactory {
         private final Collection<String> keywords = Arrays.asList("id", "version", "type", "user", "role",
                 "changeset", "nodes", "ways", "tags", "areasize", "waylength", "modified", "deleted", "selected",
                 "incomplete", "untagged", "closed", "new", "indownloadedarea",
-                "allindownloadedarea", "inview", "allinview", "timestamp", "nth", "nth%", "hasRole", "preset");
+                "allindownloadedarea", "timestamp", "nth", "nth%", "hasRole", "preset");
 
         @Override
-        public Match get(String keyword, PushbackTokenizer tokenizer) throws ParseError {
+        public Match get(String keyword, boolean caseSensitive, boolean regexSearch, PushbackTokenizer tokenizer) throws SearchParseError {
             switch(keyword) {
             case "modified":
                 return new Modified();
@@ -143,10 +142,6 @@ public class SearchCompiler {
                 return new InDataSourceArea(false);
             case "allindownloadedarea":
                 return new InDataSourceArea(true);
-            case "inview":
-                return new InView(false);
-            case "allinview":
-                return new InView(true);
             default:
                 if (tokenizer != null) {
                     switch (keyword) {
@@ -195,21 +190,21 @@ public class SearchCompiler {
                                 // if min timestap is empty: use lowest possible date
                                 minDate = DateUtils.fromString(rangeA1.isEmpty() ? "1980" : rangeA1).getTime();
                             } catch (UncheckedParseException ex) {
-                                throw new ParseError(tr("Cannot parse timestamp ''{0}''", rangeA1), ex);
+                                throw new SearchParseError(tr("Cannot parse timestamp ''{0}''", rangeA1), ex);
                             }
                             try {
                                 // if max timestamp is empty: use "now"
                                 maxDate = rangeA2.isEmpty() ? System.currentTimeMillis() : DateUtils.fromString(rangeA2).getTime();
                             } catch (UncheckedParseException ex) {
-                                throw new ParseError(tr("Cannot parse timestamp ''{0}''", rangeA2), ex);
+                                throw new SearchParseError(tr("Cannot parse timestamp ''{0}''", rangeA2), ex);
                             }
                             return new TimestampRange(minDate, maxDate);
                         } else {
-                            throw new ParseError("<html>" + tr("Expecting {0} after {1}", "<i>min</i>/<i>max</i>", "<i>timestamp</i>"));
+                            throw new SearchParseError("<html>" + tr("Expecting {0} after {1}", "<i>min</i>/<i>max</i>", "<i>timestamp</i>"));
                         }
                     }
                 } else {
-                    throw new ParseError("<html>" + tr("Expecting {0} after {1}", "<code>:</code>", "<i>" + keyword + "</i>"));
+                    throw new SearchParseError("<html>" + tr("Expecting {0} after {1}", "<code>:</code>", "<i>" + keyword + "</i>"));
                 }
             }
             throw new IllegalStateException("Not expecting keyword " + keyword);
@@ -249,20 +244,20 @@ public class SearchCompiler {
     }
 
     public interface SimpleMatchFactory extends MatchFactory {
-        Match get(String keyword, PushbackTokenizer tokenizer) throws ParseError;
+        Match get(String keyword, boolean caseSensitive, boolean regexSearch, PushbackTokenizer tokenizer) throws SearchParseError;
     }
 
     public interface UnaryMatchFactory extends MatchFactory {
-        UnaryMatch get(String keyword, Match matchOperand, PushbackTokenizer tokenizer) throws ParseError;
+        UnaryMatch get(String keyword, Match matchOperand, PushbackTokenizer tokenizer) throws SearchParseError;
     }
 
     public interface BinaryMatchFactory extends MatchFactory {
-        AbstractBinaryMatch get(String keyword, Match lhs, Match rhs, PushbackTokenizer tokenizer) throws ParseError;
+        AbstractBinaryMatch get(String keyword, Match lhs, Match rhs, PushbackTokenizer tokenizer) throws SearchParseError;
     }
 
     /**
      * Base class for all search criteria. If the criterion only depends on an object's tags,
-     * inherit from {@link org.openstreetmap.josm.actions.search.SearchCompiler.TaggedMatch}.
+     * inherit from {@link org.openstreetmap.josm.data.osm.search.SearchCompiler.TaggedMatch}.
      */
     public abstract static class Match implements Predicate<OsmPrimitive> {
 
@@ -533,7 +528,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        Id(PushbackTokenizer tokenizer) throws ParseError {
+        Id(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of primitive ids expected")));
         }
 
@@ -556,7 +551,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        ChangesetId(PushbackTokenizer tokenizer) throws ParseError {
+        ChangesetId(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of changeset ids expected")));
         }
 
@@ -579,7 +574,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        Version(PushbackTokenizer tokenizer) throws ParseError {
+        Version(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of versions expected")));
         }
 
@@ -604,7 +599,7 @@ public class SearchCompiler {
         private final Pattern valuePattern;
         private final boolean caseSensitive;
 
-        KeyValue(String key, String value, boolean regexSearch, boolean caseSensitive) throws ParseError {
+        KeyValue(String key, String value, boolean regexSearch, boolean caseSensitive) throws SearchParseError {
             this.caseSensitive = caseSensitive;
             if (regexSearch) {
                 int searchFlags = regexFlags(caseSensitive);
@@ -612,16 +607,16 @@ public class SearchCompiler {
                 try {
                     this.keyPattern = Pattern.compile(key, searchFlags);
                 } catch (PatternSyntaxException e) {
-                    throw new ParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
                 } catch (IllegalArgumentException e) {
-                    throw new ParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
                 }
                 try {
                     this.valuePattern = Pattern.compile(value, searchFlags);
                 } catch (PatternSyntaxException e) {
-                    throw new ParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
                 } catch (IllegalArgumentException | StringIndexOutOfBoundsException e) {
-                    throw new ParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
                 }
                 this.key = key;
                 this.value = value;
@@ -715,7 +710,7 @@ public class SearchCompiler {
                     v = Double.valueOf(referenceValue);
                 }
             } catch (NumberFormatException ignore) {
-                Main.trace(ignore);
+                Logging.trace(ignore);
             }
             this.referenceNumber = v;
             this.compareMode = compareMode;
@@ -768,11 +763,11 @@ public class SearchCompiler {
          * @param regexp regular expression
          * @param key key
          * @param value value
-         * @throws ParseError if a parse error occurs
+         * @throws SearchParseError if a parse error occurs
          */
-        public ExactKeyValue(boolean regexp, String key, String value) throws ParseError {
+        public ExactKeyValue(boolean regexp, String key, String value) throws SearchParseError {
             if ("".equals(key))
-                throw new ParseError(tr("Key cannot be empty when tag operator is used. Sample use: key=value"));
+                throw new SearchParseError(tr("Key cannot be empty when tag operator is used. Sample use: key=value"));
             this.key = key;
             this.value = value == null ? "" : value;
             if ("".equals(this.value) && "*".equals(key)) {
@@ -809,9 +804,9 @@ public class SearchCompiler {
                 try {
                     keyPattern = Pattern.compile(key, regexFlags(false));
                 } catch (PatternSyntaxException e) {
-                    throw new ParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
                 } catch (IllegalArgumentException e) {
-                    throw new ParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
                 }
             } else {
                 keyPattern = null;
@@ -820,9 +815,9 @@ public class SearchCompiler {
                 try {
                     valuePattern = Pattern.compile(this.value, regexFlags(false));
                 } catch (PatternSyntaxException e) {
-                    throw new ParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
                 } catch (IllegalArgumentException e) {
-                    throw new ParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
                 }
             } else {
                 valuePattern = null;
@@ -890,18 +885,18 @@ public class SearchCompiler {
         private final Pattern searchRegex;
         private final boolean caseSensitive;
 
-        Any(String s, boolean regexSearch, boolean caseSensitive) throws ParseError {
+        Any(String s, boolean regexSearch, boolean caseSensitive) throws SearchParseError {
             s = Normalizer.normalize(s, Normalizer.Form.NFC);
             this.caseSensitive = caseSensitive;
             if (regexSearch) {
                 try {
                     this.searchRegex = Pattern.compile(s, regexFlags(caseSensitive));
                 } catch (PatternSyntaxException e) {
-                    throw new ParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
                 } catch (IllegalArgumentException | StringIndexOutOfBoundsException e) {
                     // StringIndexOutOfBoundsException catched because of https://bugs.openjdk.java.net/browse/JI-9044959
                     // See #13870: To remove after we switch to a version of Java which resolves this bug
-                    throw new ParseError(tr(rxErrorMsgNoPos, s, e.getMessage()), e);
+                    throw new SearchParseError(tr(rxErrorMsgNoPos, s, e.getMessage()), e);
                 }
                 this.search = s;
             } else if (caseSensitive) {
@@ -956,10 +951,10 @@ public class SearchCompiler {
     private static class ExactType extends Match {
         private final OsmPrimitiveType type;
 
-        ExactType(String type) throws ParseError {
+        ExactType(String type) throws SearchParseError {
             this.type = OsmPrimitiveType.from(type);
             if (this.type == null)
-                throw new ParseError(tr("Unknown primitive type: {0}. Allowed values are node, way or relation", type));
+                throw new SearchParseError(tr("Unknown primitive type: {0}. Allowed values are node, way or relation", type));
         }
 
         @Override
@@ -1045,7 +1040,7 @@ public class SearchCompiler {
         private final int nth;
         private final boolean modulo;
 
-        Nth(PushbackTokenizer tokenizer, boolean modulo) throws ParseError {
+        Nth(PushbackTokenizer tokenizer, boolean modulo) throws SearchParseError {
             this((int) tokenizer.readNumber(tr("Positive integer expected")), modulo);
         }
 
@@ -1128,7 +1123,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        NodeCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        NodeCountRange(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1157,7 +1152,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        WayCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        WayCountRange(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1186,7 +1181,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        TagCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        TagCountRange(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1411,7 +1406,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        AreaSize(PushbackTokenizer tokenizer) throws ParseError {
+        AreaSize(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1436,7 +1431,7 @@ public class SearchCompiler {
             super(range);
         }
 
-        WayLength(PushbackTokenizer tokenizer) throws ParseError {
+        WayLength(PushbackTokenizer tokenizer) throws SearchParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1457,14 +1452,14 @@ public class SearchCompiler {
     /**
      * Matches objects within the given bounds.
      */
-    private abstract static class InArea extends Match {
+    public abstract static class InArea extends Match {
 
         protected final boolean all;
 
         /**
          * @param all if true, all way nodes or relation members have to be within source area;if false, one suffices.
          */
-        InArea(boolean all) {
+        protected InArea(boolean all) {
             this.all = all;
         }
 
@@ -1539,39 +1534,16 @@ public class SearchCompiler {
     }
 
     /**
-     * Matches objects within current map view.
-     */
-    private static class InView extends InArea {
-
-        InView(boolean all) {
-            super(all);
-        }
-
-        @Override
-        protected Collection<Bounds> getBounds(OsmPrimitive primitive) {
-            if (!Main.isDisplayingMapView()) {
-                return null;
-            }
-            return Collections.singleton(Main.map.mapView.getRealBounds());
-        }
-
-        @Override
-        public String toString() {
-            return all ? "allinview" : "inview";
-        }
-    }
-
-    /**
      * Matches presets.
      * @since 12464
      */
     private static class Preset extends Match {
         private final List<TaggingPreset> presets;
 
-        Preset(String presetName) throws ParseError {
+        Preset(String presetName) throws SearchParseError {
 
             if (presetName == null || presetName.isEmpty()) {
-                throw new ParseError("The name of the preset is required");
+                throw new SearchParseError("The name of the preset is required");
             }
 
             int wildCardIdx = presetName.lastIndexOf('*');
@@ -1590,7 +1562,7 @@ public class SearchCompiler {
                     .collect(Collectors.toList());
 
             if (this.presets.isEmpty()) {
-                throw new ParseError(tr("Unknown preset name: ") + presetName);
+                throw new SearchParseError(tr("Unknown preset name: ") + presetName);
             }
         }
 
@@ -1621,28 +1593,14 @@ public class SearchCompiler {
         }
     }
 
-    public static class ParseError extends Exception {
-        public ParseError(String msg) {
-            super(msg);
-        }
-
-        public ParseError(String msg, Throwable cause) {
-            super(msg, cause);
-        }
-
-        public ParseError(Token expected, Token found) {
-            this(tr("Unexpected token. Expected {0}, found {1}", expected, found));
-        }
-    }
-
     /**
      * Compiles the search expression.
      * @param searchStr the search expression
      * @return a {@link Match} object for the expression
-     * @throws ParseError if an error has been encountered while compiling
-     * @see #compile(org.openstreetmap.josm.actions.search.SearchAction.SearchSetting)
+     * @throws SearchParseError if an error has been encountered while compiling
+     * @see #compile(SearchSetting)
      */
-    public static Match compile(String searchStr) throws ParseError {
+    public static Match compile(String searchStr) throws SearchParseError {
         return new SearchCompiler(false, false,
                 new PushbackTokenizer(
                         new PushbackReader(new StringReader(searchStr))))
@@ -1653,10 +1611,10 @@ public class SearchCompiler {
      * Compiles the search expression.
      * @param setting the settings to use
      * @return a {@link Match} object for the expression
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      * @see #compile(String)
      */
-    public static Match compile(SearchAction.SearchSetting setting) throws ParseError {
+    public static Match compile(SearchSetting setting) throws SearchParseError {
         if (setting.mapCSSSearch) {
             return compileMapCSS(setting.text);
         }
@@ -1666,7 +1624,7 @@ public class SearchCompiler {
                 .parse();
     }
 
-    static Match compileMapCSS(String mapCSS) throws ParseError {
+    static Match compileMapCSS(String mapCSS) throws SearchParseError {
         try {
             final List<Selector> selectors = new MapCSSParser(new StringReader(mapCSS)).selectors();
             return new Match() {
@@ -1681,7 +1639,7 @@ public class SearchCompiler {
                 }
             };
         } catch (ParseException e) {
-            throw new ParseError(tr("Failed to parse MapCSS selector"), e);
+            throw new SearchParseError(tr("Failed to parse MapCSS selector"), e);
         }
     }
 
@@ -1689,13 +1647,13 @@ public class SearchCompiler {
      * Parse search string.
      *
      * @return match determined by search string
-     * @throws org.openstreetmap.josm.actions.search.SearchCompiler.ParseError if search expression cannot be parsed
+     * @throws org.openstreetmap.josm.data.osm.search.SearchParseError if search expression cannot be parsed
      */
-    public Match parse() throws ParseError {
+    public Match parse() throws SearchParseError {
         Match m = Optional.ofNullable(parseExpression()).orElse(Always.INSTANCE);
         if (!tokenizer.readIfEqual(Token.EOF))
-            throw new ParseError(tr("Unexpected token: {0}", tokenizer.nextToken()));
-        Main.debug("Parsed search expression is {0}", m);
+            throw new SearchParseError(tr("Unexpected token: {0}", tokenizer.nextToken()));
+        Logging.debug("Parsed search expression is {0}", m);
         return m;
     }
 
@@ -1703,9 +1661,9 @@ public class SearchCompiler {
      * Parse expression.
      *
      * @return match determined by parsing expression
-     * @throws ParseError if search expression cannot be parsed
+     * @throws SearchParseError if search expression cannot be parsed
      */
-    private Match parseExpression() throws ParseError {
+    private Match parseExpression() throws SearchParseError {
         // Step 1: parse the whole expression and build a list of factors and logical tokens
         List<Object> list = parseExpressionStep1();
         // Step 2: iterate the list in reverse order to build the logical expression
@@ -1713,7 +1671,7 @@ public class SearchCompiler {
         return parseExpressionStep2(list);
     }
 
-    private List<Object> parseExpressionStep1() throws ParseError {
+    private List<Object> parseExpressionStep1() throws SearchParseError {
         Match factor;
         String token = null;
         String errorMessage = null;
@@ -1736,7 +1694,7 @@ public class SearchCompiler {
                     errorMessage = null;
                 }
             } else if (errorMessage != null) {
-                throw new ParseError(errorMessage);
+                throw new SearchParseError(errorMessage);
             }
         } while (factor != null);
         return list;
@@ -1774,13 +1732,13 @@ public class SearchCompiler {
      * Parse next factor (a search operator or search term).
      *
      * @return match determined by parsing factor string
-     * @throws ParseError if search expression cannot be parsed
+     * @throws SearchParseError if search expression cannot be parsed
      */
-    private Match parseFactor() throws ParseError {
+    private Match parseFactor() throws SearchParseError {
         if (tokenizer.readIfEqual(Token.LEFT_PARENT)) {
             Match expression = parseExpression();
             if (!tokenizer.readIfEqual(Token.RIGHT_PARENT))
-                throw new ParseError(Token.RIGHT_PARENT, tokenizer.nextToken());
+                throw new SearchParseError(Token.RIGHT_PARENT, tokenizer.nextToken());
             return expression;
         } else if (tokenizer.readIfEqual(Token.NOT)) {
             return new Not(parseFactor(tr("Missing operator for NOT")));
@@ -1797,7 +1755,7 @@ public class SearchCompiler {
                 // see if we have a Match that takes a data parameter
                 SimpleMatchFactory factory = simpleMatchFactoryMap.get(key);
                 if (factory != null)
-                    return factory.get(key, tokenizer);
+                    return factory.get(key, caseSensitive, regexSearch, tokenizer);
 
                 UnaryMatchFactory unaryFactory = unaryMatchFactoryMap.get(key);
                 if (unaryFactory != null)
@@ -1811,7 +1769,7 @@ public class SearchCompiler {
             else {
                 SimpleMatchFactory factory = simpleMatchFactoryMap.get(key);
                 if (factory != null)
-                    return factory.get(key, null);
+                    return factory.get(key, caseSensitive, regexSearch, null);
 
                 UnaryMatchFactory unaryFactory = unaryMatchFactoryMap.get(key);
                 if (unaryFactory != null)
@@ -1824,8 +1782,8 @@ public class SearchCompiler {
             return null;
     }
 
-    private Match parseFactor(String errorMessage) throws ParseError {
-        return Optional.ofNullable(parseFactor()).orElseThrow(() -> new ParseError(errorMessage));
+    private Match parseFactor(String errorMessage) throws SearchParseError {
+        return Optional.ofNullable(parseFactor()).orElseThrow(() -> new SearchParseError(errorMessage));
     }
 
     private static int regexFlags(boolean caseSensitive) {
@@ -1871,4 +1829,3 @@ public class SearchCompiler {
         }
     }
 }
-
diff --git a/src/org/openstreetmap/josm/data/osm/search/SearchMode.java b/src/org/openstreetmap/josm/data/osm/search/SearchMode.java
new file mode 100644
index 0000000..761d4c2
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/search/SearchMode.java
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm.search;
+
+/**
+ * Search mode.
+ * @since 12659 (extracted from {@code SearchAction})
+ */
+public enum SearchMode {
+    /** replace selection */
+    replace('R'),
+    /** add to selection */
+    add('A'),
+    /** remove from selection */
+    remove('D'),
+    /** find in selection */
+    in_selection('S');
+
+    private final char code;
+
+    SearchMode(char code) {
+        this.code = code;
+    }
+
+    /**
+     * Returns the unique character code of this mode.
+     * @return the unique character code of this mode
+     */
+    public char getCode() {
+        return code;
+    }
+
+    /**
+     * Returns the search mode matching the given character code.
+     * @param code character code
+     * @return search mode matching the given character code
+     */
+    public static SearchMode fromCode(char code) {
+        for (SearchMode mode: values()) {
+            if (mode.getCode() == code)
+                return mode;
+        }
+        return null;
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/osm/search/SearchParseError.java b/src/org/openstreetmap/josm/data/osm/search/SearchParseError.java
new file mode 100644
index 0000000..e4671c3
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/search/SearchParseError.java
@@ -0,0 +1,39 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm.search;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.data.osm.search.PushbackTokenizer.Token;
+
+/**
+ * Search compiler parsing error.
+ * @since 12656 (extracted from {@link SearchCompiler}).
+ */
+public class SearchParseError extends Exception {
+
+    /**
+     * Constructs a new generic {@code ParseError}.
+     * @param msg the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
+     */
+    public SearchParseError(String msg) {
+        super(msg);
+    }
+
+    /**
+     * Constructs a new generic {@code ParseError}.
+     * @param msg the detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.
+     * @param  cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
+     */
+    public SearchParseError(String msg, Throwable cause) {
+        super(msg, cause);
+    }
+
+    /**
+     * Constructs a new detailed {@code ParseError}.
+     * @param expected expected token
+     * @param found actual token
+     */
+    public SearchParseError(Token expected, Token found) {
+        this(tr("Unexpected token. Expected {0}, found {1}", expected, found));
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/osm/search/SearchSetting.java b/src/org/openstreetmap/josm/data/osm/search/SearchSetting.java
new file mode 100644
index 0000000..f001bfc
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/search/SearchSetting.java
@@ -0,0 +1,162 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm.search;
+
+import static org.openstreetmap.josm.tools.I18n.trc;
+
+import java.util.Objects;
+
+import org.openstreetmap.josm.tools.Logging;
+
+/**
+ * This class defines a set of parameters that is used to
+ * perform search within the search dialog.
+ * @since 12659 (extracted from {@code SearchAction})
+ */
+public class SearchSetting {
+    public String text;
+    public SearchMode mode;
+    public boolean caseSensitive;
+    public boolean regexSearch;
+    public boolean mapCSSSearch;
+    public boolean allElements;
+
+    /**
+     * Constructs a new {@code SearchSetting}.
+     */
+    public SearchSetting() {
+        text = "";
+        mode = SearchMode.replace;
+    }
+
+    /**
+     * Constructs a new {@code SearchSetting} from an existing one.
+     * @param original original search settings
+     */
+    public SearchSetting(SearchSetting original) {
+        text = original.text;
+        mode = original.mode;
+        caseSensitive = original.caseSensitive;
+        regexSearch = original.regexSearch;
+        mapCSSSearch = original.mapCSSSearch;
+        allElements = original.allElements;
+    }
+
+    @Override
+    public String toString() {
+        String cs = caseSensitive ?
+                /*case sensitive*/  trc("search", "CS") :
+                    /*case insensitive*/  trc("search", "CI");
+        String rx = regexSearch ? ", " +
+                        /*regex search*/ trc("search", "RX") : "";
+        String css = mapCSSSearch ? ", " +
+                        /*MapCSS search*/ trc("search", "CSS") : "";
+        String all = allElements ? ", " +
+                        /*all elements*/ trc("search", "A") : "";
+        return '"' + text + "\" (" + cs + rx + css + all + ", " + mode + ')';
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (this == other) return true;
+        if (other == null || getClass() != other.getClass()) return false;
+        SearchSetting that = (SearchSetting) other;
+        return caseSensitive == that.caseSensitive &&
+                regexSearch == that.regexSearch &&
+                mapCSSSearch == that.mapCSSSearch &&
+                allElements == that.allElements &&
+                mode == that.mode &&
+                Objects.equals(text, that.text);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(text, mode, caseSensitive, regexSearch, mapCSSSearch, allElements);
+    }
+
+    /**
+     * <p>Transforms a string following a certain format, namely "[R | A | D | S][C?,R?,A?,M?] [a-zA-Z]"
+     * where the first part defines the mode of the search, see {@link SearchMode}, the second defines
+     * a set of attributes within the {@code SearchSetting} class and the second is the search query.
+     * <p>
+     * Attributes are as follows:
+     * <ul>
+     *     <li>C - if search is case sensitive
+     *     <li>R - if the regex syntax is used
+     *     <li>A - if all objects are considered
+     *     <li>M - if the mapCSS syntax is used
+     * </ul>
+     * <p>For example, "RC type:node" is a valid string representation of an object that replaces the
+     * current selection, is case sensitive and searches for all objects of type node.
+     * @param s A string representation of a {@code SearchSetting} object
+     *          from which the object must be built.
+     * @return A {@code SearchSetting} defined by the input string.
+     */
+    public static SearchSetting readFromString(String s) {
+        if (s.isEmpty())
+            return null;
+
+        SearchSetting result = new SearchSetting();
+
+        int index = 1;
+
+        result.mode = SearchMode.fromCode(s.charAt(0));
+        if (result.mode == null) {
+            result.mode = SearchMode.replace;
+            index = 0;
+        }
+
+        while (index < s.length()) {
+            if (s.charAt(index) == 'C') {
+                result.caseSensitive = true;
+            } else if (s.charAt(index) == 'R') {
+                result.regexSearch = true;
+            } else if (s.charAt(index) == 'A') {
+                result.allElements = true;
+            } else if (s.charAt(index) == 'M') {
+                result.mapCSSSearch = true;
+            } else if (s.charAt(index) == ' ') {
+                break;
+            } else {
+                Logging.warn("Unknown char in SearchSettings: " + s);
+                break;
+            }
+            index++;
+        }
+
+        if (index < s.length() && s.charAt(index) == ' ') {
+            index++;
+        }
+
+        result.text = s.substring(index);
+
+        return result;
+    }
+
+    /**
+     * Builds a string representation of the {@code SearchSetting} object,
+     * see {@link #readFromString(String)} for more details.
+     * @return A string representation of the {@code SearchSetting} object.
+     */
+    public String writeToString() {
+        if (text == null || text.isEmpty())
+            return "";
+
+        StringBuilder result = new StringBuilder();
+        result.append(mode.getCode());
+        if (caseSensitive) {
+            result.append('C');
+        }
+        if (regexSearch) {
+            result.append('R');
+        }
+        if (mapCSSSearch) {
+            result.append('M');
+        }
+        if (allElements) {
+            result.append('A');
+        }
+        result.append(' ')
+              .append(text);
+        return result.toString();
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/osm/search/package-info.java b/src/org/openstreetmap/josm/data/osm/search/package-info.java
new file mode 100644
index 0000000..057d766
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/search/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes allowing to search OSM primitives in a dataset using textual queries.
+ */
+package org.openstreetmap.josm.data.osm.search;
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java b/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
index 46ef73b..6e3c02e 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
@@ -14,6 +14,8 @@ 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.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
  * Calculates the total bounding rectangle of a series of {@link OsmPrimitive} objects, using the
@@ -196,7 +198,8 @@ public class BoundingXYVisitor extends AbstractVisitor {
         if (bounds == null)
             return;
         // convert size from meters to east/north units
-        double enSize = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
+        MapFrame map = MainApplication.getMap();
+        double enSize = size * map.mapView.getScale() / map.mapView.getDist100Pixel() * 100;
         visit(bounds.getMin().add(-enSize/2, -enSize/2));
         visit(bounds.getMax().add(+enSize/2, +enSize/2));
     }
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java
index a13b9d8..737899e 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * <p>Abstract common superclass for {@link Rendering} implementations.</p>
@@ -156,7 +157,7 @@ public abstract class AbstractMapRenderer implements Rendering {
             // avoid the WaySegment class and add another data class with { Way way; Node firstNode, secondNode; int firstIdx; }.
             // On read, it would first check, if the way still has firstIdx+2 nodes, then check if the corresponding way nodes are still
             // the same and report changes in a more controlled manner.
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
index 92d2d95..661e730 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * <p>MapRendererFactory manages a list of map renderer classes and associated
@@ -137,10 +138,10 @@ public final class MapRendererFactory {
             try {
                 return Class.forName(className, true, cl);
             } catch (final NoClassDefFoundError | ClassNotFoundException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
-        Main.error(tr("Failed to load map renderer class ''{0}''. The class wasn''t found.", className));
+        Logging.error(tr("Failed to load map renderer class ''{0}''. The class wasn''t found.", className));
         return null;
     }
 
@@ -160,19 +161,20 @@ public final class MapRendererFactory {
     private void activateMapRenderer(String rendererClassName) {
         Class<?> c = loadRendererClass(rendererClassName);
         if (c == null) {
-            Main.error(tr("Can''t activate map renderer class ''{0}'', because the class wasn''t found.", rendererClassName));
-            Main.error(tr("Activating the standard map renderer instead."));
+            Logging.error(tr("Can''t activate map renderer class ''{0}'', because the class wasn''t found.", rendererClassName));
+            Logging.error(tr("Activating the standard map renderer instead."));
             activateDefault();
         } else if (!AbstractMapRenderer.class.isAssignableFrom(c)) {
-            Main.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t a subclass of ''{1}''.",
+            Logging.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t a subclass of ''{1}''.",
                     rendererClassName, AbstractMapRenderer.class.getName()));
-            Main.error(tr("Activating the standard map renderer instead."));
+            Logging.error(tr("Activating the standard map renderer instead."));
             activateDefault();
         } else {
             Class<? extends AbstractMapRenderer> renderer = c.asSubclass(AbstractMapRenderer.class);
             if (!isRegistered(renderer)) {
-                Main.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t registered as map renderer.", rendererClassName));
-                Main.error(tr("Activating the standard map renderer instead."));
+                Logging.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t registered as map renderer.",
+                        rendererClassName));
+                Logging.error(tr("Activating the standard map renderer instead."));
                 activateDefault();
             } else {
                 activate(renderer);
@@ -305,7 +307,7 @@ public final class MapRendererFactory {
             Constructor<?> c = activeRenderer.getConstructor(Graphics2D.class, NavigatableComponent.class, boolean.class);
             return AbstractMapRenderer.class.cast(c.newInstance(g, viewport, isInactiveMode));
         } catch (InvocationTargetException e) {
-            Main.debug(e);
+            Logging.debug(e);
             throw new MapRendererFactoryException(e.getCause());
         } catch (ReflectiveOperationException | IllegalArgumentException e) {
             throw new MapRendererFactoryException(e);
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 db96872..d5fe1fd 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
@@ -8,6 +8,7 @@ import java.util.function.Supplier;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -146,7 +147,7 @@ public class RenderBenchmarkCollector {
      * @return A supplier that returns a nop or a logging benchmark.
      */
     public static Supplier<RenderBenchmarkCollector> defaultBenchmarkSupplier() {
-        return () -> Main.isTraceEnabled() || Main.pref.getBoolean("mappaint.render.benchmark", false)
+        return () -> Logging.isTraceEnabled() || Main.pref.getBoolean("mappaint.render.benchmark", false)
                 ? new LoggingBenchmark() : new RenderBenchmarkCollector();
     }
 }
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 d23fff1..b487c6f 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
@@ -240,8 +240,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             GlyphVector gv = font.createGlyphVector(frc, "x");
             gv.setGlyphTransform(0, AffineTransform.getTranslateInstance(1000, 1000));
             Shape shape = gv.getGlyphOutline(0);
-            if (Main.isTraceEnabled()) {
-                Main.trace("#10446: shape: "+shape.getBounds());
+            if (Logging.isTraceEnabled()) {
+                Logging.trace("#10446: shape: {0}", shape.getBounds());
             }
             // x is about 1000 on normal stystems and about 2000 when the bug occurs
             int x = shape.getBounds().x;
@@ -1128,8 +1128,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                                 (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);
+            } else {
+                Logging.trace("Couldn't find a correct label placement for {0} / {1}", osm, name);
             }
         });
         g.setFont(defaultFont);
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
index 28a08ae..ad5fe6c 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon.Poly
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Geometry.AreaAndPerimeter;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Multipolygon data used to represent complex areas, see <a href="https://wiki.openstreetmap.org/wiki/Relation:multipolygon">wiki</a>.
@@ -404,7 +405,7 @@ public class Multipolygon {
                 nodes.clear();
                 if (ds == null) {
                     // DataSet still not found. This should not happen, but a warning does no harm
-                    Main.warn("DataSet not found while resetting nodes in Multipolygon. " +
+                    Logging.warn("DataSet not found while resetting nodes in Multipolygon. " +
                             "This should not happen, you may report it to JOSM developers.");
                 } else if (wayIds.size() == 1) {
                     Way w = (Way) ds.getPrimitiveById(wayIds.iterator().next(), OsmPrimitiveType.WAY);
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 a235b3c..9a37b10 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,6 +27,7 @@ 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.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -50,7 +51,7 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
         this.selectedPolyData = new ArrayList<>();
         Main.addProjectionChangeListener(this);
         DataSet.addSelectionListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/preferences/AbstractToStringProperty.java b/src/org/openstreetmap/josm/data/preferences/AbstractToStringProperty.java
index 307b325..1be8798 100644
--- a/src/org/openstreetmap/josm/data/preferences/AbstractToStringProperty.java
+++ b/src/org/openstreetmap/josm/data/preferences/AbstractToStringProperty.java
@@ -1,9 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.preferences;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -88,7 +88,7 @@ public abstract class AbstractToStringProperty<T> extends AbstractProperty<T> {
             try {
                 return fromString(string);
             } catch (InvalidPreferenceValueException e) {
-                Main.warn(BugReport.intercept(e).put("key", key).put("value", string));
+                Logging.warn(BugReport.intercept(e).put("key", key).put("value", string));
             }
         }
         return getDefaultValue();
diff --git a/src/org/openstreetmap/josm/data/preferences/ParametrizedEnumProperty.java b/src/org/openstreetmap/josm/data/preferences/ParametrizedEnumProperty.java
index c71834f..0400779 100644
--- a/src/org/openstreetmap/josm/data/preferences/ParametrizedEnumProperty.java
+++ b/src/org/openstreetmap/josm/data/preferences/ParametrizedEnumProperty.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.data.preferences;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Abstract base class for properties with {@link Enum} value, where the preference
@@ -32,7 +33,7 @@ public abstract class ParametrizedEnumProperty<T extends Enum<T>> {
         try {
             return Enum.valueOf(enumClass, s);
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return defaultValue;
         }
     }
diff --git a/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java b/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java
index 5a4af5c..5a1f51a 100644
--- a/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java
+++ b/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java
@@ -29,9 +29,9 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import javax.xml.validation.Validator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.XmlStreamParsingException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -145,9 +145,7 @@ public class PreferencesReader {
                 try {
                     version = Integer.parseInt(parser.getAttributeValue(null, "version"));
                 } catch (NumberFormatException e) {
-                    if (Main.isDebugEnabled()) {
-                        Main.debug(e.getMessage());
-                    }
+                    Logging.log(Logging.LEVEL_DEBUG, e);
                 }
                 parseRoot();
             } else if (event == XMLStreamConstants.END_ELEMENT) {
diff --git a/src/org/openstreetmap/josm/data/preferences/StrokeProperty.java b/src/org/openstreetmap/josm/data/preferences/StrokeProperty.java
index fe0193a..42bd0fd 100644
--- a/src/org/openstreetmap/josm/data/preferences/StrokeProperty.java
+++ b/src/org/openstreetmap/josm/data/preferences/StrokeProperty.java
@@ -7,7 +7,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A property that stores a {@link BasicStroke}.
@@ -77,7 +77,7 @@ public class StrokeProperty extends AbstractToStringProperty<BasicStroke> {
             double sumAbs = dashes.stream().mapToDouble(Math::abs).sum();
 
             if (sumAbs < 1e-1) {
-                Main.error("Error in stroke dash format (all zeros): " + code);
+                Logging.error("Error in stroke dash format (all zeros): " + code);
                 dashes = Collections.emptyList();
             }
         }
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/ExtendedSourceEntry.java b/src/org/openstreetmap/josm/data/preferences/sources/ExtendedSourceEntry.java
new file mode 100644
index 0000000..393eebe
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/ExtendedSourceEntry.java
@@ -0,0 +1,92 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.preferences.sources;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * Source entry with additional metadata.
+ * @since 12649 (extracted from gui.preferences package)
+ */
+public class ExtendedSourceEntry extends SourceEntry implements Comparable<ExtendedSourceEntry> {
+    /** file name used for display */
+    public String simpleFileName;
+    /** version used for display */
+    public String version;
+    /** author name used for display */
+    public String author;
+    /** webpage link used for display */
+    public String link;
+    /** short description used for display */
+    public String description;
+    /** Style type: can only have one value: "xml". Used to filter out old XML styles. For MapCSS styles, the value is not set. */
+    public String styleType;
+    /** minimum JOSM version required to enable this source entry */
+    public Integer minJosmVersion;
+
+    /**
+     * Constructs a new {@code ExtendedSourceEntry}.
+     * @param simpleFileName file name used for display
+     * @param url URL that {@link org.openstreetmap.josm.io.CachedFile} understands
+     */
+    public ExtendedSourceEntry(String simpleFileName, String url) {
+        super(url, null, null, true);
+        this.simpleFileName = simpleFileName;
+    }
+
+    /**
+     * @return string representation for GUI list or menu entry
+     */
+    public String getDisplayName() {
+        return title == null ? simpleFileName : title;
+    }
+
+    private static void appendRow(StringBuilder s, String th, String td) {
+        s.append("<tr><th>").append(th).append("</th><td>").append(Utils.escapeReservedCharactersHTML(td)).append("</td</tr>");
+    }
+
+    /**
+     * Returns a tooltip containing available metadata.
+     * @return a tooltip containing available metadata
+     */
+    public String getTooltip() {
+        StringBuilder s = new StringBuilder();
+        appendRow(s, tr("Short Description:"), getDisplayName());
+        appendRow(s, tr("URL:"), url);
+        if (author != null) {
+            appendRow(s, tr("Author:"), author);
+        }
+        if (link != null) {
+            appendRow(s, tr("Webpage:"), link);
+        }
+        if (description != null) {
+            appendRow(s, tr("Description:"), description);
+        }
+        if (version != null) {
+            appendRow(s, tr("Version:"), version);
+        }
+        if (minJosmVersion != null) {
+            appendRow(s, tr("Minimum JOSM Version:"), Integer.toString(minJosmVersion));
+        }
+        return "<html><style>th{text-align:right}td{width:400px}</style>"
+                + "<table>" + s + "</table></html>";
+    }
+
+    @Override
+    public String toString() {
+        return "<html><b>" + getDisplayName() + "</b>"
+                + (author == null ? "" : " <span color=\"gray\">" + tr("by {0}", author) + "</color>")
+                + "</html>";
+    }
+
+    @Override
+    public int compareTo(ExtendedSourceEntry o) {
+        if (url.startsWith("resource") && !o.url.startsWith("resource"))
+            return -1;
+        if (o.url.startsWith("resource"))
+            return 1;
+        else
+            return getDisplayName().compareToIgnoreCase(o.getDisplayName());
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/MapPaintPrefHelper.java b/src/org/openstreetmap/josm/data/preferences/sources/MapPaintPrefHelper.java
new file mode 100644
index 0000000..eea7f12
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/MapPaintPrefHelper.java
@@ -0,0 +1,112 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.preferences.sources;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.TreeSet;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * Helper class for map paint styles preferences.
+ * @since 12649 (extracted from gui.preferences package)
+ */
+public class MapPaintPrefHelper extends SourcePrefHelper {
+
+    /**
+     * The unique instance.
+     */
+    public static final MapPaintPrefHelper INSTANCE = new MapPaintPrefHelper();
+
+    /**
+     * Constructs a new {@code MapPaintPrefHelper}.
+     */
+    public MapPaintPrefHelper() {
+        super("mappaint.style.entries");
+    }
+
+    @Override
+    public List<SourceEntry> get() {
+        List<SourceEntry> ls = super.get();
+        if (insertNewDefaults(ls)) {
+            put(ls);
+        }
+        return ls;
+    }
+
+    /**
+     * If the selection of default styles changes in future releases, add
+     * the new entries to the user-configured list. Remember the known URLs,
+     * so an item that was deleted explicitly is not added again.
+     * @param list new defaults
+     * @return {@code true} if a change occurred
+     */
+    private boolean insertNewDefaults(List<SourceEntry> list) {
+        boolean changed = false;
+
+        Collection<String> knownDefaults = new TreeSet<>(Main.pref.getCollection("mappaint.style.known-defaults"));
+
+        Collection<ExtendedSourceEntry> defaults = getDefault();
+        int insertionIdx = 0;
+        for (final SourceEntry def : defaults) {
+            int i = Utils.indexOf(list, se -> Objects.equals(def.url, se.url));
+            if (i == -1 && !knownDefaults.contains(def.url)) {
+                def.active = false;
+                list.add(insertionIdx, def);
+                insertionIdx++;
+                changed = true;
+            } else {
+                if (i >= insertionIdx) {
+                    insertionIdx = i + 1;
+                }
+            }
+            knownDefaults.add(def.url);
+        }
+        Main.pref.putCollection("mappaint.style.known-defaults", knownDefaults);
+
+        // XML style is not bundled anymore
+        list.remove(Utils.find(list, se -> "resource://styles/standard/elemstyles.xml".equals(se.url)));
+
+        return changed;
+    }
+
+    @Override
+    public Collection<ExtendedSourceEntry> getDefault() {
+        ExtendedSourceEntry defJosmMapcss = new ExtendedSourceEntry("elemstyles.mapcss", "resource://styles/standard/elemstyles.mapcss");
+        defJosmMapcss.active = true;
+        defJosmMapcss.name = "standard";
+        defJosmMapcss.title = tr("JOSM default (MapCSS)");
+        defJosmMapcss.description = tr("Internal style to be used as base for runtime switchable overlay styles");
+        ExtendedSourceEntry defPL2 = new ExtendedSourceEntry("potlatch2.mapcss", "resource://styles/standard/potlatch2.mapcss");
+        defPL2.active = false;
+        defPL2.name = "standard";
+        defPL2.title = tr("Potlatch 2");
+        defPL2.description = tr("the main Potlatch 2 style");
+
+        return Arrays.asList(defJosmMapcss, defPL2);
+    }
+
+    @Override
+    public Map<String, String> serialize(SourceEntry entry) {
+        Map<String, String> res = new HashMap<>();
+        res.put("url", entry.url == null ? "" : entry.url);
+        res.put("title", entry.title == null ? "" : entry.title);
+        res.put("active", Boolean.toString(entry.active));
+        if (entry.name != null) {
+            res.put("ptoken", entry.name);
+        }
+        return res;
+    }
+
+    @Override
+    public SourceEntry deserialize(Map<String, String> s) {
+        return new SourceEntry(s.get("url"), s.get("ptoken"), s.get("title"), Boolean.parseBoolean(s.get("active")));
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/PresetPrefHelper.java b/src/org/openstreetmap/josm/data/preferences/sources/PresetPrefHelper.java
new file mode 100644
index 0000000..836151e
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/PresetPrefHelper.java
@@ -0,0 +1,49 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.preferences.sources;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Helper class for tagging presets preferences.
+ * @since 12649 (extracted from gui.preferences package)
+ */
+public class PresetPrefHelper extends SourcePrefHelper {
+
+    /**
+     * The unique instance.
+     */
+    public static final PresetPrefHelper INSTANCE = new PresetPrefHelper();
+
+    /**
+     * Constructs a new {@code PresetPrefHelper}.
+     */
+    public PresetPrefHelper() {
+        super("taggingpreset.entries");
+    }
+
+    @Override
+    public Collection<ExtendedSourceEntry> getDefault() {
+        ExtendedSourceEntry i = new ExtendedSourceEntry("defaultpresets.xml", "resource://data/defaultpresets.xml");
+        i.title = tr("Internal Preset");
+        i.description = tr("The default preset for JOSM");
+        return Collections.singletonList(i);
+    }
+
+    @Override
+    public Map<String, String> serialize(SourceEntry entry) {
+        Map<String, String> res = new HashMap<>();
+        res.put("url", entry.url);
+        res.put("title", entry.title == null ? "" : entry.title);
+        return res;
+    }
+
+    @Override
+    public SourceEntry deserialize(Map<String, String> s) {
+        return new SourceEntry(s.get("url"), null, s.get("title"), true);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceEntry.java b/src/org/openstreetmap/josm/data/preferences/sources/SourceEntry.java
similarity index 96%
rename from src/org/openstreetmap/josm/gui/preferences/SourceEntry.java
rename to src/org/openstreetmap/josm/data/preferences/sources/SourceEntry.java
index c2c59b2..8dc2011 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceEntry.java
+++ b/src/org/openstreetmap/josm/data/preferences/sources/SourceEntry.java
@@ -1,17 +1,18 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.preferences;
+package org.openstreetmap.josm.data.preferences.sources;
 
 import java.io.File;
 import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
  * A source entry primarily used to save the user's selection of mappaint styles,
  * but also for preset sources or validator rules.
+ * @since 12649 (moved from gui.preferences package)
  * @since 3796
  */
 public class SourceEntry {
@@ -152,7 +153,7 @@ public class SourceEntry {
         if (m.find()) {
             return m.group(1);
         } else {
-            Main.warn("Unexpected URL format: "+url);
+            Logging.warn("Unexpected URL format: "+url);
             return url;
         }
     }
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/SourcePrefHelper.java b/src/org/openstreetmap/josm/data/preferences/sources/SourcePrefHelper.java
new file mode 100644
index 0000000..a3a2062
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/SourcePrefHelper.java
@@ -0,0 +1,107 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.preferences.sources;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.openstreetmap.josm.Main;
+
+/**
+ * Helper class for specialized extensions preferences.
+ * @since 12649 (extracted from gui.preferences package)
+ */
+public abstract class SourcePrefHelper {
+
+    private final String pref;
+
+    /**
+     * Constructs a new {@code SourcePrefHelper} for the given preference key.
+     * @param pref The preference key
+     */
+    public SourcePrefHelper(String pref) {
+        this.pref = pref;
+    }
+
+    /**
+     * Returns the default sources provided by JOSM core.
+     * @return the default sources provided by JOSM core
+     */
+    public abstract Collection<ExtendedSourceEntry> getDefault();
+
+    /**
+     * Serializes the given source entry as a map.
+     * @param entry source entry to serialize
+     * @return map (key=value)
+     */
+    public abstract Map<String, String> serialize(SourceEntry entry);
+
+    /**
+     * Deserializes the given map as a source entry.
+     * @param entryStr map (key=value)
+     * @return source entry
+     */
+    public abstract SourceEntry deserialize(Map<String, String> entryStr);
+
+    /**
+     * Returns the list of sources.
+     * @return The list of sources
+     */
+    public List<SourceEntry> get() {
+
+        Collection<Map<String, String>> src = Main.pref.getListOfStructs(pref, (Collection<Map<String, String>>) null);
+        if (src == null)
+            return new ArrayList<>(getDefault());
+
+        List<SourceEntry> entries = new ArrayList<>();
+        for (Map<String, String> sourcePref : src) {
+            SourceEntry e = deserialize(new HashMap<>(sourcePref));
+            if (e != null) {
+                entries.add(e);
+            }
+        }
+        return entries;
+    }
+
+    /**
+     * Saves a list of sources to JOSM preferences.
+     * @param entries list of sources
+     * @return {@code true}, if something has changed (i.e. value is different than before)
+     */
+    public boolean put(Collection<? extends SourceEntry> entries) {
+        Collection<Map<String, String>> setting = serializeList(entries);
+        boolean unset = Main.pref.getListOfStructs(pref, (Collection<Map<String, String>>) null) == null;
+        if (unset) {
+            Collection<Map<String, String>> def = serializeList(getDefault());
+            if (setting.equals(def))
+                return false;
+        }
+        return Main.pref.putListOfStructs(pref, setting);
+    }
+
+    private Collection<Map<String, String>> serializeList(Collection<? extends SourceEntry> entries) {
+        Collection<Map<String, String>> setting = new ArrayList<>(entries.size());
+        for (SourceEntry e : entries) {
+            setting.add(serialize(e));
+        }
+        return setting;
+    }
+
+    /**
+     * Returns the set of active source URLs.
+     * @return The set of active source URLs.
+     */
+    public final Set<String> getActiveUrls() {
+        Set<String> urls = new LinkedHashSet<>(); // retain order
+        for (SourceEntry e : get()) {
+            if (e.active) {
+                urls.add(e.url);
+            }
+        }
+        return urls;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java b/src/org/openstreetmap/josm/data/preferences/sources/SourceProvider.java
similarity index 80%
rename from src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
rename to src/org/openstreetmap/josm/data/preferences/sources/SourceProvider.java
index 42b6721..3c01f2f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
+++ b/src/org/openstreetmap/josm/data/preferences/sources/SourceProvider.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.preferences;
+package org.openstreetmap.josm.data.preferences.sources;
 
 import java.util.Collection;
 
@@ -7,6 +7,7 @@ import java.util.Collection;
  * Interface for a class that offers a list of {@link SourceEntry}s.
  *
  * Used by plugins to offer additional SourceEntrys to the user.
+ * @since 12649 (moved from gui.preferences package)
  */
 @FunctionalInterface
 public interface SourceProvider {
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceType.java b/src/org/openstreetmap/josm/data/preferences/sources/SourceType.java
similarity index 75%
rename from src/org/openstreetmap/josm/gui/preferences/SourceType.java
rename to src/org/openstreetmap/josm/data/preferences/sources/SourceType.java
index 41cbd27..1f78c2e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceType.java
+++ b/src/org/openstreetmap/josm/data/preferences/sources/SourceType.java
@@ -1,8 +1,9 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.preferences;
+package org.openstreetmap.josm.data.preferences.sources;
 
 /**
  * The different types of source entries.
+ * @since 12649 (moved from gui.preferences package)
  * @since 6670
  */
 public enum SourceType {
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/ValidatorPrefHelper.java b/src/org/openstreetmap/josm/data/preferences/sources/ValidatorPrefHelper.java
new file mode 100644
index 0000000..82ac87c
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/ValidatorPrefHelper.java
@@ -0,0 +1,102 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.preferences.sources;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
+
+/**
+ * Helper class for validator tag checker rules preferences.
+ * @since 12649 (extracted from gui.preferences package)
+ */
+public class ValidatorPrefHelper extends SourcePrefHelper {
+
+    /**
+     * The unique instance.
+     */
+    public static final ValidatorPrefHelper INSTANCE = new ValidatorPrefHelper();
+
+    /** The preferences prefix */
+    public static final String PREFIX = "validator";
+
+    /** The preferences key for error layer */
+    public static final BooleanProperty PREF_LAYER = new BooleanProperty(PREFIX + ".layer", true);
+
+    /** The preferences key for enabled tests */
+    public static final String PREF_SKIP_TESTS = PREFIX + ".skip";
+
+    /** The preferences key for enabled tests */
+    public static final BooleanProperty PREF_USE_IGNORE = new BooleanProperty(PREFIX + ".ignore", true);
+
+    /** The preferences key for enabled tests before upload*/
+    public static final String PREF_SKIP_TESTS_BEFORE_UPLOAD = PREFIX + ".skipBeforeUpload";
+
+    /** The preferences key for ignored severity other on upload */
+    public static final BooleanProperty PREF_OTHER_UPLOAD = new BooleanProperty(PREFIX + ".otherUpload", false);
+
+    /** The preferences for ignored severity other */
+    public static final BooleanProperty PREF_OTHER = new BooleanProperty(PREFIX + ".other", false);
+
+    /**
+     * The preferences key for enabling the permanent filtering
+     * of the displayed errors in the tree regarding the current selection
+     */
+    public static final String PREF_FILTER_BY_SELECTION = PREFIX + ".selectionFilter";
+
+    /**
+     * Constructs a new {@code PresetPrefHelper}.
+     */
+    public ValidatorPrefHelper() {
+        super(MapCSSTagChecker.ENTRIES_PREF_KEY);
+    }
+
+    @Override
+    public Collection<ExtendedSourceEntry> getDefault() {
+        List<ExtendedSourceEntry> def = new ArrayList<>();
+
+        // CHECKSTYLE.OFF: SingleSpaceSeparator
+        addDefault(def, "addresses",    tr("Addresses"),           tr("Checks for errors on addresses"));
+        addDefault(def, "combinations", tr("Tag combinations"),    tr("Checks for missing tag or suspicious combinations"));
+        addDefault(def, "deprecated",   tr("Deprecated features"), tr("Checks for deprecated features"));
+        addDefault(def, "geometry",     tr("Geometry"),            tr("Checks for geometry errors"));
+        addDefault(def, "highway",      tr("Highways"),            tr("Checks for errors on highways"));
+        addDefault(def, "multiple",     tr("Multiple values"),     tr("Checks for wrong multiple values"));
+        addDefault(def, "numeric",      tr("Numeric values"),      tr("Checks for wrong numeric values"));
+        addDefault(def, "religion",     tr("Religion"),            tr("Checks for errors on religious objects"));
+        addDefault(def, "relation",     tr("Relations"),           tr("Checks for errors on relations"));
+        addDefault(def, "territories",  tr("Territories"),         tr("Checks for territories-specific features"));
+        addDefault(def, "unnecessary",  tr("Unnecessary tags"),    tr("Checks for unnecessary tags"));
+        addDefault(def, "wikipedia",    tr("Wikipedia"),           tr("Checks for wrong wikipedia tags"));
+        // CHECKSTYLE.ON: SingleSpaceSeparator
+
+        return def;
+    }
+
+    private static void addDefault(List<ExtendedSourceEntry> defaults, String filename, String title, String description) {
+        ExtendedSourceEntry i = new ExtendedSourceEntry(filename+".mapcss", "resource://data/validator/"+filename+".mapcss");
+        i.title = title;
+        i.description = description;
+        defaults.add(i);
+    }
+
+    @Override
+    public Map<String, String> serialize(SourceEntry entry) {
+        Map<String, String> res = new HashMap<>();
+        res.put("url", entry.url);
+        res.put("title", entry.title == null ? "" : entry.title);
+        res.put("active", Boolean.toString(entry.active));
+        return res;
+    }
+
+    @Override
+    public SourceEntry deserialize(Map<String, String> s) {
+        return new SourceEntry(s.get("url"), null, s.get("title"), Boolean.parseBoolean(s.get("active")));
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/preferences/sources/package-info.java b/src/org/openstreetmap/josm/data/preferences/sources/package-info.java
new file mode 100644
index 0000000..cf07d9d
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/sources/package-info.java
@@ -0,0 +1,11 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provide classes to manage source of JOSM extensions that can be chosen in user preferences:
+ * <ul>
+ * <li>map paint styles</li>
+ * <li>tagging presets</li>
+ * <li>validator rules</li>
+ * </ul>
+ */
+package org.openstreetmap.josm.data.preferences.sources;
diff --git a/src/org/openstreetmap/josm/data/projection/CustomProjection.java b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
index f3fb984..cef2901 100644
--- a/src/org/openstreetmap/josm/data/projection/CustomProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
@@ -14,7 +14,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -32,6 +31,7 @@ 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.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -230,7 +230,7 @@ public class CustomProjection extends AbstractProjection {
         try {
             update(pref);
         } catch (ProjectionConfigurationException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             try {
                 update(null);
             } catch (ProjectionConfigurationException ex1) {
@@ -700,7 +700,7 @@ public class CustomProjection extends AbstractProjection {
             try {
                 return Integer.valueOf(code.substring(5));
             } catch (NumberFormatException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return null;
@@ -857,7 +857,7 @@ public class CustomProjection extends AbstractProjection {
                         }
                     }
                 } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/data/projection/Projections.java b/src/org/openstreetmap/josm/data/projection/Projections.java
index 5b0499c..5b5b94b 100644
--- a/src/org/openstreetmap/josm/data/projection/Projections.java
+++ b/src/org/openstreetmap/josm/data/projection/Projections.java
@@ -44,6 +44,7 @@ import org.openstreetmap.josm.gui.preferences.projection.ProjectionChoice;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -180,7 +181,7 @@ public final class Projections {
                     nadgrids.put(nadgridsId, new NTV2GridShiftFileWrapper(nadgridsId));
                 }
             } catch (ProjectionConfigurationException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
     }
@@ -315,7 +316,7 @@ public final class Projections {
                     String definition = m.group(2).trim();
                     result.add(new ProjectionDefinition(code, name, definition));
                 } else {
-                    Main.warn("Failed to parse line from the EPSG projection definition: "+line);
+                    Logging.warn("Failed to parse line from the EPSG projection definition: "+line);
                 }
             }
             lastline = line;
@@ -338,7 +339,7 @@ public final class Projections {
             try {
                 proj = pc.getProjection();
             } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
-                Main.warn(e, "Unable to get projection "+code+" with "+pc+':');
+                Logging.log(Logging.LEVEL_WARN, "Unable to get projection "+code+" with "+pc+':', e);
             }
         }
         if (proj == null) {
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
index ff2f7fb..63b3163 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
@@ -28,7 +28,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Models the NTv2 format Grid Shift File and exposes methods to shift
@@ -84,7 +84,7 @@ public class NTV2GridShiftFile implements Serializable {
 
     private static void readBytes(InputStream in, byte[] b) throws IOException {
         if (in.read(b) < b.length) {
-            Main.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
+            Logging.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
index 1e762c0..b0d279a 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
@@ -24,7 +24,7 @@ import java.io.InputStream;
 import java.io.Serializable;
 import java.nio.charset.StandardCharsets;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -151,7 +151,7 @@ public class NTV2SubGrid implements Serializable {
 
     private static void readBytes(InputStream in, byte[] b) throws IOException {
         if (in.read(b) < b.length) {
-            Main.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
+            Logging.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/OsmValidator.java b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
index 034daf3..602f8d7 100644
--- a/src/org/openstreetmap/josm/data/validation/OsmValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
@@ -16,15 +16,20 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.EnumMap;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.TreeSet;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.tests.Addresses;
 import org.openstreetmap.josm.data.validation.tests.ApiCapabilitiesTest;
 import org.openstreetmap.josm.data.validation.tests.BarriersEntrances;
@@ -57,9 +62,11 @@ import org.openstreetmap.josm.data.validation.tests.UntaggedNode;
 import org.openstreetmap.josm.data.validation.tests.UntaggedWay;
 import org.openstreetmap.josm.data.validation.tests.WayConnectedToArea;
 import org.openstreetmap.josm.data.validation.tests.WronglyOrderedWays;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ValidatorLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
+import org.openstreetmap.josm.tools.AlphanumComparator;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -142,7 +149,7 @@ public final class OsmValidator {
         try {
             allTestsMap.put(testClass.getName(), testClass.getConstructor().newInstance());
         } catch (ReflectiveOperationException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
@@ -182,15 +189,15 @@ public final class OsmValidator {
 
     private static void loadIgnoredErrors() {
         ignoredErrors.clear();
-        if (ValidatorPreference.PREF_USE_IGNORE.get()) {
+        if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
             Path path = Paths.get(getValidatorDir()).resolve("ignorederrors");
             if (path.toFile().exists()) {
                 try {
                     ignoredErrors.addAll(Files.readAllLines(path, StandardCharsets.UTF_8));
                 } catch (final FileNotFoundException e) {
-                    Main.debug(Main.getErrorMessage(e));
+                    Logging.debug(Logging.getErrorMessage(e));
                 } catch (final IOException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
@@ -224,7 +231,7 @@ public final class OsmValidator {
                 out.println(e);
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
@@ -232,11 +239,11 @@ public final class OsmValidator {
      * Initializes error layer.
      */
     public static synchronized void initializeErrorLayer() {
-        if (!ValidatorPreference.PREF_LAYER.get())
+        if (!ValidatorPrefHelper.PREF_LAYER.get())
             return;
         if (errorLayer == null) {
             errorLayer = new ValidatorLayer();
-            Main.getLayerManager().addLayer(errorLayer);
+            MainApplication.getLayerManager().addLayer(errorLayer);
         }
     }
 
@@ -275,7 +282,7 @@ public final class OsmValidator {
 
     private static void applyPrefs(Map<String, Test> tests, boolean beforeUpload) {
         for (String testName : Main.pref.getCollection(beforeUpload
-        ? ValidatorPreference.PREF_SKIP_TESTS_BEFORE_UPLOAD : ValidatorPreference.PREF_SKIP_TESTS)) {
+        ? ValidatorPrefHelper.PREF_SKIP_TESTS_BEFORE_UPLOAD : ValidatorPrefHelper.PREF_SKIP_TESTS)) {
             Test test = tests.get(testName);
             if (test != null) {
                 if (beforeUpload) {
@@ -354,13 +361,13 @@ public final class OsmValidator {
      */
     public static synchronized void initializeTests() {
         if (!testsInitialized) {
-            Main.debug("Initializing validator tests");
+            Logging.debug("Initializing validator tests");
             final long startTime = System.currentTimeMillis();
             initializeTests(getTests());
             testsInitialized = true;
-            if (Main.isDebugEnabled()) {
+            if (Logging.isDebugEnabled()) {
                 final long elapsedTime = System.currentTimeMillis() - startTime;
-                Main.debug("Initializing validator tests completed in " + Utils.getDurationString(elapsedTime));
+                Logging.debug("Initializing validator tests completed in {0}", Utils.getDurationString(elapsedTime));
             }
         }
     }
@@ -376,7 +383,7 @@ public final class OsmValidator {
                     test.initialize();
                 }
             } catch (Exception e) { // NOPMD
-                Main.error(e);
+                Logging.error(e);
                 if (!GraphicsEnvironment.isHeadless()) {
                     JOptionPane.showMessageDialog(Main.parent,
                             tr("Error initializing test {0}:\n {1}", test.getClass().getSimpleName(), e),
@@ -386,4 +393,21 @@ public final class OsmValidator {
         }
     }
 
+    /**
+     * Groups the given collection of errors by severity, then message, then description.
+     * @param errors list of errors to group
+     * @param filterToUse optional filter
+     * @return collection of errors grouped by severity, then message, then description
+     * @since 12667
+     */
+    public static Map<Severity, Map<String, Map<String, List<TestError>>>> getErrorsBySeverityMessageDescription(
+            Collection<TestError> errors, Predicate<? super TestError> filterToUse) {
+        return errors.stream().filter(filterToUse).collect(
+                Collectors.groupingBy(TestError::getSeverity, () -> new EnumMap<>(Severity.class),
+                        Collectors.groupingBy(TestError::getMessage, () -> new TreeMap<>(AlphanumComparator.getInstance()),
+                                Collectors.groupingBy(e -> e.getDescription() == null ? "" : e.getDescription(),
+                                        () -> new TreeMap<>(AlphanumComparator.getInstance()),
+                                        Collectors.toList()
+                                ))));
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/Severity.java b/src/org/openstreetmap/josm/data/validation/Severity.java
index 644d26c..c551b05 100644
--- a/src/org/openstreetmap/josm/data/validation/Severity.java
+++ b/src/org/openstreetmap/josm/data/validation/Severity.java
@@ -6,20 +6,23 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.tools.Logging;
 
 /** The error severity */
 public enum Severity {
     // CHECKSTYLE.OFF: SingleSpaceSeparator
     /** Error messages */
-    ERROR(tr("Errors"), /* ICON(data/) */"error",       new ColorProperty(marktr("validation error"), Color.RED).get()),
+    ERROR(1, tr("Errors"), /* ICON(data/) */"error",       new ColorProperty(marktr("validation error"), Color.RED).get()),
     /** Warning messages */
-    WARNING(tr("Warnings"), /* ICON(data/) */"warning", new ColorProperty(marktr("validation warning"), Color.YELLOW).get()),
+    WARNING(2, tr("Warnings"), /* ICON(data/) */"warning", new ColorProperty(marktr("validation warning"), Color.YELLOW).get()),
     /** Other messages */
-    OTHER(tr("Other"), /* ICON(data/) */"other",        new ColorProperty(marktr("validation other"), Color.CYAN).get());
+    OTHER(3, tr("Other"), /* ICON(data/) */"other",        new ColorProperty(marktr("validation other"), Color.CYAN).get());
     // CHECKSTYLE.ON: SingleSpaceSeparator
 
+    /** Numeric ordering of the severities, 1 being major, 3 being minor */
+    private final int level;
+
     /** Description of the severity code */
     private final String message;
 
@@ -32,11 +35,13 @@ public enum Severity {
     /**
      * Constructor
      *
+     * @param level Numeric ordering, 1 being major, 3 being minor
      * @param message Description
      * @param icon Associated icon
      * @param color The color of this severity
      */
-    Severity(String message, String icon, Color color) {
+    Severity(int level, String message, String icon, Color color) {
+        this.level = level;
         this.message = message;
         this.icon = icon;
         this.color = color;
@@ -47,9 +52,7 @@ public enum Severity {
      */
     public static void getColors() {
         for (Severity c : values()) {
-            if (Main.isDebugEnabled()) {
-                Main.debug(c.toString());
-            }
+            Logging.debug("{0}", c);
         }
     }
 
@@ -73,4 +76,13 @@ public enum Severity {
     public Color getColor() {
         return color;
     }
+
+    /**
+     * Gets the severity level, 1 being major, 3 being minor
+     * @return The severity level
+     * @since 12667
+     */
+    public int getLevel() {
+        return level;
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/Test.java b/src/org/openstreetmap/josm/data/validation/Test.java
index eb0d75c..e4ccf18 100644
--- a/src/org/openstreetmap/josm/data/validation/Test.java
+++ b/src/org/openstreetmap/josm/data/validation/Test.java
@@ -14,18 +14,19 @@ import java.util.function.Predicate;
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler.NotOutsideDataSourceArea;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.DeleteCommand;
 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.Way;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.NotOutsideDataSourceArea;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -37,7 +38,7 @@ import org.openstreetmap.josm.tools.Utils;
  *
  * @author frsantos
  */
-public class Test extends AbstractVisitor {
+public class Test extends AbstractVisitor implements Comparable<Test> {
 
     protected static final Predicate<OsmPrimitive> IN_DOWNLOADED_AREA = new NotOutsideDataSourceArea();
 
@@ -152,7 +153,7 @@ public class Test extends AbstractVisitor {
         this.progressMonitor = Optional.ofNullable(progressMonitor).orElse(NullProgressMonitor.INSTANCE);
         String startMessage = tr("Running test {0}", name);
         this.progressMonitor.beginTask(startMessage);
-        Main.debug(startMessage);
+        Logging.debug(startMessage);
         this.errors = new ArrayList<>(30);
         this.startTime = System.currentTimeMillis();
     }
@@ -186,7 +187,7 @@ public class Test extends AbstractVisitor {
         if (startTime > 0) {
             // fix #11567 where elapsedTime is < 0
             long elapsedTime = Math.max(0, System.currentTimeMillis() - startTime);
-            Main.debug(tr("Test ''{0}'' completed in {1}", getName(), Utils.getDurationString(elapsedTime)));
+            Logging.debug(tr("Test ''{0}'' completed in {1}", getName(), Utils.getDurationString(elapsedTime)));
         }
     }
 
@@ -329,7 +330,7 @@ public class Test extends AbstractVisitor {
             }
         }
         if (!primitivesToDelete.isEmpty()) {
-            return DeleteCommand.delete(Main.getLayerManager().getEditLayer(), primitivesToDelete);
+            return DeleteCommand.delete(MainApplication.getLayerManager().getEditLayer(), primitivesToDelete);
         } else {
             return null;
         }
@@ -357,4 +358,9 @@ public class Test extends AbstractVisitor {
         return Objects.equals(name, test.name) &&
                Objects.equals(description, test.description);
     }
+
+    @Override
+    public int compareTo(Test t) {
+        return name.compareTo(t.name);
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
index 7bda6a6..8be29d4 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
@@ -20,7 +20,7 @@ import java.net.IDN;
 import java.util.Arrays;
 import java.util.Locale;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * <p><b>Domain name</b> validation routines.</p>
@@ -948,8 +948,6 @@ public final class DomainValidator extends AbstractValidator {
         "maserati", // maserati Fiat Chrysler Automobiles N.V.
         "mattel", // mattel Mattel Sites, Inc.
         "mba", // mba Lone Hollow, LLC
-        "mcd", // mcd McDonald's Corporation
-        "mcdonalds", // mcdonalds McDonald's Corporation
         "mckinsey", // mckinsey McKinsey Holdings, Inc.
         "med", // med Medistry LLC
         "media", // media Grand Glen, LLC
@@ -982,7 +980,6 @@ public final class DomainValidator extends AbstractValidator {
         "monash", // monash Monash University
         "money", // money Outer McCook, LLC
         "monster", // monster Monster Worldwide, Inc.
-        "montblanc", // montblanc Richemont DNS Inc.
         "mopar", // mopar FCA US LLC.
         "mormon", // mormon IRI Domain Management, LLC ("Applicant")
         "mortgage", // mortgage United TLD Holdco, Ltd
@@ -2051,7 +2048,7 @@ public final class DomainValidator extends AbstractValidator {
                     return ascii;
             }
         } catch (IllegalArgumentException e) { // input is not valid
-            Main.trace(e);
+            Logging.trace(e);
             return input;
         }
     }
diff --git a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
index af32cbb..3795655 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
@@ -28,7 +28,7 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * <p><b>URL Validation</b> routines.</p>
@@ -449,7 +449,7 @@ public class UrlValidator extends AbstractValidator {
                 return false;
             }
         } catch (URISyntaxException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return false;
         }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Addresses.java b/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
index a1b5083..e7a6743 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.tools.Geometry;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
@@ -215,7 +216,7 @@ public class Addresses extends Test {
                         return;
                     }
                 } else {
-                    Main.warn("Addresses test skipped chunck "+chunk+" for street part "+streetPart+" because p1 or p2 is null");
+                    Logging.warn("Addresses test skipped chunck "+chunk+" for street part "+streetPart+" because p1 or p2 is null");
                 }
             }
             if (!hasIncompleteWays && streetPart.isIncomplete()) {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
index 8516b4d..0c94ef7 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
@@ -12,12 +12,12 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
@@ -206,7 +206,7 @@ public class ConditionalKeys extends Test.TagTest {
                 }
             }
         } catch (ConditionalParsingException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
             return ex.getMessage();
         }
         return null;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java b/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
index b0e7407..98a6eef 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
@@ -10,7 +10,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -22,6 +21,7 @@ import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.ValUtil;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Tests if there are segments that crosses in the same layer
@@ -267,7 +267,7 @@ public abstract class CrossingWays extends Test {
             final EastNorth en1 = es1.getFirstNode().getEastNorth();
             final EastNorth en2 = es1.getSecondNode().getEastNorth();
             if (en1 == null || en2 == null) {
-                Main.warn("Crossing ways test skipped "+es1);
+                Logging.warn("Crossing ways test skipped "+es1);
                 continue;
             }
             for (List<WaySegment> segments : getSegments(cellSegments, en1, en2)) {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java b/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
index 2646d9d..08aa9b6 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
@@ -332,7 +332,7 @@ public class DuplicateNode extends Test {
             }
 
             if (Command.checkOutlyingOrIncompleteOperation(nodes, Collections.singleton(target)) == Command.IS_OK)
-                return MergeNodesAction.mergeNodes(Main.getLayerManager().getEditLayer(), nodes, target);
+                return MergeNodesAction.mergeNodes(nodes, target);
         }
 
         return null; // undoRedo handling done in mergeNodes
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
index f26cbc7..0a080f3 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
@@ -7,11 +7,11 @@ import java.util.Arrays;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -63,7 +63,7 @@ public class Lanes extends Test.TagTest {
                             .build());
                 }
             } catch (NumberFormatException ignore) {
-                Main.debug(ignore.getMessage());
+                Logging.debug(ignore.getMessage());
             }
         }
     }
@@ -81,7 +81,7 @@ public class Lanes extends Test.TagTest {
                     .build());
         }
         } catch (NumberFormatException ignore) {
-            Main.debug(ignore.getMessage());
+            Logging.debug(ignore.getMessage());
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
index 526ee30..dfd586a 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.validation.tests;
 
+import static org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.FixCommand.evaluateObject;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.BufferedReader;
@@ -38,6 +39,8 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
@@ -56,13 +59,11 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.AbstractSelector;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorTagCheckerRulesPreference;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -318,7 +319,8 @@ public class MapCSSTagChecker extends Test.TagTest {
                             try {
                                 check.errors.put(ai, Severity.valueOf(ai.key.substring("throw".length()).toUpperCase(Locale.ENGLISH)));
                             } catch (IllegalArgumentException e) {
-                                Main.warn(e, "Unsupported "+ai.key+" instruction. Allowed instructions are "+POSSIBLE_THROWS+'.');
+                                Logging.log(Logging.LEVEL_WARN,
+                                        "Unsupported "+ai.key+" instruction. Allowed instructions are "+POSSIBLE_THROWS+'.', e);
                             }
                         } else if ("fixAdd".equals(ai.key)) {
                             check.fixCommands.add(FixCommand.fixAdd(ai.val));
@@ -387,7 +389,7 @@ public class MapCSSTagChecker extends Test.TagTest {
                     parseChecks.add(TagCheck.ofMapCSSRule(
                             new GroupedMapCSSRule(map.getValue(), map.getKey())));
                 } catch (IllegalDataException e) {
-                    Main.error("Cannot add MapCss rule: "+e.getMessage());
+                    Logging.error("Cannot add MapCss rule: "+e.getMessage());
                     source.logError(e);
                 }
             }
@@ -451,7 +453,7 @@ public class MapCSSTagChecker extends Test.TagTest {
                     return tag.toString();
                 }
             } catch (IndexOutOfBoundsException ignore) {
-                Main.debug(ignore);
+                Logging.debug(ignore);
             }
             return null;
         }
@@ -479,7 +481,7 @@ public class MapCSSTagChecker extends Test.TagTest {
                     // Perform replacement with null-safe + regex-safe handling
                     m.appendReplacement(sb, String.valueOf(argument).replace("^(", "").replace(")$", ""));
                 } catch (IndexOutOfBoundsException | IllegalArgumentException e) {
-                    Main.error(e, tr("Unable to replace argument {0} in {1}: {2}", argument, sb, e.getMessage()));
+                    Logging.log(Logging.LEVEL_ERROR, tr("Unable to replace argument {0} in {1}: {2}", argument, sb, e.getMessage()), e);
                 }
             }
             m.appendTail(sb);
@@ -710,7 +712,7 @@ public class MapCSSTagChecker extends Test.TagTest {
      */
     @Override
     public void check(OsmPrimitive p) {
-        errors.addAll(getErrorsForPrimitive(p, ValidatorPreference.PREF_OTHER.get()));
+        errors.addAll(getErrorsForPrimitive(p, ValidatorPrefHelper.PREF_OTHER.get()));
     }
 
     /**
@@ -734,7 +736,7 @@ public class MapCSSTagChecker extends Test.TagTest {
             // Check assertions, useful for development of local files
             if (Main.pref.getBoolean("validator.check_assert_local_rules", false) && Utils.isLocalUrl(url)) {
                 for (String msg : checkAsserts(result.parseChecks)) {
-                    Main.warn(msg);
+                    Logging.warn(msg);
                 }
             }
         }
@@ -744,27 +746,27 @@ public class MapCSSTagChecker extends Test.TagTest {
     @Override
     public synchronized void initialize() throws Exception {
         checks.clear();
-        for (SourceEntry source : new ValidatorTagCheckerRulesPreference.RulePrefHelper().get()) {
+        for (SourceEntry source : new ValidatorPrefHelper().get()) {
             if (!source.active) {
                 continue;
             }
             String i = source.url;
             try {
                 if (!i.startsWith("resource:")) {
-                    Main.info(tr("Adding {0} to tag checker", i));
-                } else if (Main.isDebugEnabled()) {
-                    Main.debug(tr("Adding {0} to tag checker", i));
+                    Logging.info(tr("Adding {0} to tag checker", i));
+                } else if (Logging.isDebugEnabled()) {
+                    Logging.debug(tr("Adding {0} to tag checker", i));
                 }
                 addMapCSS(i);
                 if (Main.pref.getBoolean("validator.auto_reload_local_rules", true) && source.isLocal()) {
                     Main.fileWatcher.registerValidatorRule(source);
                 }
             } catch (IOException | IllegalStateException | IllegalArgumentException ex) {
-                Main.warn(tr("Failed to add {0} to tag checker", i));
-                Main.warn(ex, false);
+                Logging.warn(tr("Failed to add {0} to tag checker", i));
+                Logging.log(Logging.LEVEL_WARN, ex);
             } catch (ParseException ex) {
-                Main.warn(tr("Failed to add {0} to tag checker", i));
-                Main.warn(ex);
+                Logging.warn(tr("Failed to add {0} to tag checker", i));
+                Logging.warn(ex);
             }
         }
     }
@@ -779,13 +781,9 @@ public class MapCSSTagChecker extends Test.TagTest {
         Set<String> assertionErrors = new LinkedHashSet<>();
         final DataSet ds = new DataSet();
         for (final TagCheck check : schecks) {
-            if (Main.isDebugEnabled()) {
-                Main.debug("Check: "+check);
-            }
+            Logging.debug("Check: {0}", check);
             for (final Map.Entry<String, Boolean> i : check.assertions.entrySet()) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug("- Assertion: "+i);
-                }
+                Logging.debug("- Assertion: {0}", i);
                 final OsmPrimitive p = OsmUtils.createPrimitive(i.getKey());
                 // Build minimal ordered list of checks to run to test the assertion
                 List<Set<TagCheck>> checksToRun = new ArrayList<>();
@@ -797,9 +795,7 @@ public class MapCSSTagChecker extends Test.TagTest {
                 // Add primitive to dataset to avoid DataIntegrityProblemException when evaluating selectors
                 ds.addPrimitive(p);
                 final Collection<TestError> pErrors = getErrorsForPrimitive(p, true, checksToRun);
-                if (Main.isDebugEnabled()) {
-                    Main.debug("- Errors: "+pErrors);
-                }
+                Logging.debug("- Errors: {0}", pErrors);
                 @SuppressWarnings({"EqualsBetweenInconvertibleTypes", "EqualsIncompatibleType"})
                 final boolean isError = pErrors.stream().anyMatch(e -> e.getTester().equals(check.rule));
                 if (isError != i.getValue()) {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
index 18ff07e..f4d3f5b 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
@@ -17,10 +17,10 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -33,13 +33,13 @@ import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.styleelement.AreaElement;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Geometry.PolygonIntersection;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Checks if multipolygons are valid
@@ -113,7 +113,7 @@ public class MultipolygonTest extends Test {
 
     @Override
     public void visit(Way w) {
-        if (!w.isArea() && ElemStyles.hasOnlyAreaOrTextStyleElements(w)) {
+        if (!w.isArea() && ElemStyles.hasOnlyAreaElements(w)) {
             List<Node> nodes = w.getNodes();
             if (nodes.isEmpty()) return; // fix zero nodes bug
             for (String key : keysCheckedByAnotherTest) {
@@ -590,7 +590,7 @@ public class MultipolygonTest extends Test {
             final EastNorth en1 = es1.getFirstNode().getEastNorth();
             final EastNorth en2 = es1.getSecondNode().getEastNorth();
             if (en1 == null || en2 == null) {
-                Main.warn("Crossing ways test (MP) skipped " + es1);
+                Logging.warn("Crossing ways test (MP) skipped " + es1);
                 continue;
             }
             for (List<WaySegment> segments : CrossingWays.getSegments(cellSegments, en1, en2)) {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java b/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
index adf4b91..b5b3a5c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
@@ -14,7 +14,6 @@ import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.Severity;
@@ -22,6 +21,7 @@ import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Tests the correct usage of the opening hour syntax of the tags
@@ -71,7 +71,7 @@ public class OpeningHourTest extends Test.TagTest {
                         "};");
             }
         } else {
-            Main.warn("Unable to initialize OpeningHourTest because no JavaScript engine has been found");
+            Logging.warn("Unable to initialize OpeningHourTest because no JavaScript engine has been found");
         }
     }
 
@@ -206,7 +206,7 @@ public class OpeningHourTest extends Test.TagTest {
             try {
                 prettifiedValue = (String) ((Invocable) ENGINE).invokeMethod(r, "prettifyValue");
             } catch (ScriptException | NoSuchMethodException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
             for (final Object i : getList(((Invocable) ENGINE).invokeMethod(r, "getErrors"))) {
                 errors.add(new OpeningHoursTestError(getErrorMessage(key, i), Severity.ERROR, prettifiedValue));
@@ -218,7 +218,7 @@ public class OpeningHourTest extends Test.TagTest {
                 errors.add(new OpeningHoursTestError(tr("opening_hours value can be prettified"), Severity.OTHER, prettifiedValue));
             }
         } catch (ScriptException | NoSuchMethodException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
         return errors;
     }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
index 00ae885..a2e421c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
@@ -35,11 +35,11 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test.TagTest;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.Entities;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
@@ -50,6 +50,7 @@ import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
 import org.openstreetmap.josm.gui.widgets.EditableList;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -78,7 +79,7 @@ public class TagChecker extends TagTest {
     private static final List<Tag> ignoreDataTag = new ArrayList<>();
 
     /** The preferences prefix */
-    protected static final String PREFIX = ValidatorPreference.PREFIX + "." + TagChecker.class.getSimpleName();
+    protected static final String PREFIX = ValidatorPrefHelper.PREFIX + "." + TagChecker.class.getSimpleName();
 
     /**
      * The preference key to check values
@@ -204,13 +205,13 @@ public class TagChecker extends TagTest {
                         if (line.startsWith("# JOSM TagChecker")) {
                             tagcheckerfile = true;
                             if (!DEFAULT_SOURCES.contains(source)) {
-                                Main.info(tr("Adding {0} to tag checker", source));
+                                Logging.info(tr("Adding {0} to tag checker", source));
                             }
                         } else
                         if (line.startsWith("# JOSM IgnoreTags")) {
                             ignorefile = true;
                             if (!DEFAULT_SOURCES.contains(source)) {
-                                Main.info(tr("Adding {0} to ignore tags", source));
+                                Logging.info(tr("Adding {0} to ignore tags", source));
                             }
                         }
                     } else if (ignorefile) {
@@ -237,7 +238,7 @@ public class TagChecker extends TagTest {
                             break;
                         default:
                             if (!key.startsWith(";")) {
-                                Main.warn("Unsupported TagChecker key: " + key);
+                                Logging.warn("Unsupported TagChecker key: " + key);
                             }
                         }
                     } else if (tagcheckerfile) {
@@ -248,7 +249,7 @@ public class TagChecker extends TagTest {
                             if (err == null) {
                                 checkerData.add(d);
                             } else {
-                                Main.error(tr("Invalid tagchecker line - {0}: {1}", err, line));
+                                Logging.error(tr("Invalid tagchecker line - {0}: {1}", err, line));
                             }
                         }
                     } else if (line.charAt(0) == '+') {
@@ -256,17 +257,17 @@ public class TagChecker extends TagTest {
                     } else if (line.charAt(0) == '-' && okValue != null) {
                         harmonizedKeys.put(harmonizeKey(line.substring(1)), okValue);
                     } else {
-                        Main.error(tr("Invalid spellcheck line: {0}", line));
+                        Logging.error(tr("Invalid spellcheck line: {0}", line));
                     }
                     if (isFirstLine) {
                         isFirstLine = false;
                         if (!(tagcheckerfile || ignorefile) && !DEFAULT_SOURCES.contains(source)) {
-                            Main.info(tr("Adding {0} to spellchecker", source));
+                            Logging.info(tr("Adding {0} to spellchecker", source));
                         }
                     }
                 }
             } catch (IOException e) {
-                Main.error(e);
+                Logging.error(e);
                 errorSources.append(source).append('\n');
             }
         }
@@ -291,7 +292,7 @@ public class TagChecker extends TagTest {
                 additionalPresetsValueData.putVoid(a);
             }
             // TODO directionKeys are no longer in OsmPrimitive (search pattern is used instead)
-            for (String a : Main.pref.getCollection(ValidatorPreference.PREFIX + ".knownkeys",
+            for (String a : Main.pref.getCollection(ValidatorPrefHelper.PREFIX + ".knownkeys",
                     Arrays.asList("is_in", "int_ref", "fixme", "population"))) {
                 additionalPresetsValueData.putVoid(a);
             }
@@ -827,7 +828,7 @@ public class TagChecker extends TagTest {
                     description = null;
                 }
             } catch (IllegalStateException e) {
-                Main.error(e);
+                Logging.error(e);
                 description = null;
             }
             String[] n = SPLIT_TRIMMED_PATTERN.split(trimmed, 3);
@@ -870,10 +871,10 @@ public class TagChecker extends TagTest {
                 try {
                     data.add(new CheckerElement(exp));
                 } catch (IllegalStateException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                     return tr("Illegal expression ''{0}''", exp);
                 } catch (PatternSyntaxException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                     return tr("Illegal regular expression ''{0}''", exp);
                 }
             }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
index 6ee45ff..41ede4d 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
@@ -26,12 +26,13 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.QuadBuckets;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.projection.Ellipsoid;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Checks if a way has an endpoint very near to another way.
@@ -135,7 +136,7 @@ public abstract class UnconnectedWays extends Test {
     }
 
     protected static final int UNCONNECTED_WAYS = 1301;
-    protected static final String PREFIX = ValidatorPreference.PREFIX + "." + UnconnectedWays.class.getSimpleName();
+    protected static final String PREFIX = ValidatorPrefHelper.PREFIX + "." + UnconnectedWays.class.getSimpleName();
 
     private Set<MyWaySegment> ways;
     private QuadBuckets<Node> endnodes; // nodes at end of way
@@ -166,7 +167,7 @@ public abstract class UnconnectedWays extends Test {
         othernodes = new HashSet<>();
         mindist = Main.pref.getDouble(PREFIX + ".node_way_distance", 10.0);
         minmiddledist = Main.pref.getDouble(PREFIX + ".way_way_distance", 0.0);
-        DataSet dataSet = Main.getLayerManager().getEditDataSet();
+        DataSet dataSet = Main.main.getEditDataSet();
         dsArea = dataSet == null ? null : dataSet.getDataSourceArea();
     }
 
@@ -317,7 +318,7 @@ public abstract class UnconnectedWays extends Test {
 
         public boolean nearby(Node n, double dist) {
             if (w == null) {
-                Main.debug("way null");
+                Logging.debug("way null");
                 return false;
             }
             if (w.containsNode(n))
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java b/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
index 9c0544f..bddfb5c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
@@ -141,7 +141,7 @@ public class UntaggedWay extends Test {
     @Override
     public void startTest(ProgressMonitor monitor) {
         super.startTest(monitor);
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         if (ds == null)
             return;
         waysUsedInRelations = new HashSet<>();
diff --git a/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java b/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java
index 5fcd3db..7eab4d0 100644
--- a/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java
+++ b/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java
@@ -6,11 +6,11 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 import javax.swing.Icon;
 import javax.swing.JLabel;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/gui/DownloadParamType.java b/src/org/openstreetmap/josm/gui/DownloadParamType.java
new file mode 100644
index 0000000..496059b
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/DownloadParamType.java
@@ -0,0 +1,152 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GraphicsEnvironment;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.concurrent.Future;
+
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.OpenLocationAction;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OsmUrlToBounds;
+
+/**
+ * The type of a command line parameter, to be used in switch statements.
+ * @since 12633 (extracted from {@code Main})
+ */
+public enum DownloadParamType {
+    /** http(s):// URL */
+    httpUrl {
+        @Override
+        public List<Future<?>> download(String s, Collection<File> fileList) {
+            return new OpenLocationAction().openUrl(false, s);
+        }
+
+        @Override
+        public List<Future<?>> downloadGps(String s) {
+            final Bounds b = OsmUrlToBounds.parse(s);
+            if (b == null) {
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("Ignoring malformed URL: \"{0}\"", s),
+                        tr("Warning"),
+                        JOptionPane.WARNING_MESSAGE
+                );
+                return Collections.emptyList();
+            }
+            return MainApplication.downloadFromParamBounds(true, b);
+        }
+    },
+    /** file:// URL */
+    fileUrl {
+        @Override
+        public List<Future<?>> download(String s, Collection<File> fileList) {
+            File f = null;
+            try {
+                f = new File(new URI(s));
+            } catch (URISyntaxException e) {
+                Logging.warn(e);
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("Ignoring malformed file URL: \"{0}\"", s),
+                        tr("Warning"),
+                        JOptionPane.WARNING_MESSAGE
+                );
+            }
+            if (f != null) {
+                fileList.add(f);
+            }
+            return Collections.emptyList();
+        }
+    },
+    /** geographic area */
+    bounds {
+
+        /**
+         * Download area specified on the command line as bounds string.
+         * @param rawGps Flag to download raw GPS tracks
+         * @param s The bounds parameter
+         * @return the complete download task (including post-download handler), or {@code null}
+         */
+        private List<Future<?>> downloadFromParamBounds(final boolean rawGps, String s) {
+            final StringTokenizer st = new StringTokenizer(s, ",");
+            if (st.countTokens() == 4) {
+                return MainApplication.downloadFromParamBounds(rawGps, new Bounds(
+                        new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken())),
+                        new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken()))
+                ));
+            }
+            return Collections.emptyList();
+        }
+
+        @Override
+        public List<Future<?>> download(String param, Collection<File> fileList) {
+            return downloadFromParamBounds(false, param);
+        }
+
+        @Override
+        public List<Future<?>> downloadGps(String param) {
+            return downloadFromParamBounds(true, param);
+        }
+    },
+    /** local file name */
+    fileName {
+        @Override
+        public List<Future<?>> download(String s, Collection<File> fileList) {
+            fileList.add(new File(s));
+            return Collections.emptyList();
+        }
+    };
+
+    /**
+     * Performs the download
+     * @param param represents the object to be downloaded
+     * @param fileList files which shall be opened, should be added to this collection
+     * @return the download task, or {@code null}
+     */
+    public abstract List<Future<?>> download(String param, Collection<File> fileList);
+
+    /**
+     * Performs the GPS download
+     * @param param represents the object to be downloaded
+     * @return the download task, or {@code null}
+     */
+    public List<Future<?>> downloadGps(String param) {
+        if (!GraphicsEnvironment.isHeadless()) {
+            JOptionPane.showMessageDialog(
+                    Main.parent,
+                    tr("Parameter \"downloadgps\" does not accept file names or file URLs"),
+                    tr("Warning"),
+                    JOptionPane.WARNING_MESSAGE
+            );
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * Guess the type of a parameter string specified on the command line with --download= or --downloadgps.
+     *
+     * @param s A parameter string
+     * @return The guessed parameter type
+     */
+    public static DownloadParamType paramType(String s) {
+        if (s.startsWith("http:") || s.startsWith("https:")) return DownloadParamType.httpUrl;
+        if (s.startsWith("file:")) return DownloadParamType.fileUrl;
+        String coorPattern = "\\s*[+-]?[0-9]+(\\.[0-9]+)?\\s*";
+        if (s.matches(coorPattern + "(," + coorPattern + "){3}")) return DownloadParamType.bounds;
+        // everything else must be a file name
+        return DownloadParamType.fileName;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java b/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java
index 1fd779b..c1aacd0 100644
--- a/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java
+++ b/src/org/openstreetmap/josm/gui/ExceptionDialogUtil.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.io.OsmApiException;
 import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.ExceptionUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -91,7 +92,7 @@ public final class ExceptionDialogUtil {
      * @param e the exception
      */
     public static void explainGeneric(Exception e) {
-        Main.error(e);
+        Logging.error(e);
         BugReportExceptionHandler.handleException(e);
     }
 
diff --git a/src/org/openstreetmap/josm/gui/ExtendedDialog.java b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
index da8c6a3..ab27bef 100644
--- a/src/org/openstreetmap/josm/gui/ExtendedDialog.java
+++ b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
@@ -35,13 +35,14 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * General configurable dialog window.
@@ -412,8 +413,9 @@ public class ExtendedDialog extends JDialog implements IExtendedDialog {
                 // We need to set it to zero again, in case the dialog has been re-used
                 // and the result differs from its default value
                 result = ExtendedDialog.DialogClosedOtherwise;
-                if (Main.isDebugEnabled()) {
-                    Main.debug(getClass().getName()+" ESC action performed ("+actionEvent+") from "+new Exception().getStackTrace()[1]);
+                if (Logging.isDebugEnabled()) {
+                    Logging.debug("{0} ESC action performed ({1}) from {2}",
+                            getClass().getName(), actionEvent, new Exception().getStackTrace()[1]);
                 }
                 setVisible(false);
             }
@@ -441,8 +443,8 @@ public class ExtendedDialog extends JDialog implements IExtendedDialog {
             repaint();
         }
 
-        if (Main.isDebugEnabled()) {
-            Main.debug(getClass().getName()+".setVisible("+visible+") from "+new Exception().getStackTrace()[1]);
+        if (Logging.isDebugEnabled()) {
+            Logging.debug(getClass().getName()+".setVisible("+visible+") from "+new Exception().getStackTrace()[1]);
         }
 
         // Ensure all required variables are available
diff --git a/src/org/openstreetmap/josm/gui/GettingStarted.java b/src/org/openstreetmap/josm/gui/GettingStarted.java
index d9b95c0..d9fd43e 100644
--- a/src/org/openstreetmap/josm/gui/GettingStarted.java
+++ b/src/org/openstreetmap/josm/gui/GettingStarted.java
@@ -29,12 +29,13 @@ import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.io.CacheCustomContent;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.WikiReader;
 
 /**
  * Panel that fills the main part of the program window when JOSM has just started.
- * 
+ *
  * It downloads and displays the so called <em>message of the day</em>, which
  * contains news about recent major changes, warning in case of outdated versions, etc.
  */
@@ -150,7 +151,7 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
                     contentInitialized = true;
                     ProxyPreference.removeProxyPreferenceListener(this);
                 } catch (IOException ex) {
-                    Main.warn(ex, tr("Failed to read MOTD. Exception was: {0}", ex.toString()));
+                    Logging.log(Logging.LEVEL_WARN, tr("Failed to read MOTD. Exception was: {0}", ex.toString()), ex);
                     content = "<html>" + STYLE + "<h1>" + "JOSM - " + tr("Java OpenStreetMap Editor")
                             + "</h1>\n<h2 align=\"center\">(" + tr("Message of the day not available") + ")</h2></html>";
                     // In case of MOTD not loaded because of proxy error, listen to preference changes to retry after update
diff --git a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
index 44ce925..aca81ef 100644
--- a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
+++ b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
@@ -23,14 +23,14 @@ import javax.swing.JOptionPane;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Utility methods that display an option dialog with an additional help button that links to the JOSM help
@@ -252,13 +252,13 @@ public final class HelpAwareOptionPane {
         // Log message. Useful for bug reports and unit tests
         switch (messageType) {
             case JOptionPane.ERROR_MESSAGE:
-                Main.error(title + " - " + msg);
+                Logging.error(title + " - " + msg);
                 break;
             case JOptionPane.WARNING_MESSAGE:
-                Main.warn(title + " - " + msg);
+                Logging.warn(title + " - " + msg);
                 break;
             default:
-                Main.info(title + " - " + msg);
+                Logging.info(title + " - " + msg);
         }
 
         if (!GraphicsEnvironment.isHeadless()) {
diff --git a/src/org/openstreetmap/josm/gui/IExtendedDialog.java b/src/org/openstreetmap/josm/gui/IExtendedDialog.java
index c8a13de..ccf3d15 100644
--- a/src/org/openstreetmap/josm/gui/IExtendedDialog.java
+++ b/src/org/openstreetmap/josm/gui/IExtendedDialog.java
@@ -6,7 +6,7 @@ import java.awt.Component;
 import javax.swing.Icon;
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 
 /**
  * Extracted interface of {@link ExtendedDialog} class.
diff --git a/src/org/openstreetmap/josm/gui/ImageryMenu.java b/src/org/openstreetmap/josm/gui/ImageryMenu.java
index 469e8a2..d476539 100644
--- a/src/org/openstreetmap/josm/gui/ImageryMenu.java
+++ b/src/org/openstreetmap/josm/gui/ImageryMenu.java
@@ -24,7 +24,6 @@ import javax.swing.JPopupMenu;
 import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AddImageryLayerAction;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.MapRectifierWMSmenuAction;
@@ -52,12 +51,12 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
         AdjustImageryOffsetAction() {
             super(tr("Imagery offset"), "mapmode/adjustimg", tr("Adjust imagery offset"), null, false, false);
             putValue("toolbar", "imagery-offset");
-            Main.toolbar.register(this);
+            MainApplication.getToolbar().register(this);
         }
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            Collection<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class);
+            Collection<ImageryLayer> layers = MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class);
             if (layers.isEmpty()) {
                 setEnabled(false);
                 return;
@@ -111,7 +110,7 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
         /* I18N: mnemonic: I */
         super(trc("menu", "Imagery"));
         setupMenuScroller();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
         // build dynamically
         addMenuListener(new MenuListener() {
             @Override
@@ -159,8 +158,8 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
 
         // list all imagery entries where the current map location
         // is within the imagery bounds
-        if (Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             LatLon pos = mv.getProjection().eastNorth2latlon(mv.getCenter());
             final List<ImageryInfo> inViewLayers = new ArrayList<>();
 
@@ -195,9 +194,9 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
         }
 
         addDynamicSeparator();
-        JMenu subMenu = Main.main.menu.imagerySubMenu;
+        JMenu subMenu = MainApplication.getMenu().imagerySubMenu;
         int heightUnrolled = 30*(getItemCount()+subMenu.getItemCount());
-        if (heightUnrolled < Main.main.panel.getHeight()) {
+        if (heightUnrolled < MainApplication.getMainPanel().getHeight()) {
             // add all items of submenu if they will fit on screen
             int n = subMenu.getItemCount();
             for (int i = 0; i < n; i++) {
@@ -210,7 +209,7 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
     }
 
     private JMenuItem getNewOffsetMenu() {
-        Collection<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class);
+        Collection<ImageryLayer> layers = MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class);
         if (layers.isEmpty()) {
             offsetAction.setEnabled(false);
             return singleOffset;
@@ -270,7 +269,7 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
     private void removeDynamicItems() {
         for (Object item : dynamicItems) {
             if (item instanceof JMenuItem) {
-                Optional.ofNullable(((JMenuItem) item).getAction()).ifPresent(Main.toolbar::unregister);
+                Optional.ofNullable(((JMenuItem) item).getAction()).ifPresent(MainApplication.getToolbar()::unregister);
                 remove((JMenuItem) item);
             } else if (item instanceof MenuComponent) {
                 remove((MenuComponent) item);
diff --git a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
index 04f505a..928cddd 100644
--- a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
+++ b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
@@ -8,10 +8,10 @@ import java.text.MessageFormat;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.UserInfo;
 import org.openstreetmap.josm.data.preferences.StringSetting;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.io.OsmApi;
@@ -20,6 +20,7 @@ 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;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * JosmUserIdentityManager is a global object which keeps track of what JOSM knows about
@@ -67,7 +68,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener
                 try {
                     instance.initFromOAuth();
                 } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     // Fall back to preferences if OAuth identification fails for any reason
                     instance.initFromPreferences();
                 }
@@ -230,7 +231,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener
             UserInfo info = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE);
             setFullyIdentified(info.getDisplayName(), info);
         } catch (IllegalArgumentException | OsmTransferException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java
index 24aa400..6cc0c4d 100644
--- a/src/org/openstreetmap/josm/gui/MainApplication.java
+++ b/src/org/openstreetmap/josm/gui/MainApplication.java
@@ -4,7 +4,10 @@ package org.openstreetmap.josm.gui;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.awt.BorderLayout;
 import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
+import java.awt.event.KeyEvent;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -32,33 +35,76 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
 import java.util.logging.Level;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import javax.net.ssl.SSLSocketFactory;
+import javax.swing.Action;
+import javax.swing.InputMap;
 import javax.swing.JComponent;
 import javax.swing.JOptionPane;
+import javax.swing.KeyStroke;
+import javax.swing.LookAndFeel;
 import javax.swing.RepaintManager;
 import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
 
 import org.jdesktop.swinghelper.debug.CheckThreadViolationRepaintManager;
+import org.openstreetmap.gui.jmapviewer.FeatureAdapter;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.actions.OpenFileAction;
+import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
 import org.openstreetmap.josm.actions.PreferencesAction;
 import org.openstreetmap.josm.actions.RestartAction;
-import org.openstreetmap.josm.data.AutosaveTask;
-import org.openstreetmap.josm.data.CustomConfigurator;
+import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
+import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
+import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
+import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
+import org.openstreetmap.josm.actions.mapmode.DrawAction;
+import org.openstreetmap.josm.actions.search.SearchAction;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.search.SearchMode;
+import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.gui.ProgramArguments.Option;
 import org.openstreetmap.josm.gui.SplashScreen.SplashProgressMonitor;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
+import org.openstreetmap.josm.gui.io.CustomConfigurator.XMLCommandProcessor;
+import org.openstreetmap.josm.gui.io.SaveLayersDialog;
+import org.openstreetmap.josm.gui.layer.AutosaveTask;
+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;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
+import org.openstreetmap.josm.gui.progress.swing.ProgressMonitorExecutor;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.RedirectInputMap;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.io.CertificateAmendment;
 import org.openstreetmap.josm.io.DefaultProxySelector;
 import org.openstreetmap.josm.io.MessageNotifier;
 import org.openstreetmap.josm.io.OnlineResource;
+import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.io.OsmApiInitializationException;
+import org.openstreetmap.josm.io.OsmTransferCanceledException;
+import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.io.auth.DefaultAuthenticator;
 import org.openstreetmap.josm.io.protocols.data.Handler;
@@ -68,19 +114,27 @@ import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.tools.FontsManager;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.I18n;
+import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
+import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
+import org.openstreetmap.josm.tools.PlatformHook.NativeOsCallback;
 import org.openstreetmap.josm.tools.PlatformHookWindows;
+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.WindowGeometry;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
+import org.xml.sax.SAXException;
 
 /**
  * Main window class application.
  *
  * @author imi
  */
+ at SuppressWarnings("deprecation")
 public class MainApplication extends Main {
 
     /**
@@ -88,13 +142,66 @@ public class MainApplication extends Main {
      */
     private static final List<String> COMMAND_LINE_ARGS = new ArrayList<>();
 
+    /**
+     * The main menu bar at top of screen.
+     */
+    static MainMenu menu;
+
+    /**
+     * The main panel, required to be static for {@link MapFrameListener} handling.
+     */
+    static MainPanel mainPanel;
+
+    /**
+     * The private content pane of {@link MainFrame}, required to be static for shortcut handling.
+     */
+    static JComponent contentPanePrivate;
+
+    /**
+     * The MapFrame.
+     */
+    static MapFrame map;
+
+    /**
+     * The toolbar preference control to register new actions.
+     */
+    static volatile ToolbarPreferences toolbar;
+
     private final MainFrame mainFrame;
 
     /**
+     * The worker thread slave. This is for executing all long and intensive
+     * calculations. The executed runnables are guaranteed to be executed separately and sequential.
+     * @since 12634 (as a replacement to {@code Main.worker})
+     */
+    public static final ExecutorService worker = new ProgressMonitorExecutor("main-worker-%d", Thread.NORM_PRIORITY);
+    static {
+        Main.worker = worker;
+    }
+
+    /**
+     * Provides access to the layers displayed in the main view.
+     */
+    private static final MainLayerManager layerManager = new MainLayerManager();
+
+    /**
+     * The commands undo/redo handler.
+     * @since 12641 (as a replacement to {@code Main.main.undoRedo})
+     */
+    public static final UndoRedoHandler undoRedo = new UndoRedoHandler(); // Must be declared after layerManager
+
+    /**
+     * Listener that sets the enabled state of undo/redo menu entries.
+     */
+    private final CommandQueueListener redoUndoListener = (queueSize, redoSize) -> {
+            menu.undo.setEnabled(queueSize > 0);
+            menu.redo.setEnabled(redoSize > 0);
+        };
+
+    /**
      * Constructs a new {@code MainApplication} without a window.
      */
     public MainApplication() {
-        // Allow subclassing (see JOSM.java)
         this(null);
     }
 
@@ -107,27 +214,196 @@ public class MainApplication extends Main {
         this.mainFrame = mainFrame;
     }
 
+    /**
+     * Asks user to update its version of Java.
+     * @param updVersion target update version
+     * @param url download URL
+     * @param major true for a migration towards a major version of Java (8:9), false otherwise
+     * @param eolDate the EOL/expiration date
+     * @since 12270
+     */
+    public static void askUpdateJava(String updVersion, String url, String eolDate, boolean major) {
+        ExtendedDialog ed = new ExtendedDialog(
+                Main.parent,
+                tr("Outdated Java version"),
+                tr("OK"), tr("Update Java"), tr("Cancel"));
+        // Check if the dialog has not already been permanently hidden by user
+        if (!ed.toggleEnable("askUpdateJava"+updVersion).toggleCheckState()) {
+            ed.setButtonIcons("ok", "java", "cancel").setCancelButton(3);
+            ed.setMinimumSize(new Dimension(480, 300));
+            ed.setIcon(JOptionPane.WARNING_MESSAGE);
+            StringBuilder content = new StringBuilder(tr("You are running version {0} of Java.",
+                    "<b>"+System.getProperty("java.version")+"</b>")).append("<br><br>");
+            if ("Sun Microsystems Inc.".equals(System.getProperty("java.vendor")) && !platform.isOpenJDK()) {
+                content.append("<b>").append(tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
+                        "Oracle", eolDate)).append("</b><br><br>");
+            }
+            content.append("<b>")
+                   .append(major ?
+                        tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", updVersion) :
+                        tr("You may face critical Java bugs; we highly recommend you to update to Java {0}.", updVersion))
+                   .append("</b><br><br>")
+                   .append(tr("Would you like to update now ?"));
+            ed.setContent(content.toString());
+
+            if (ed.showDialog().getValue() == 2) {
+                try {
+                    platform.openUrl(url);
+                } catch (IOException e) {
+                    Logging.warn(e);
+                }
+            }
+        }
+    }
+
+    @Override
+    protected List<InitializationTask> beforeInitializationTasks() {
+        return Arrays.asList(
+            new InitializationTask(tr("Starting file watcher"), fileWatcher::start),
+            new InitializationTask(tr("Executing platform startup hook"), () -> platform.startupHook(MainApplication::askUpdateJava)),
+            new InitializationTask(tr("Building main menu"), this::initializeMainWindow),
+            new InitializationTask(tr("Updating user interface"), () -> {
+                undoRedo.addCommandQueueListener(redoUndoListener);
+                // creating toolbar
+                GuiHelper.runInEDTAndWait(() -> contentPanePrivate.add(toolbar.control, BorderLayout.NORTH));
+                // help shortcut
+                registerActionShortcut(menu.help, Shortcut.registerShortcut("system:help", tr("Help"),
+                        KeyEvent.VK_F1, Shortcut.DIRECT));
+            }),
+            // This needs to be done before RightAndLefthandTraffic::initialize is called
+            new InitializationTask(tr("Initializing internal boundaries data"), Territories::initialize)
+        );
+    }
+
+    @Override
+    protected Collection<InitializationTask> parallelInitializationTasks() {
+        return Arrays.asList(
+            new InitializationTask(tr("Initializing OSM API"), () -> {
+                    // We try to establish an API connection early, so that any API
+                    // capabilities are already known to the editor instance. However
+                    // if it goes wrong that's not critical at this stage.
+                    try {
+                        OsmApi.getOsmApi().initialize(null, true);
+                    } catch (OsmTransferCanceledException | OsmApiInitializationException e) {
+                        Logging.warn(Logging.getErrorMessage(Utils.getRootCause(e)));
+                    }
+                }),
+            new InitializationTask(tr("Initializing internal traffic data"), RightAndLefthandTraffic::initialize),
+            new InitializationTask(tr("Initializing validator"), OsmValidator::initialize),
+            new InitializationTask(tr("Initializing presets"), TaggingPresets::initialize),
+            new InitializationTask(tr("Initializing map styles"), MapPaintPreference::initialize),
+            new InitializationTask(tr("Loading imagery preferences"), ImageryPreference::initialize)
+        );
+    }
+
+    @Override
+    protected List<Callable<?>> asynchronousCallableTasks() {
+        return Arrays.asList(
+                OverpassTurboQueryWizard::getInstance
+            );
+    }
+
+    @Override
+    protected List<Runnable> asynchronousRunnableTasks() {
+        return Arrays.asList(
+                TMSLayer::getCache,
+                OsmValidator::initializeTests
+            );
+    }
+
     @Override
+    protected List<InitializationTask> afterInitializationTasks() {
+        return Arrays.asList(
+            new InitializationTask(tr("Updating user interface"), () -> GuiHelper.runInEDTAndWait(() -> {
+                // hooks for the jmapviewer component
+                FeatureAdapter.registerBrowserAdapter(OpenBrowser::displayUrl);
+                FeatureAdapter.registerTranslationAdapter(I18n::tr);
+                FeatureAdapter.registerLoggingAdapter(name -> Logging.getLogger());
+                // UI update
+                toolbar.refreshToolbarControl();
+                toolbar.control.updateUI();
+                contentPanePrivate.updateUI();
+            }))
+        );
+    }
+
+    /**
+     * Called once at startup to initialize the main window content.
+     * Should set {@link #menu} and {@link #mainPanel}
+     */
+    @SuppressWarnings("deprecation")
     protected void initializeMainWindow() {
         if (mainFrame != null) {
-            panel = mainFrame.getPanel();
+            mainPanel = mainFrame.getPanel();
+            panel = mainPanel;
             mainFrame.initialize();
             menu = mainFrame.getMenu();
+            super.menu = menu;
         } else {
             // required for running some tests.
-            panel = new MainPanel(Main.getLayerManager());
+            mainPanel = new MainPanel(layerManager);
+            panel = mainPanel;
             menu = new MainMenu();
+            super.menu = menu;
         }
-        panel.addMapFrameListener((o, n) -> redoUndoListener.commandChanged(0, 0));
-        panel.reAddListeners();
+        mainPanel.addMapFrameListener((o, n) -> redoUndoListener.commandChanged(0, 0));
+        mainPanel.reAddListeners();
     }
 
     @Override
     protected void shutdown() {
+        if (!GraphicsEnvironment.isHeadless()) {
+            worker.shutdown();
+        }
         if (mainFrame != null) {
             mainFrame.storeState();
         }
+        if (map != null) {
+            map.rememberToggleDialogWidth();
+        }
+        // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask)
+        layerManager.resetState();
         super.shutdown();
+        if (!GraphicsEnvironment.isHeadless()) {
+            worker.shutdownNow();
+        }
+    }
+
+    @Override
+    protected Bounds getRealBounds() {
+        return isDisplayingMapView() ? map.mapView.getRealBounds() : null;
+    }
+
+    @Override
+    protected void restoreOldBounds(Bounds oldBounds) {
+        if (isDisplayingMapView()) {
+            map.mapView.zoomTo(oldBounds);
+        }
+    }
+
+    /**
+     * Replies the current selected primitives, from a end-user point of view.
+     * It is not always technically the same collection of primitives than {@link DataSet#getSelected()}.
+     * Indeed, if the user is currently in drawing mode, only the way currently being drawn is returned,
+     * see {@link DrawAction#getInProgressSelection()}.
+     *
+     * @return The current selected primitives, from a end-user point of view. Can be {@code null}.
+     * @since 6546
+     */
+    @Override
+    public Collection<OsmPrimitive> getInProgressSelection() {
+        if (map != null && map.mapMode instanceof DrawAction) {
+            return ((DrawAction) map.mapMode).getInProgressSelection();
+        } else {
+            DataSet ds = layerManager.getEditDataSet();
+            if (ds == null) return null;
+            return ds.getSelected();
+        }
+    }
+
+    @Override
+    public DataSet getEditDataSet() {
+        return getLayerManager().getEditDataSet();
     }
 
     /**
@@ -140,6 +416,211 @@ public class MainApplication extends Main {
     }
 
     /**
+     * Returns the main layer manager that is used by the map view.
+     * @return The layer manager. The value returned will never change.
+     * @since 12636 (as a replacement to {@code Main.getLayerManager()})
+     */
+    @SuppressWarnings("deprecation")
+    public static MainLayerManager getLayerManager() {
+        return layerManager;
+    }
+
+    /**
+     * Returns the MapFrame.
+     * <p>
+     * There should be no need to access this to access any map data. Use {@link #layerManager} instead.
+     * @return the MapFrame
+     * @see MainPanel
+     * @since 12630 (as a replacement to {@code Main.map})
+     */
+    public static MapFrame getMap() {
+        return map;
+    }
+
+    /**
+     * Returns the main panel.
+     * @return the main panel
+     * @since 12642 (as a replacement to {@code Main.main.panel})
+     */
+    public static MainPanel getMainPanel() {
+        return mainPanel;
+    }
+
+    /**
+     * Returns the main menu, at top of screen.
+     * @return the main menu
+     * @since 12643 (as a replacement to {@code MainApplication.getMenu()})
+     */
+    public static MainMenu getMenu() {
+        return menu;
+    }
+
+    /**
+     * Returns the toolbar preference control to register new actions.
+     * @return the toolbar preference control
+     * @since 12637 (as a replacement to {@code Main.toolbar})
+     */
+    public static ToolbarPreferences getToolbar() {
+        return toolbar;
+    }
+
+    /**
+     * Replies true if JOSM currently displays a map view. False, if it doesn't, i.e. if
+     * it only shows the MOTD panel.
+     * <p>
+     * You do not need this when accessing the layer manager. The layer manager will be empty if no map view is shown.
+     *
+     * @return <code>true</code> if JOSM currently displays a map view
+     * @since 12630 (as a replacement to {@code Main.isDisplayingMapView()})
+     */
+    @SuppressWarnings("deprecation")
+    public static boolean isDisplayingMapView() {
+        return map != null && map.mapView != null;
+    }
+
+    /**
+     * Closes JOSM and optionally terminates the Java Virtual Machine (JVM).
+     * If there are some unsaved data layers, asks first for user confirmation.
+     * @param exit If {@code true}, the JVM is terminated by running {@link System#exit} with a given return code.
+     * @param exitCode The return code
+     * @param reason the reason for exiting
+     * @return {@code true} if JOSM has been closed, {@code false} if the user has cancelled the operation.
+     * @since 12636 (specialized version of {@link Main#exitJosm})
+     */
+    public static boolean exitJosm(boolean exit, int exitCode, SaveLayersDialog.Reason reason) {
+        final boolean proceed = Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() ->
+                SaveLayersDialog.saveUnsavedModifications(layerManager.getLayers(),
+                        reason != null ? reason : SaveLayersDialog.Reason.EXIT)));
+        if (proceed) {
+            return Main.exitJosm(exit, exitCode);
+        }
+        return false;
+    }
+
+    public static void redirectToMainContentPane(JComponent source) {
+        RedirectInputMap.redirect(source, contentPanePrivate);
+    }
+
+    /**
+     * Registers a new {@code MapFrameListener} that will be notified of MapFrame changes.
+     * <p>
+     * It will fire an initial mapFrameInitialized event when the MapFrame is present.
+     * Otherwise will only fire when the MapFrame is created or destroyed.
+     * @param listener The MapFrameListener
+     * @return {@code true} if the listeners collection changed as a result of the call
+     * @see #addMapFrameListener
+     * @since 12639 (as a replacement to {@code Main.addAndFireMapFrameListener})
+     */
+    @SuppressWarnings("deprecation")
+    public static boolean addAndFireMapFrameListener(MapFrameListener listener) {
+        return mainPanel != null && mainPanel.addAndFireMapFrameListener(listener);
+    }
+
+    /**
+     * Registers a new {@code MapFrameListener} that will be notified of MapFrame changes
+     * @param listener The MapFrameListener
+     * @return {@code true} if the listeners collection changed as a result of the call
+     * @see #addAndFireMapFrameListener
+     * @since 12639 (as a replacement to {@code Main.addMapFrameListener})
+     */
+    @SuppressWarnings("deprecation")
+    public static boolean addMapFrameListener(MapFrameListener listener) {
+        return mainPanel != null && mainPanel.addMapFrameListener(listener);
+    }
+
+    /**
+     * Unregisters the given {@code MapFrameListener} from MapFrame changes
+     * @param listener The MapFrameListener
+     * @return {@code true} if the listeners collection changed as a result of the call
+     * @since 12639 (as a replacement to {@code Main.removeMapFrameListener})
+     */
+    @SuppressWarnings("deprecation")
+    public static boolean removeMapFrameListener(MapFrameListener listener) {
+        return mainPanel != null && mainPanel.removeMapFrameListener(listener);
+    }
+
+    /**
+     * Registers a {@code JosmAction} and its shortcut.
+     * @param action action defining its own shortcut
+     * @since 12639 (as a replacement to {@code Main.registerActionShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static void registerActionShortcut(JosmAction action) {
+        registerActionShortcut(action, action.getShortcut());
+    }
+
+    /**
+     * Registers an action and its shortcut.
+     * @param action action to register
+     * @param shortcut shortcut to associate to {@code action}
+     * @since 12639 (as a replacement to {@code Main.registerActionShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static void registerActionShortcut(Action action, Shortcut shortcut) {
+        KeyStroke keyStroke = shortcut.getKeyStroke();
+        if (keyStroke == null)
+            return;
+
+        InputMap inputMap = contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+        Object existing = inputMap.get(keyStroke);
+        if (existing != null && !existing.equals(action)) {
+            Logging.info(String.format("Keystroke %s is already assigned to %s, will be overridden by %s", keyStroke, existing, action));
+        }
+        inputMap.put(keyStroke, action);
+
+        contentPanePrivate.getActionMap().put(action, action);
+    }
+
+    /**
+     * Unregisters a shortcut.
+     * @param shortcut shortcut to unregister
+     * @since 12639 (as a replacement to {@code Main.unregisterShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static void unregisterShortcut(Shortcut shortcut) {
+        contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(shortcut.getKeyStroke());
+    }
+
+    /**
+     * Unregisters a {@code JosmAction} and its shortcut.
+     * @param action action to unregister
+     * @since 12639 (as a replacement to {@code Main.unregisterActionShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static void unregisterActionShortcut(JosmAction action) {
+        unregisterActionShortcut(action, action.getShortcut());
+    }
+
+    /**
+     * Unregisters an action and its shortcut.
+     * @param action action to unregister
+     * @param shortcut shortcut to unregister
+     * @since 12639 (as a replacement to {@code Main.unregisterActionShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static void unregisterActionShortcut(Action action, Shortcut shortcut) {
+        unregisterShortcut(shortcut);
+        contentPanePrivate.getActionMap().remove(action);
+    }
+
+    /**
+     * Replies the registered action for the given shortcut
+     * @param shortcut The shortcut to look for
+     * @return the registered action for the given shortcut
+     * @since 12639 (as a replacement to {@code Main.getRegisteredActionShortcut})
+     */
+    @SuppressWarnings("deprecation")
+    public static Action getRegisteredActionShortcut(Shortcut shortcut) {
+        KeyStroke keyStroke = shortcut.getKeyStroke();
+        if (keyStroke == null)
+            return null;
+        Object action = contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).get(keyStroke);
+        if (action instanceof Action)
+            return (Action) action;
+        return null;
+    }
+
+    /**
      * Displays help on the console
      * @since 2748
      */
@@ -206,6 +687,7 @@ public class MainApplication extends Main {
      * Main application Startup
      * @param argArray Command-line arguments
      */
+    @SuppressWarnings("deprecation")
     public static void main(final String[] argArray) {
         I18n.init();
 
@@ -222,7 +704,7 @@ public class MainApplication extends Main {
         Level logLevel = args.getLogLevel();
         Logging.setLogLevel(logLevel);
         if (!args.showVersion() && !args.showHelp()) {
-            Main.info(tr("Log level is at {0} ({1}, {2})", logLevel.getLocalizedName(), logLevel.getName(), logLevel.intValue()));
+            Logging.info(tr("Log level is at {0} ({1}, {2})", logLevel.getLocalizedName(), logLevel.getName(), logLevel.intValue()));
         }
 
         Optional<String> language = args.getSingle(Option.LANGUAGE);
@@ -247,6 +729,7 @@ public class MainApplication extends Main {
 
         // initialize the platform hook, and
         Main.determinePlatformHook();
+        Main.platform.setNativeOsCallback(new DefaultNativeOsCallback());
         // call the really early hook before we do anything else
         Main.platform.preStartupHook();
 
@@ -262,13 +745,13 @@ public class MainApplication extends Main {
 
         boolean skipLoadingPlugins = args.hasOption(Option.SKIP_PLUGINS);
         if (skipLoadingPlugins) {
-            Main.info(tr("Plugin loading skipped"));
+            Logging.info(tr("Plugin loading skipped"));
         }
 
         if (Logging.isLoggingEnabled(Logging.LEVEL_TRACE)) {
             // Enable debug in OAuth signpost via system preference, but only at trace level
             Utils.updateSystemProperty("debug", "true");
-            Main.info(tr("Enabled detailed debug level (trace)"));
+            Logging.info(tr("Enabled detailed debug level (trace)"));
         }
 
         Main.pref.init(args.hasOption(Option.RESET_PREFERENCES));
@@ -288,7 +771,7 @@ public class MainApplication extends Main {
 
         FontsManager.initialize();
 
-        I18n.setupLanguageFonts();
+        GuiHelper.setupLanguageFonts();
 
         Handler.install();
 
@@ -297,15 +780,15 @@ public class MainApplication extends Main {
                 !args.hasOption(Option.NO_MAXIMIZE) && Main.pref.getBoolean("gui.maximized", false));
         final MainFrame mainFrame = new MainFrame(geometry);
         if (mainFrame.getContentPane() instanceof JComponent) {
-            Main.contentPanePrivate = (JComponent) mainFrame.getContentPane();
+            contentPanePrivate = (JComponent) mainFrame.getContentPane();
         }
-        Main.mainPanel = mainFrame.getPanel();
+        mainPanel = mainFrame.getPanel();
         Main.parent = mainFrame;
 
         if (args.hasOption(Option.LOAD_PREFERENCES)) {
-            CustomConfigurator.XMLCommandProcessor config = new CustomConfigurator.XMLCommandProcessor(Main.pref);
+            XMLCommandProcessor config = new XMLCommandProcessor(Main.pref);
             for (String i : args.get(Option.LOAD_PREFERENCES)) {
-                info("Reading preferences from " + i);
+                Logging.info("Reading preferences from " + i);
                 try (InputStream is = openStream(new URL(i))) {
                     config.openAndReadXML(is);
                 } catch (IOException ex) {
@@ -317,8 +800,8 @@ public class MainApplication extends Main {
         try {
             CertificateAmendment.addMissingCertificates();
         } catch (IOException | GeneralSecurityException ex) {
-            Main.warn(ex);
-            Main.warn(getErrorMessage(Utils.getRootCause(ex)));
+            Logging.warn(ex);
+            Logging.warn(Logging.getErrorMessage(Utils.getRootCause(ex)));
         }
         Authenticator.setDefault(DefaultAuthenticator.getInstance());
         DefaultProxySelector proxySelector = new DefaultProxySelector(ProxySelector.getDefault());
@@ -352,6 +835,11 @@ public class MainApplication extends Main {
         }
 
         monitor.indeterminateSubTask(tr("Setting defaults"));
+        setupUIManager();
+        toolbar = new ToolbarPreferences();
+        Main.toolbar = toolbar;
+        ProjectionPreference.setProjection();
+        GuiHelper.translateJavaInternalMessages();
         preConstructorInit();
 
         monitor.indeterminateSubTask(tr("Creating main GUI"));
@@ -386,7 +874,7 @@ public class MainApplication extends Main {
                 // neither startupHook (need to be called before remote control)
                 PlatformHookWindows.removeInsecureCertificates();
             } catch (NoSuchAlgorithmException | CertificateException | KeyStoreException | IOException e) {
-                error(e);
+                Logging.error(e);
             }
         }
 
@@ -401,11 +889,62 @@ public class MainApplication extends Main {
         if (Main.pref.getBoolean("debug.edt-checker.enable", Version.getInstance().isLocalBuild())) {
             // Repaint manager is registered so late for a reason - there is lots of violation during startup process
             // but they don't seem to break anything and are difficult to fix
-            info("Enabled EDT checker, wrongful access to gui from non EDT thread will be printed to console");
+            Logging.info("Enabled EDT checker, wrongful access to gui from non EDT thread will be printed to console");
             RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());
         }
     }
 
+    static void setupUIManager() {
+        String defaultlaf = platform.getDefaultStyle();
+        String laf = LafPreference.LAF.get();
+        try {
+            UIManager.setLookAndFeel(laf);
+        } catch (final NoClassDefFoundError | ClassNotFoundException e) {
+            // Try to find look and feel in plugin classloaders
+            Logging.trace(e);
+            Class<?> klass = null;
+            for (ClassLoader cl : PluginHandler.getResourceClassLoaders()) {
+                try {
+                    klass = cl.loadClass(laf);
+                    break;
+                } catch (ClassNotFoundException ex) {
+                    Logging.trace(ex);
+                }
+            }
+            if (klass != null && LookAndFeel.class.isAssignableFrom(klass)) {
+                try {
+                    UIManager.setLookAndFeel((LookAndFeel) klass.getConstructor().newInstance());
+                } catch (ReflectiveOperationException ex) {
+                    Logging.log(Logging.LEVEL_WARN, "Cannot set Look and Feel: " + laf + ": "+ex.getMessage(), ex);
+                } catch (UnsupportedLookAndFeelException ex) {
+                    Logging.info("Look and Feel not supported: " + laf);
+                    LafPreference.LAF.put(defaultlaf);
+                    Logging.trace(ex);
+                }
+            } else {
+                Logging.info("Look and Feel not found: " + laf);
+                LafPreference.LAF.put(defaultlaf);
+            }
+        } catch (UnsupportedLookAndFeelException e) {
+            Logging.info("Look and Feel not supported: " + laf);
+            LafPreference.LAF.put(defaultlaf);
+            Logging.trace(e);
+        } catch (InstantiationException | IllegalAccessException e) {
+            Logging.error(e);
+        }
+
+        UIManager.put("OptionPane.okIcon", ImageProvider.get("ok"));
+        UIManager.put("OptionPane.yesIcon", UIManager.get("OptionPane.okIcon"));
+        UIManager.put("OptionPane.cancelIcon", ImageProvider.get("cancel"));
+        UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
+        // Ensures caret color is the same than text foreground color, see #12257
+        // See http://docs.oracle.com/javase/8/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
+        for (String p : Arrays.asList(
+                "EditorPane", "FormattedTextField", "PasswordField", "TextArea", "TextField", "TextPane")) {
+            UIManager.put(p+".caretForeground", UIManager.getColor(p+".foreground"));
+        }
+    }
+
     private static InputStream openStream(URL url) throws IOException {
         if ("file".equals(url.getProtocol())) {
             return url.openStream();
@@ -442,8 +981,9 @@ public class MainApplication extends Main {
                 try {
                     Main.setOffline(OnlineResource.valueOf(s.toUpperCase(Locale.ENGLISH)));
                 } catch (IllegalArgumentException e) {
-                    Main.error(e, tr("''{0}'' is not a valid value for argument ''{1}''. Possible values are {2}, possibly delimited by commas.",
-                            s.toUpperCase(Locale.ENGLISH), Option.OFFLINE.getName(), Arrays.toString(OnlineResource.values())));
+                    Logging.log(Logging.LEVEL_ERROR,
+                            tr("''{0}'' is not a valid value for argument ''{1}''. Possible values are {2}, possibly delimited by commas.",
+                            s.toUpperCase(Locale.ENGLISH), Option.OFFLINE.getName(), Arrays.toString(OnlineResource.values())), e);
                     System.exit(1);
                     return;
                 }
@@ -451,7 +991,7 @@ public class MainApplication extends Main {
         }
         Set<OnlineResource> offline = Main.getOfflineResources();
         if (!offline.isEmpty()) {
-            Main.warn(trn("JOSM is running in offline mode. This resource will not be available: {0}",
+            Logging.warn(trn("JOSM is running in offline mode. This resource will not be available: {0}",
                     "JOSM is running in offline mode. These resources will not be available: {0}",
                     offline.size(), offline.size() == 1 ? offline.iterator().next() : Arrays.toString(offline.toArray())));
         }
@@ -479,9 +1019,9 @@ public class MainApplication extends Main {
                                 SSLSocketFactory.getDefault().createSocket(a, 443).close();
                                 Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
                                 if (!wasv6) {
-                                    Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
+                                    Logging.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
                                 } else {
-                                    Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4."));
+                                    Logging.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4."));
                                 }
                                 hasv6 = true;
                             }
@@ -489,18 +1029,16 @@ public class MainApplication extends Main {
                         }
                     }
                 } catch (IOException | SecurityException e) {
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("Exception while checking IPv6 connectivity: "+e);
-                    }
-                    Main.trace(e);
+                    Logging.debug("Exception while checking IPv6 connectivity: {0}", e);
+                    Logging.trace(e);
                 }
                 if (wasv6 && !hasv6) {
-                    Main.info(tr("Detected no useable IPv6 network, prefering IPv4 over IPv6 after next restart."));
+                    Logging.info(tr("Detected no useable IPv6 network, prefering IPv4 over IPv6 after next restart."));
                     Main.pref.put("validated.ipv6", hasv6); // be sure it is stored before the restart!
                     try {
                         RestartAction.restartJOSM();
                     } catch (IOException e) {
-                        Main.error(e);
+                        Logging.error(e);
                     }
                 }
                 Main.pref.put("validated.ipv6", hasv6);
@@ -508,6 +1046,48 @@ public class MainApplication extends Main {
         }
     }
 
+    /**
+     * Download area specified as Bounds value.
+     * @param rawGps Flag to download raw GPS tracks
+     * @param b The bounds value
+     * @return the complete download task (including post-download handler)
+     */
+    static List<Future<?>> downloadFromParamBounds(final boolean rawGps, Bounds b) {
+        DownloadTask task = rawGps ? new DownloadGpsTask() : new DownloadOsmTask();
+        // asynchronously launch the download task ...
+        Future<?> future = task.download(true, b, null);
+        // ... and the continuation when the download is finished (this will wait for the download to finish)
+        return Collections.singletonList(MainApplication.worker.submit(new PostDownloadHandler(task, future)));
+    }
+
+    /**
+     * Handle command line instructions after GUI has been initialized.
+     * @param args program arguments
+     * @return the list of submitted tasks
+     */
+    static List<Future<?>> postConstructorProcessCmdLine(ProgramArguments args) {
+        List<Future<?>> tasks = new ArrayList<>();
+        List<File> fileList = new ArrayList<>();
+        for (String s : args.get(Option.DOWNLOAD)) {
+            tasks.addAll(DownloadParamType.paramType(s).download(s, fileList));
+        }
+        if (!fileList.isEmpty()) {
+            tasks.add(OpenFileAction.openFiles(fileList, true));
+        }
+        for (String s : args.get(Option.DOWNLOADGPS)) {
+            tasks.addAll(DownloadParamType.paramType(s).downloadGps(s));
+        }
+        final Collection<String> selectionArguments = args.get(Option.SELECTION);
+        if (!selectionArguments.isEmpty()) {
+            tasks.add(MainApplication.worker.submit(() -> {
+                for (String s : selectionArguments) {
+                    SearchAction.search(s, SearchMode.add);
+                }
+            }));
+        }
+        return tasks;
+    }
+
     private static class GuiFinalizationWorker implements Runnable {
 
         private final ProgramArguments args;
@@ -613,4 +1193,41 @@ public class MainApplication extends Main {
             return false;
         }
     }
+
+    private static class DefaultNativeOsCallback implements NativeOsCallback {
+        @Override
+        public void openFiles(List<File> files) {
+            Executors.newSingleThreadExecutor(Utils.newThreadFactory("openFiles-%d", Thread.NORM_PRIORITY)).submit(
+                    new OpenFileTask(files, null) {
+                @Override
+                protected void realRun() throws SAXException, IOException, OsmTransferException {
+                    // Wait for JOSM startup is advanced enough to load a file
+                    while (Main.parent == null || !Main.parent.isVisible()) {
+                        try {
+                            Thread.sleep(25);
+                        } catch (InterruptedException e) {
+                            Logging.warn(e);
+                            Thread.currentThread().interrupt();
+                        }
+                    }
+                    super.realRun();
+                }
+            });
+        }
+
+        @Override
+        public boolean handleQuitRequest() {
+            return MainApplication.exitJosm(false, 0, null);
+        }
+
+        @Override
+        public void handleAbout() {
+            MainApplication.getMenu().about.actionPerformed(null);
+        }
+
+        @Override
+        public void handlePreferences() {
+            MainApplication.getMenu().preferences.actionPerformed(null);
+        }
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/MainFrame.java b/src/org/openstreetmap/josm/gui/MainFrame.java
index 7d861b5..0a3b70b 100644
--- a/src/org/openstreetmap/josm/gui/MainFrame.java
+++ b/src/org/openstreetmap/josm/gui/MainFrame.java
@@ -26,8 +26,9 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.LayerStateChangeListener;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is the JOSM main window. It updates it's title.
@@ -65,7 +66,7 @@ public class MainFrame extends JFrame {
     public MainFrame(WindowGeometry geometry) {
         super();
         this.geometry = geometry;
-        this.panel = new MainPanel(Main.getLayerManager());
+        this.panel = new MainPanel(MainApplication.getLayerManager());
         setContentPane(new JPanel(new BorderLayout()));
     }
 
@@ -92,8 +93,8 @@ public class MainFrame extends JFrame {
         setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
 
         // This listener is never removed, since the main frame exists forever.
-        Main.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle());
-        Main.getLayerManager().addAndFireLayerChangeListener(new ManageLayerListeners());
+        MainApplication.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle());
+        MainApplication.getLayerManager().addAndFireLayerChangeListener(new ManageLayerListeners());
 
         refreshTitle();
 
@@ -143,7 +144,7 @@ public class MainFrame extends JFrame {
                 windowState = JFrame.MAXIMIZED_BOTH;
                 setExtendedState(windowState);
             } else {
-                Main.debug("Main window: maximizing not supported");
+                Logging.debug("Main window: maximizing not supported");
             }
         } else {
             throw new UnsupportedOperationException("Unimplemented.");
@@ -154,7 +155,7 @@ public class MainFrame extends JFrame {
      * Update the title of the window to reflect the current content.
      */
     public void refreshTitle() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         boolean dirty = editLayer != null && (editLayer.requiresSaveToFile()
                 || (editLayer.requiresUploadToServer() && !editLayer.isUploadDiscouraged()));
         setTitle((dirty ? "* " : "") + tr("Java OpenStreetMap Editor"));
@@ -162,7 +163,7 @@ public class MainFrame extends JFrame {
     }
 
     private void onLayerChange(OsmDataLayer layer) {
-        if (layer == Main.getLayerManager().getEditLayer()) {
+        if (layer == MainApplication.getLayerManager().getEditLayer()) {
             refreshTitle();
         }
     }
@@ -170,7 +171,7 @@ public class MainFrame extends JFrame {
     static final class ExitWindowAdapter extends WindowAdapter {
         @Override
         public void windowClosing(final WindowEvent evt) {
-            Main.exitJosm(true, 0, null);
+            MainApplication.exitJosm(true, 0, null);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
index 8af8243..9a39c65 100644
--- a/src/org/openstreetmap/josm/gui/MainMenu.java
+++ b/src/org/openstreetmap/josm/gui/MainMenu.java
@@ -72,7 +72,6 @@ import org.openstreetmap.josm.actions.OpenFileAction;
 import org.openstreetmap.josm.actions.OpenLocationAction;
 import org.openstreetmap.josm.actions.OrthogonalizeAction;
 import org.openstreetmap.josm.actions.OrthogonalizeAction.Undo;
-import org.openstreetmap.josm.actions.OverpassDownloadAction;
 import org.openstreetmap.josm.actions.PasteAction;
 import org.openstreetmap.josm.actions.PasteAtSourcePositionAction;
 import org.openstreetmap.josm.actions.PasteTagsAction;
@@ -159,8 +158,6 @@ public class MainMenu extends JMenuBar {
     public final DownloadAction download = new DownloadAction();
     /** File / Download in current view **/
     public final DownloadOsmInViewAction downloadInView = new DownloadOsmInViewAction();
-    /** File / Download from Overpass API... **/
-    public final OverpassDownloadAction overpassDownload = new OverpassDownloadAction();
     /** File / Download object... **/
     public final DownloadPrimitiveAction downloadPrimitive = new DownloadPrimitiveAction();
     /** File / Download notes in current view **/
@@ -657,7 +654,6 @@ public class MainMenu extends JMenuBar {
         fileMenu.addSeparator();
         add(fileMenu, download);
         add(fileMenu, downloadInView, true);
-        add(fileMenu, overpassDownload, true);
         add(fileMenu, downloadPrimitive);
         add(fileMenu, searchNotes);
         add(fileMenu, downloadNotesInView);
@@ -677,9 +673,9 @@ public class MainMenu extends JMenuBar {
         add(fileMenu, exit);
 
         add(editMenu, undo);
-        Main.main.undoRedo.addCommandQueueListener(undo);
+        MainApplication.undoRedo.addCommandQueueListener(undo);
         add(editMenu, redo);
-        Main.main.undoRedo.addCommandQueueListener(redo);
+        MainApplication.undoRedo.addCommandQueueListener(redo);
         editMenu.addSeparator();
         add(editMenu, copy);
         add(editMenu, copyCoordinates, true);
@@ -892,7 +888,7 @@ public class MainMenu extends JMenuBar {
 
         PresetsMenuEnabler(JMenu presetsMenu) {
             this.presetsMenu = presetsMenu;
-            Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+            MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/MainPanel.java b/src/org/openstreetmap/josm/gui/MainPanel.java
index d89c4ee..e93a70b 100644
--- a/src/org/openstreetmap/josm/gui/MainPanel.java
+++ b/src/org/openstreetmap/josm/gui/MainPanel.java
@@ -13,6 +13,7 @@ import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.LayerAvailabilityEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.LayerAvailabilityListener;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -43,6 +44,7 @@ public class MainPanel extends JPanel {
      * Update the content of this {@link MainFrame} to either display the map or display the welcome screen.
      * @param showMap If the map should be displayed.
      */
+    @SuppressWarnings("deprecation")
     protected synchronized void updateContent(boolean showMap) {
         GuiHelper.assertCallFromEdt();
         MapFrame old = map;
@@ -64,6 +66,7 @@ public class MainPanel extends JPanel {
         } else {
             map = null;
             Main.map = map;
+            MainApplication.map = map;
             add(getGettingStarted(), BorderLayout.CENTER);
         }
         setVisible(true);
@@ -77,20 +80,22 @@ public class MainPanel extends JPanel {
         for (MapFrameListener listener : mapFrameListeners) {
             listener.mapFrameInitialized(old, map);
         }
-        if (map == null && Main.currentProgressMonitor != null) {
-            Main.currentProgressMonitor.showForegroundDialog();
+        if (map == null && PleaseWaitProgressMonitor.getCurrent() != null) {
+            PleaseWaitProgressMonitor.getCurrent().showForegroundDialog();
         }
     }
 
+    @SuppressWarnings("deprecation")
     private MapFrame createNewMapFrame() {
         MapFrame mapFrame = new MapFrame(null);
         // Required by many components.
         Main.map = mapFrame;
+        MainApplication.map = mapFrame;
 
         mapFrame.fillPanel(this);
 
         //TODO: Move this to some better place
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
         if (!layers.isEmpty()) {
             mapFrame.selectMapMode((MapMode) mapFrame.getDefaultButtonAction(), layers.get(0));
         }
diff --git a/src/org/openstreetmap/josm/gui/MapFrame.java b/src/org/openstreetmap/josm/gui/MapFrame.java
index d94e2bd..a4e02f1 100644
--- a/src/org/openstreetmap/josm/gui/MapFrame.java
+++ b/src/org/openstreetmap/josm/gui/MapFrame.java
@@ -201,7 +201,7 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
         setSize(400, 400);
         setLayout(new BorderLayout());
 
-        mapView = new MapView(Main.getLayerManager(), viewportData);
+        mapView = new MapView(MainApplication.getLayerManager(), viewportData);
 
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
 
@@ -281,8 +281,8 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
 
         // status line below the map
         statusLine = new MapStatus(this);
-        Main.getLayerManager().addLayerChangeListener(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
 
         boolean unregisterTab = Shortcut.findShortcut(KeyEvent.VK_TAB, 0).isPresent();
         if (unregisterTab) {
@@ -341,8 +341,8 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
      */
     @Override
     public void destroy() {
-        Main.getLayerManager().removeLayerChangeListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         dialogsPanel.destroy();
         Main.pref.removePreferenceChangeListener(sidetoolbarPreferencesChangedListener);
         for (int i = 0; i < toolBarActions.getComponentCount(); ++i) {
diff --git a/src/org/openstreetmap/josm/gui/MapMover.java b/src/org/openstreetmap/josm/gui/MapMover.java
index 2688f61..a63bfbf 100644
--- a/src/org/openstreetmap/josm/gui/MapMover.java
+++ b/src/org/openstreetmap/josm/gui/MapMover.java
@@ -152,7 +152,7 @@ public class MapMover extends MouseAdapter implements Destroyable {
     }
 
     private void registerActionShortcut(ZoomerAction action, Shortcut shortcut) {
-        Main.registerActionShortcut(action, shortcut);
+        MainApplication.registerActionShortcut(action, shortcut);
         registeredShortcuts.add(new Pair<>(action, shortcut));
     }
 
@@ -168,10 +168,11 @@ public class MapMover extends MouseAdapter implements Destroyable {
         int offMask = MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON2_DOWN_MASK;
         boolean allowMovement = (e.getModifiersEx() & (MouseEvent.BUTTON3_DOWN_MASK | offMask)) == MouseEvent.BUTTON3_DOWN_MASK;
         if (Main.isPlatformOsx()) {
+            MapFrame map = MainApplication.getMap();
             int macMouseMask = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
             boolean macMovement = e.getModifiersEx() == macMouseMask;
-            boolean allowedMode = !Main.map.mapModeSelect.equals(Main.map.mapMode)
-                              || SelectAction.Mode.SELECT.equals(Main.map.mapModeSelect.getMode());
+            boolean allowedMode = !map.mapModeSelect.equals(map.mapMode)
+                              || SelectAction.Mode.SELECT.equals(map.mapModeSelect.getMode());
             allowMovement |= macMovement && allowedMode;
         }
         if (allowMovement) {
@@ -269,7 +270,7 @@ public class MapMover extends MouseAdapter implements Destroyable {
     @Override
     public void destroy() {
         for (Pair<ZoomerAction, Shortcut> shortcut : registeredShortcuts) {
-            Main.unregisterActionShortcut(shortcut.a, shortcut.b);
+            MainApplication.unregisterActionShortcut(shortcut.a, shortcut.b);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/MapStatus.java b/src/org/openstreetmap/josm/gui/MapStatus.java
index 3a9d404..4e1ebca 100644
--- a/src/org/openstreetmap/josm/gui/MapStatus.java
+++ b/src/org/openstreetmap/josm/gui/MapStatus.java
@@ -62,6 +62,7 @@ import org.openstreetmap.josm.data.SystemOfMeasurement.SoMChangeListener;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
@@ -69,15 +70,15 @@ import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.gui.help.Helpful;
-import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor.ProgressMonitorDialog;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor.ProgressMonitorDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.ImageLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -137,7 +138,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
     static final class ShowMonitorDialogMouseAdapter extends MouseAdapter {
         @Override
         public void mouseClicked(MouseEvent e) {
-            PleaseWaitProgressMonitor monitor = Main.currentProgressMonitor;
+            PleaseWaitProgressMonitor monitor = PleaseWaitProgressMonitor.getCurrent();
             if (monitor != null) {
                 monitor.showForegroundDialog();
             }
@@ -148,7 +149,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
         @Override
         public void mouseClicked(MouseEvent e) {
             if (e.getButton() != MouseEvent.BUTTON3) {
-                Main.main.menu.jumpToAct.showJumpToDialog();
+                MainApplication.getMenu().jumpToAct.showJumpToDialog();
             }
         }
     }
@@ -202,7 +203,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
         @Override
         public void appendLogMessage(String message) {
             if (message != null && !message.isEmpty()) {
-                Main.info("appendLogMessage not implemented for background tasks. Message was: " + message);
+                Logging.info("appendLogMessage not implemented for background tasks. Message was: " + message);
             }
         }
 
@@ -356,7 +357,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
 
                     oldMousePos = ms.mousePos;
                 } catch (ConcurrentModificationException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                 } finally {
                     if (ds != null) {
                         if (isAtOldPosition && middleMouseDown) {
@@ -404,7 +405,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
                 for (;;) {
                     try {
                         final MouseState ms = incomingMouseState.take();
-                        if (parent != Main.map)
+                        if (parent != MainApplication.getMap())
                             return; // exit, if new parent.
 
                         // Do nothing, if required data is missing
@@ -414,12 +415,12 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
 
                         EventQueue.invokeAndWait(new CollectorWorker(ms));
                     } catch (InvocationTargetException e) {
-                        Main.warn(e);
+                        Logging.warn(e);
                     }
                 }
             } catch (InterruptedException e) {
                 // Occurs frequently during JOSM shutdown, log set to trace only
-                Main.trace("InterruptedException in "+MapStatus.class.getSimpleName());
+                Logging.trace("InterruptedException in "+MapStatus.class.getSimpleName());
                 Thread.currentThread().interrupt();
             } finally {
                 unregisterListeners();
@@ -484,7 +485,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
          * @param mods modifiers (i.e. control keys)
          */
         private void popupCycleSelection(Collection<OsmPrimitive> osms, int mods) {
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             // Find some items that are required for cycling through
             OsmPrimitive firstItem = null;
             OsmPrimitive firstSelected = null;
@@ -575,7 +576,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
          * @param osm The primitive to derive the colors from
          */
         private void popupSetLabelColors(JLabel lbl, OsmPrimitive osm) {
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             if (ds.isSelected(osm)) {
                 lbl.setBackground(SystemColor.textHighlight);
                 lbl.setForeground(SystemColor.textHighlightText);
@@ -648,7 +649,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
 
                 @Override
                 public void mouseClicked(MouseEvent e) {
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
+                    DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                     // Let the user toggle the selection
                     ds.toggleSelected(osm);
                     l.validate();
@@ -685,7 +686,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             // remove mouse states that are in the queue. Our mouse state is newer.
             incomingMouseState.clear();
             if (!incomingMouseState.offer(ms)) {
-                Main.warn("Unable to handle new MouseState: " + ms);
+                Logging.warn("Unable to handle new MouseState: " + ms);
             }
         }
     }
@@ -738,7 +739,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             Toolkit.getDefaultToolkit().addAWTEventListener(awtListener,
                     AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
         } catch (SecurityException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             mv.addMouseMotionListener(mouseMotionListener);
             mv.addKeyListener(keyAdapter);
         }
@@ -749,7 +750,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             Toolkit.getDefaultToolkit().removeAWTEventListener(awtListener);
         } catch (SecurityException e) {
             // Don't care, awtListener probably wasn't registered anyway
-            Main.trace(e);
+            Logging.trace(e);
         }
         mv.removeMouseMotionListener(mouseMotionListener);
         mv.removeKeyListener(keyAdapter);
@@ -757,7 +758,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
 
     private class MapStatusPopupMenu extends JPopupMenu {
 
-        private final JMenuItem jumpButton = add(Main.main.menu.jumpToAct);
+        private final JMenuItem jumpButton = add(MainApplication.getMenu().jumpToAct);
 
         /** Icons for selecting {@link SystemOfMeasurement} */
         private final Collection<JCheckBoxMenuItem> somItems = new ArrayList<>();
@@ -804,7 +805,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
                 public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
                     Component invoker = ((JPopupMenu) e.getSource()).getInvoker();
                     jumpButton.setVisible(latText.equals(invoker) || lonText.equals(invoker));
-                    String currentSOM = ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.get();
+                    String currentSOM = SystemOfMeasurement.PROP_SYSTEM_OF_MEASUREMENT.get();
                     for (JMenuItem item : somItems) {
                         item.setSelected(item.getText().equals(currentSOM));
                         item.setVisible(distText.equals(invoker));
@@ -916,7 +917,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
                 @Override
                 public void mouseClicked(MouseEvent e) {
                     if (!e.isPopupTrigger() && e.getButton() == MouseEvent.BUTTON1) {
-                        String som = ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.get();
+                        String som = SystemOfMeasurement.PROP_SYSTEM_OF_MEASUREMENT.get();
                         String newsom = soms.get((soms.indexOf(som)+1) % soms.size());
                         updateSystemOfMeasurement(newsom);
                     }
@@ -1110,7 +1111,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             try {
                 thread.interrupt();
             } catch (SecurityException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java
index 7a00668..5a5aa14 100644
--- a/src/org/openstreetmap/josm/gui/MapView.java
+++ b/src/org/openstreetmap/josm/gui/MapView.java
@@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import javax.swing.AbstractButton;
 import javax.swing.JComponent;
 import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
@@ -69,6 +70,8 @@ import org.openstreetmap.josm.gui.layer.MapViewPaintable.PaintableInvalidationLi
 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.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateListener;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
@@ -92,6 +95,26 @@ public class MapView extends NavigatableComponent
 implements PropertyChangeListener, PreferenceChangedListener,
 LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
+    static {
+        MapPaintStyles.addMapPaintSylesUpdateListener(new MapPaintSylesUpdateListener() {
+            @Override
+            public void mapPaintStylesUpdated() {
+                SwingUtilities.invokeLater(() -> {
+                    // Trigger a repaint of all data layers
+                    MainApplication.getLayerManager().getLayers()
+                        .stream()
+                        .filter(layer -> layer instanceof OsmDataLayer)
+                        .forEach(Layer::invalidate);
+                });
+            }
+
+            @Override
+            public void mapPaintStyleEntryUpdated(int index) {
+                mapPaintStylesUpdated();
+            }
+        });
+    }
+
     /**
      * An invalidation listener that simply calls repaint() for now.
      * @author Michael Zangl
@@ -173,7 +196,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
         @Override
         public void paint(MapViewGraphics graphics) {
             if (!warningPrinted) {
-                Main.debug("A layer triggered a repaint while being added: " + layer);
+                Logging.debug("A layer triggered a repaint while being added: " + layer);
                 warningPrinted = true;
             }
         }
@@ -336,7 +359,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             LayerPainter painter = layer.attachToMapView(new MapViewEvent(this, false));
             if (!registeredLayers.containsKey(layer)) {
                 // The layer may have removed itself during attachToMapView()
-                Main.warn("Layer was removed during attachToMapView()");
+                Logging.warn("Layer was removed during attachToMapView()");
             } else {
                 registeredLayers.put(layer, painter);
 
@@ -384,7 +407,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
         LayerPainter painter = registeredLayers.remove(layer);
         if (painter == null) {
-            Main.error("The painter for layer " + layer + " was not registered.");
+            Logging.error("The painter for layer " + layer + " was not registered.");
             return;
         }
         painter.detachFromMapView(new MapViewEvent(this, false));
@@ -413,7 +436,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
     /**
      * Checks if virtual nodes should be drawn. Default is <code>false</code>
      * @return The virtual nodes property.
-     * @see Rendering#render(DataSet, boolean, Bounds)
+     * @see Rendering#render
      */
     public boolean isVirtualNodesEnabled() {
         return virtualNodesEnabled;
@@ -561,10 +584,11 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             BugReport.intercept(e).put("bounds", () -> getProjection().getWorldBoundsLatLon()).warn();
         }
 
+        MapFrame map = MainApplication.getMap();
         if (AutoFilterManager.getInstance().getCurrentAutoFilter() != null) {
             AutoFilterManager.getInstance().drawOSDText(tempG);
-        } else if (Main.isDisplayingMapView() && Main.map.filterDialog != null) {
-            Main.map.filterDialog.drawOSDText(tempG);
+        } else if (MainApplication.isDisplayingMapView() && map.filterDialog != null) {
+            map.filterDialog.drawOSDText(tempG);
         }
 
         if (playHeadMarker != null) {
@@ -597,7 +621,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             // - addition/removal of a secondary monitor
             //
             // But the application seems to work fine after, so let's just log the error
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
@@ -659,19 +683,20 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-        if (Main.map != null) {
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
             /* This only makes the buttons look disabled. Disabling the actions as well requires
              * the user to re-select the tool after i.e. moving a layer. While testing I found
              * that I switch layers and actions at the same time and it was annoying to mind the
              * order. This way it works as visual clue for new users */
             // FIXME: This does not belong here.
-            for (final AbstractButton b: Main.map.allMapModeButtons) {
+            for (final AbstractButton b: map.allMapModeButtons) {
                 MapMode mode = (MapMode) b.getAction();
                 final boolean activeLayerSupported = mode.layerIsSupported(layerManager.getActiveLayer());
                 if (activeLayerSupported) {
-                    Main.registerActionShortcut(mode, mode.getShortcut()); //fix #6876
+                    MainApplication.registerActionShortcut(mode, mode.getShortcut()); //fix #6876
                 } else {
-                    Main.unregisterShortcut(mode.getShortcut());
+                    MainApplication.unregisterShortcut(mode.getShortcut());
                 }
                 b.setEnabled(activeLayerSupported);
             }
@@ -842,7 +867,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
     @Override
     public void repaint() {
-        if (Main.isTraceEnabled()) {
+        if (Logging.isTraceEnabled()) {
             invalidatedListener.traceRandomRepaint();
         }
         super.repaint();
diff --git a/src/org/openstreetmap/josm/gui/MenuScroller.java b/src/org/openstreetmap/josm/gui/MenuScroller.java
index 0efb185..1367879 100644
--- a/src/org/openstreetmap/josm/gui/MenuScroller.java
+++ b/src/org/openstreetmap/josm/gui/MenuScroller.java
@@ -28,7 +28,8 @@ import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A class that provides scrolling capabilities to a long menu dropdown or
@@ -463,8 +464,8 @@ public class MenuScroller {
         public void mouseWheelMoved(MouseWheelEvent mwe) {
             firstIndex += mwe.getWheelRotation();
             refreshMenu();
-            if (Main.isDebugEnabled()) {
-                Main.debug(getClass().getName()+" consuming event "+mwe);
+            if (Logging.isDebugEnabled()) {
+                Logging.debug("{0} consuming event {1}", getClass().getName(), mwe);
             }
             mwe.consume();
         }
diff --git a/src/org/openstreetmap/josm/gui/NavigatableComponent.java b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
index 14f45a5..586ae94 100644
--- a/src/org/openstreetmap/josm/gui/NavigatableComponent.java
+++ b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
@@ -60,6 +60,7 @@ import org.openstreetmap.josm.gui.layer.NativeScaleLayer.ScaleList;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.util.CursorManager;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -717,7 +718,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
                         try {
                             Thread.sleep(1000L / fps);
                         } catch (InterruptedException ex) {
-                            Main.warn("InterruptedException in "+NavigatableComponent.class.getSimpleName()+" during smooth scrolling");
+                            Logging.warn("InterruptedException in "+NavigatableComponent.class.getSimpleName()+" during smooth scrolling");
                             Thread.currentThread().interrupt();
                         }
                     }
@@ -900,7 +901,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
      */
     private Map<Double, List<Node>> getNearestNodesImpl(Point p, Predicate<OsmPrimitive> predicate) {
         Map<Double, List<Node>> nearestMap = new TreeMap<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
         if (ds != null) {
             double dist, snapDistanceSq = PROP_SNAP_DISTANCE.get();
@@ -1109,7 +1110,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
      */
     private Map<Double, List<WaySegment>> getNearestWaySegmentsImpl(Point p, Predicate<OsmPrimitive> predicate) {
         Map<Double, List<WaySegment>> nearestMap = new TreeMap<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
         if (ds != null) {
             double snapDistanceSq = Main.pref.getInteger("mappaint.segment.snap-distance", 10);
@@ -1470,7 +1471,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
      */
     public final OsmPrimitive getNearestNodeOrWay(Point p, Predicate<OsmPrimitive> predicate, boolean useSelected) {
         Collection<OsmPrimitive> sel;
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (useSelected && ds != null) {
             sel = ds.getSelected();
         } else {
diff --git a/src/org/openstreetmap/josm/gui/NoteSortDialog.java b/src/org/openstreetmap/josm/gui/NoteSortDialog.java
index 86274a4..74207a0 100644
--- a/src/org/openstreetmap/josm/gui/NoteSortDialog.java
+++ b/src/org/openstreetmap/josm/gui/NoteSortDialog.java
@@ -12,8 +12,8 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A dialog to allow the user to choose a sorting method for the list of notes
@@ -50,7 +50,7 @@ public class NoteSortDialog extends ExtendedDialog {
         } else if (currentSortMode == Note.LAST_ACTION_COMPARATOR) {
             lastActionSort.setSelected(true);
         } else {
-            Main.warn("sort mode not recognized");
+            Logging.warn("sort mode not recognized");
         }
 
         ButtonGroup bg = new ButtonGroup();
diff --git a/src/org/openstreetmap/josm/gui/NotificationManager.java b/src/org/openstreetmap/josm/gui/NotificationManager.java
index 9494cd6..0eaab4f 100644
--- a/src/org/openstreetmap/josm/gui/NotificationManager.java
+++ b/src/org/openstreetmap/josm/gui/NotificationManager.java
@@ -113,14 +113,15 @@ class NotificationManager {
             if (parentWindow != null) {
                 int x;
                 int y;
-                if (Main.isDisplayingMapView() && Main.map.mapView.getHeight() > 0) {
-                    MapView mv = Main.map.mapView;
+                MapFrame map = MainApplication.getMap();
+                if (MainApplication.isDisplayingMapView() && map.mapView.getHeight() > 0) {
+                    MapView mv = map.mapView;
                     Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), Main.parent);
                     x = mapViewPos.x + margin;
-                    y = mapViewPos.y + mv.getHeight() - Main.map.statusLine.getHeight() - size.height - margin;
+                    y = mapViewPos.y + mv.getHeight() - map.statusLine.getHeight() - size.height - margin;
                 } else {
                     x = margin;
-                    y = parentWindow.getHeight() - Main.toolbar.control.getSize().height - size.height - margin;
+                    y = parentWindow.getHeight() - MainApplication.getToolbar().control.getSize().height - size.height - margin;
                 }
                 parentWindow.getLayeredPane().add(currentNotificationPanel, JLayeredPane.POPUP_LAYER, 0);
 
diff --git a/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java b/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
index 01e9adf..0877432 100644
--- a/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
+++ b/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
@@ -12,10 +12,11 @@ import javax.swing.ListCellRenderer;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Renderer that renders the objects from an OsmPrimitive as data.
@@ -81,7 +82,7 @@ public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, Tabl
             if (icon != null) {
                 ((JLabel) def).setIcon(icon);
             } else {
-                Main.warn("Null icon for "+value.getDisplayType());
+                Logging.warn("Null icon for "+value.getDisplayType());
             }
             ((JLabel) def).setToolTipText(getComponentToolTipText(value));
         }
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java b/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
index 298db90..1f7d3a3 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
@@ -20,7 +20,7 @@ import javax.swing.JScrollPane;
 import javax.swing.UIManager;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor.ProgressMonitorDialog;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor.ProgressMonitorDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.GBC;
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
index 5837926..ccbb932 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
@@ -8,9 +8,9 @@ import java.lang.reflect.InvocationTargetException;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
diff --git a/src/org/openstreetmap/josm/gui/ProgramArguments.java b/src/org/openstreetmap/josm/gui/ProgramArguments.java
index 369366b..3691f72 100644
--- a/src/org/openstreetmap/josm/gui/ProgramArguments.java
+++ b/src/org/openstreetmap/josm/gui/ProgramArguments.java
@@ -19,7 +19,7 @@ import gnu.getopt.Getopt;
 import gnu.getopt.LongOpt;
 
 /**
- * This class holds the arguments passed on to Main.
+ * This class holds the arguments passed on to {@link MainApplication#main}.
  * @author Michael Zangl
  * @since 10899
  */
diff --git a/src/org/openstreetmap/josm/gui/SelectionManager.java b/src/org/openstreetmap/josm/gui/SelectionManager.java
index d441b8c..337fa53 100644
--- a/src/org/openstreetmap/josm/gui/SelectionManager.java
+++ b/src/org/openstreetmap/josm/gui/SelectionManager.java
@@ -17,7 +17,6 @@ import java.util.LinkedList;
 
 import javax.swing.Action;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SelectByInternalPointAction;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.Node;
@@ -182,8 +181,8 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
      */
     @Override
     public void mousePressed(MouseEvent e) {
-        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && Main.getLayerManager().getEditDataSet() != null) {
-            SelectByInternalPointAction.performSelection(Main.map.mapView.getEastNorth(e.getX(), e.getY()),
+        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && MainApplication.getLayerManager().getEditDataSet() != null) {
+            SelectByInternalPointAction.performSelection(MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY()),
                     (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) != 0,
                     (e.getModifiersEx() & MouseEvent.CTRL_DOWN_MASK) != 0);
         } else if (e.getButton() == MouseEvent.BUTTON1) {
@@ -381,14 +380,14 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
             }
         } else {
             // nodes
-            for (Node n : Main.getLayerManager().getEditDataSet().getNodes()) {
+            for (Node n : MainApplication.getLayerManager().getEditDataSet().getNodes()) {
                 if (n.isSelectable() && selectionResult.contains(nc.getPoint2D(n))) {
                     selection.add(n);
                 }
             }
 
             // ways
-            for (Way w : Main.getLayerManager().getEditDataSet().getWays()) {
+            for (Way w : MainApplication.getLayerManager().getEditDataSet().getWays()) {
                 if (!w.isSelectable() || w.getNodesCount() == 0) {
                     continue;
                 }
diff --git a/src/org/openstreetmap/josm/gui/SideButton.java b/src/org/openstreetmap/josm/gui/SideButton.java
index 3fd47e3..a699afa 100644
--- a/src/org/openstreetmap/josm/gui/SideButton.java
+++ b/src/org/openstreetmap/josm/gui/SideButton.java
@@ -16,10 +16,10 @@ import javax.swing.JButton;
 import javax.swing.SwingConstants;
 import javax.swing.plaf.basic.BasicArrowButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageResource;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Button that is usually used in toggle dialogs.
@@ -41,7 +41,7 @@ public class SideButton extends JButton implements Destroyable {
             setIcon(icon.getImageIconBounded(
                 ImageProvider.ImageSizes.SIDEBUTTON.getImageDimension()));
         } else if (getIcon() != null) { /* TODO: remove when calling code is fixed, replace by exception */
-            Main.warn("Old style SideButton usage for action " + action);
+            Logging.warn("Old style SideButton usage for action " + action);
             fixIcon(action);
         }
         doStyle();
diff --git a/src/org/openstreetmap/josm/gui/SplashScreen.java b/src/org/openstreetmap/josm/gui/SplashScreen.java
index e6d3d57..cf2398e 100644
--- a/src/org/openstreetmap/josm/gui/SplashScreen.java
+++ b/src/org/openstreetmap/josm/gui/SplashScreen.java
@@ -36,11 +36,12 @@ import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Show a splash screen so the user knows what is happening during startup.
@@ -232,9 +233,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
         @Override
         public void beginTask(String title) {
             if (title != null && !title.isEmpty()) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug(title);
-                }
+                Logging.debug(title);
                 final MeasurableTask task = new MeasurableTask(title);
                 tasks.add(task);
                 listener.stateChanged(null);
@@ -263,9 +262,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
 
         @Override
         public void subTask(String title) {
-            if (Main.isDebugEnabled()) {
-                Main.debug(title);
-            }
+            Logging.debug(title);
             latestSubtask = new SplashProgressMonitor(title, listener);
             tasks.add(latestSubtask);
             listener.stateChanged(null);
@@ -298,8 +295,8 @@ public class SplashScreen extends JFrame implements ChangeListener {
             final Task task = Utils.find(tasks, new MeasurableTask(title)::equals);
             if (task instanceof MeasurableTask) {
                 ((MeasurableTask) task).finish();
-                if (Main.isDebugEnabled()) {
-                    Main.debug(tr("{0} completed in {1}", title, ((MeasurableTask) task).duration));
+                if (Logging.isDebugEnabled()) {
+                    Logging.debug(tr("{0} completed in {1}", title, ((MeasurableTask) task).duration));
                 }
                 listener.stateChanged(null);
             }
diff --git a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
index ec90d94..d9d0bfb 100644
--- a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
+++ b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
@@ -10,9 +10,9 @@ import java.awt.event.ActionEvent;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * A button associated to an auto filter. If clicked twice, the filter is reset.
@@ -35,7 +35,7 @@ public class AutoFilterButton extends JButton {
                 AutoFilterManager afm = AutoFilterManager.getInstance();
                 if (filter.equals(afm.getCurrentAutoFilter())) {
                     afm.setCurrentAutoFilter(null);
-                    Main.map.filterDialog.getFilterModel().executeFilters();
+                    MainApplication.getMap().filterDialog.getFilterModel().executeFilters();
                 } else {
                     afm.setCurrentAutoFilter(filter);
                 }
diff --git a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
index d677589..212ca6c 100644
--- a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
+++ b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
@@ -42,8 +42,10 @@ import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
@@ -53,6 +55,7 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
 import org.openstreetmap.josm.gui.widgets.OSDLabel;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The auto filter manager keeps track of registered auto filter rules and applies the active one on the fly,
@@ -122,14 +125,15 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
         MapFrame.addMapModeChangeListener(this);
         Main.pref.addPreferenceChangeListener(this);
         NavigatableComponent.addZoomChangeListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
         DatasetEventManager.getInstance().addDatasetListener(this, FireMode.IN_EDT_CONSOLIDATED);
         registerAutoFilterRules(AutoFilterRule.defaultRules());
     }
 
     private synchronized void updateButtons() {
-        if (enabledRule != null && Main.map != null
-                && enabledRule.getMinZoomLevel() <= Selector.GeneralSelector.scale2level(Main.map.mapView.getDist100Pixel())) {
+        MapFrame map = MainApplication.getMap();
+        if (enabledRule != null && map != null
+                && enabledRule.getMinZoomLevel() <= Selector.GeneralSelector.scale2level(map.mapView.getDist100Pixel())) {
             // Retrieve the values from current rule visible on screen
             NavigableSet<String> values = getNumericValues(enabledRule.getKey(), enabledRule.getValueComparator());
             // Make sure current auto filter button remains visible even if no data is found, to allow user to disable it
@@ -146,6 +150,7 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
     private synchronized void addNewButtons(NavigableSet<String> values) {
         int i = 0;
         int maxWidth = 16;
+        MapView mapView = MainApplication.getMap().mapView;
         for (final String value : values.descendingSet()) {
             Filter filter = new Filter();
             filter.enable = true;
@@ -159,17 +164,17 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
             }
             buttons.put(value, button);
             maxWidth = Math.max(maxWidth, button.getPreferredSize().width);
-            Main.map.mapView.add(button).setLocation(3, 60 + 22*i++);
+            mapView.add(button).setLocation(3, 60 + 22*i++);
         }
         for (AutoFilterButton b : buttons.values()) {
             b.setSize(maxWidth, 20);
         }
-        Main.map.mapView.validate();
+        mapView.validate();
     }
 
     private void removeAllButtons() {
         for (Iterator<String> it = buttons.keySet().iterator(); it.hasNext();) {
-            Main.map.mapView.remove(buttons.get(it.next()));
+            MainApplication.getMap().mapView.remove(buttons.get(it.next()));
             it.remove();
         }
     }
@@ -181,17 +186,17 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
                 Integer.parseInt(s);
                 values.add(s);
             } catch (NumberFormatException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         return values;
     }
 
     private static Set<String> getTagValues(String key) {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Set<String> values = new TreeSet<>();
         if (ds != null) {
-            BBox bbox = Main.map.mapView.getState().getViewArea().getLatLonBoundsBox().toBBox();
+            BBox bbox = MainApplication.getMap().mapView.getState().getViewArea().getLatLonBoundsBox().toBBox();
             Consumer<OsmPrimitive> consumer = getTagValuesConsumer(key, values);
             ds.searchNodes(bbox).forEach(consumer);
             ds.searchWays(bbox).forEach(consumer);
@@ -365,7 +370,7 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
             model.addFilter(autoFilter.getFilter());
             model.executeFilters();
             if (model.isChanged()) {
-                OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
                 if (editLayer != null) {
                     editLayer.invalidate();
                 }
@@ -386,8 +391,9 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
     private void resetCurrentAutoFilter() {
         setCurrentAutoFilter(null);
         removeAllButtons();
-        if (Main.map != null) {
-            Main.map.filterDialog.getFilterModel().executeFilters();
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.filterDialog.getFilterModel().executeFilters();
         }
     }
 
@@ -415,7 +421,7 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
 
     @Override
     public void layerRemoving(LayerRemoveEvent e) {
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
             resetCurrentAutoFilter();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
index 31400d8..12852b1 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
@@ -43,6 +43,7 @@ import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.layer.AbstractCachedTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This panel displays a map and lets the user chose a {@link BBox}.
@@ -85,7 +86,7 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
                         sources.add(source);
                     }
                 } catch (IllegalArgumentException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                     if (ex.getMessage() != null && !ex.getMessage().isEmpty()) {
                         JOptionPane.showMessageDialog(Main.parent,
                                 ex.getMessage(), tr("Warning"),
@@ -133,7 +134,7 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
      * Constructs a new {@code SlippyMapBBoxChooser}.
      */
     public SlippyMapBBoxChooser() {
-        debug = Main.isDebugEnabled();
+        debug = Logging.isDebugEnabled();
         SpringLayout springLayout = new SpringLayout();
         setLayout(springLayout);
 
diff --git a/src/org/openstreetmap/josm/gui/bbox/SourceButton.java b/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
index 3f6bd7e..6c995a1 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
@@ -21,6 +21,10 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * Button that allows to choose the imagery source used for slippy map background.
+ * @since 1390
+ */
 public class SourceButton extends JComponent {
 
     private static final int LAYER_HEIGHT = 20;
@@ -44,6 +48,11 @@ public class SourceButton extends JComponent {
     private int currentMap;
     private final SlippyMapBBoxChooser slippyMapBBoxChooser;
 
+    /**
+     * Constructs a new {@code SourceButton}.
+     * @param slippyMapBBoxChooser parent slippy map
+     * @param sources list of imagery sources to display
+     */
     public SourceButton(SlippyMapBBoxChooser slippyMapBBoxChooser, Collection<TileSource> sources) {
         this.slippyMapBBoxChooser = slippyMapBBoxChooser;
         setSources(sources);
@@ -123,6 +132,9 @@ public class SourceButton extends JComponent {
         }
     }
 
+    /**
+     * Toggle the visibility of imagery source list.
+     */
     public void toggle() {
         this.isEnlarged = !this.isEnlarged;
         calculateShownDimension();
@@ -130,6 +142,10 @@ public class SourceButton extends JComponent {
         revalidate();
     }
 
+    /**
+     * Changes the current imagery source used for slippy map background.
+     * @param tileSource the new imagery source to use
+     */
     public void setCurrentMap(TileSource tileSource) {
         for (int i = 0; i < sources.length; i++) {
             if (sources[i].equals(tileSource)) {
diff --git a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
index dd3cecd..161096f 100644
--- a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
@@ -68,7 +68,7 @@ import org.openstreetmap.josm.tools.Utils;
  *        public void propertyChange(PropertyChangeEvent evt) {
  *            // listen for BBOX events
  *            if (evt.getPropertyName().equals(BBoxChooser.BBOX_PROP)) {
- *               Main.info("new bbox based on OSM tiles selected: " + (Bounds)evt.getNewValue());
+ *               Logging.info("new bbox based on OSM tiles selected: " + (Bounds)evt.getNewValue());
  *            }
  *        }
  *    });
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java b/src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java
similarity index 97%
rename from src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
rename to src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java
index b81dcc5..37f5d56 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
+++ b/src/org/openstreetmap/josm/gui/bugreport/BugReportDialog.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools.bugreport;
+package org.openstreetmap.josm.gui.bugreport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -31,7 +31,10 @@ import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 import org.openstreetmap.josm.tools.bugreport.BugReportQueue.SuppressionMode;
+import org.openstreetmap.josm.tools.bugreport.BugReportSender;
+import org.openstreetmap.josm.tools.bugreport.ReportedException;
 
 /**
  * This is a dialog that can be used to display a bug report.
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java b/src/org/openstreetmap/josm/gui/bugreport/BugReportSettingsPanel.java
similarity index 93%
rename from src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java
rename to src/org/openstreetmap/josm/gui/bugreport/BugReportSettingsPanel.java
index 9d8c1a4..ddeb489 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/bugreport/BugReportSettingsPanel.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools.bugreport;
+package org.openstreetmap.josm.gui.bugreport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -7,6 +7,8 @@ import javax.swing.BoxLayout;
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 
+import org.openstreetmap.josm.tools.bugreport.BugReport;
+
 /**
  * This panel displays the settings that can be changed before submitting a bug report to the web page.
  * @author Michael Zangl
diff --git a/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java b/src/org/openstreetmap/josm/gui/bugreport/DebugTextDisplay.java
similarity index 95%
rename from src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java
rename to src/org/openstreetmap/josm/gui/bugreport/DebugTextDisplay.java
index 3d6fb3c..fe3c7d5 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java
+++ b/src/org/openstreetmap/josm/gui/bugreport/DebugTextDisplay.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools.bugreport;
+package org.openstreetmap.josm.gui.bugreport;
 
 import java.awt.Dimension;
 
@@ -8,6 +8,7 @@ import javax.swing.JScrollPane;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
  * This is a text area that displays the debug text with scroll bars.
diff --git a/src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java b/src/org/openstreetmap/josm/gui/bugreport/JosmUpdatePanel.java
similarity index 92%
rename from src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java
rename to src/org/openstreetmap/josm/gui/bugreport/JosmUpdatePanel.java
index c08ac91..38aac51 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java
+++ b/src/org/openstreetmap/josm/gui/bugreport/JosmUpdatePanel.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools.bugreport;
+package org.openstreetmap.josm.gui.bugreport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.WikiReader;
 
 /**
@@ -62,7 +63,7 @@ public class JosmUpdatePanel extends JPanel {
             String testedString = new WikiReader().read(Main.getJOSMWebsite() + "/wiki/TestedVersion?format=txt");
             return Integer.parseInt(testedString.trim());
         } catch (NumberFormatException | IOException e) {
-            Main.warn(e, "Unable to detect latest version of JOSM:");
+            Logging.log(Logging.LEVEL_WARN, "Unable to detect latest version of JOSM:", e);
             return -1;
         }
     }
@@ -97,7 +98,7 @@ public class JosmUpdatePanel extends JPanel {
         try {
             Main.platform.openUrl(Main.getJOSMWebsite());
         } catch (IOException ex) {
-            Main.warn(ex, "Unable to access JOSM website:");
+            Logging.log(Logging.LEVEL_WARN, "Unable to access JOSM website:", ex);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/bugreport/package-info.java b/src/org/openstreetmap/josm/gui/bugreport/package-info.java
new file mode 100644
index 0000000..f78a4d7
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/bugreport/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides GUI classes for the bug report system, allowing users to create tickets on issue tracker directly from JOSM.
+ */
+package org.openstreetmap.josm.gui.bugreport;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
index cce51d4..315c0f5 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
@@ -39,6 +39,7 @@ import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.ChangeNotifier;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -73,6 +74,7 @@ import org.openstreetmap.josm.tools.Utils;
  * @param <T> the type of the list entries
  * @param <C> the type of conflict resolution command
  * @see AbstractListMerger
+ * @see PairTable For the table displaying this model
  */
 public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends ConflictResolveCommand> extends ChangeNotifier {
     /**
@@ -735,7 +737,7 @@ public abstract class AbstractListMergeModel<T extends PrimitiveId, C extends Co
             } else if (value instanceof RelationMember) {
                 return ((RelationMember) value).getMember();
             } else {
-                Main.error("Unknown object type: "+value);
+                Logging.error("Unknown object type: "+value);
                 return null;
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java
index 47414e5..006a94b 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java
@@ -30,12 +30,12 @@ import javax.swing.event.ChangeListener;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.conflict.ConflictResolveCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.AdjustmentSynchronizer;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -900,7 +900,7 @@ implements PropertyChangeListener, ChangeListener, IConflictResolver {
 
     protected final <P extends OsmPrimitive> OsmDataLayer findLayerFor(P primitive) {
         if (primitive != null) {
-            Iterable<OsmDataLayer> layers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
+            Iterable<OsmDataLayer> layers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
             // Find layer with same dataset
             for (OsmDataLayer layer : layers) {
                 if (layer.data == primitive.getDataSet()) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java
index c1e7670..ec32ffd 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java
@@ -9,6 +9,9 @@ import javax.swing.ListCellRenderer;
 
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 
+/**
+ * This {@link ListCellRenderer} renders the value of a {@link ComparePairType}
+ */
 public class ComparePairListCellRenderer extends JLabel implements ListCellRenderer<ComparePairType> {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/IConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/pair/IConflictResolver.java
index 00b7d02..98bddf5 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/IConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/IConflictResolver.java
@@ -3,7 +3,11 @@ package org.openstreetmap.josm.gui.conflict.pair;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 
+/**
+ * The conflict resolver receives the result of a {@link ConflictDialog}. It should then apply the resulution the user selected.
+ */
 public interface IConflictResolver {
 
     void deletePrimitive(boolean deleted);
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/MergeDecisionType.java b/src/org/openstreetmap/josm/gui/conflict/pair/MergeDecisionType.java
index cd454c6..92ef0a2 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/MergeDecisionType.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/MergeDecisionType.java
@@ -1,6 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.conflict.pair;
 
+import org.openstreetmap.josm.gui.conflict.tags.RelationMemberConflictDecisionType;
+
+/**
+ * This is the merge decision for a primitive.
+ *
+ * @see RelationMemberConflictDecisionType the same for relation members
+ */
 public enum MergeDecisionType {
     KEEP_MINE,
     KEEP_THEIR,
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java b/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java
index c86ceb9..1dde784 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java
@@ -12,6 +12,9 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 
+/**
+ * This is the base class for all tables that display an {@link AbstractListMergeModel}.
+ */
 public abstract class PairTable extends OsmPrimitivesTable {
 
     private final transient AbstractListMergeModel<? extends PrimitiveId, ? extends ConflictResolveCommand> model;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
index 2704a52..0bf7f54 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
@@ -12,8 +12,8 @@ import javax.swing.border.Border;
 import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.command.conflict.WayNodesConflictResolverCommand;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.AbstractListMergeModel;
 import org.openstreetmap.josm.tools.ImageProvider;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
index 01e3af8..49d554d 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
@@ -20,8 +20,8 @@ import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.AbstractMergePanel;
 import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
index 61c4321..99d7808 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
@@ -11,8 +11,8 @@ import javax.swing.border.Border;
 import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.command.conflict.RelationMemberConflictResolverCommand;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.RelationMember;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.AbstractListMergeModel;
 import org.openstreetmap.josm.tools.ImageProvider;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java
index bd465f8..6edeeb8 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java
@@ -3,9 +3,14 @@ package org.openstreetmap.josm.gui.conflict.pair.tags;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import javax.swing.table.TableCellRenderer;
+
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
+/**
+ * This {@link TableCellRenderer} displays the decision a user made regarding a tag conflict
+ */
 public class MergedTableCellRenderer extends TagMergeTableCellRenderer {
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
         if (isSelected) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java
index 37570b1..541d1fb 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java
@@ -3,9 +3,14 @@ package org.openstreetmap.josm.gui.conflict.pair.tags;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import javax.swing.table.TableCellRenderer;
+
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
+/**
+ * This {@link TableCellRenderer} renders the mine side of the tag conflict table.
+ */
 public class MineTableCellRenderer extends TagMergeTableCellRenderer {
 
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java
index 41af1d6..d6c9339 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java
@@ -10,6 +10,9 @@ import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 
+/**
+ * This is the base class for all cells in the {@link TagMerger}.
+ */
 public abstract class TagMergeTableCellRenderer extends JLabel implements TableCellRenderer {
 
     protected abstract void renderKey(TagMergeItem item, boolean isSelected);
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java
index 65d72a0..b01ffa4 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java
@@ -3,9 +3,14 @@ package org.openstreetmap.josm.gui.conflict.pair.tags;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import javax.swing.table.TableCellRenderer;
+
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
+/**
+ * This {@link TableCellRenderer} renders the theirs side of the tag conflict table.
+ */
 public class TheirTableCellRenderer extends TagMergeTableCellRenderer {
 
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
index 9d509fe..e3e6bef 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
@@ -33,23 +33,23 @@ import javax.swing.JSplitPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
-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.util.WindowGeometry;
 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;
 import org.openstreetmap.josm.tools.StreamUtils;
 import org.openstreetmap.josm.tools.UserCancelException;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This dialog helps to resolve conflicts occurring when ways are combined or
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
index a76cd01..ec416ec 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
@@ -20,8 +20,8 @@ import javax.swing.ListCellRenderer;
 import javax.swing.UIManager;
 import javax.swing.table.TableCellEditor;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is a table cell editor for selecting a possible tag value from a list of
@@ -166,7 +166,7 @@ public class MultiValueCellEditor extends AbstractCellEditor implements TableCel
             editor.setSelectedItem(MultiValueDecisionType.SUM_ALL_NUMERIC);
             break;
         default:
-            Main.error("Unknown decision type in initEditor(): "+decision.getDecisionType());
+            Logging.error("Unknown decision type in initEditor(): "+decision.getDecisionType());
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
index 5b5620c..cc0474b 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
@@ -13,10 +13,10 @@ import javax.swing.JTable;
 import javax.swing.UIManager;
 import javax.swing.table.TableCellRenderer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is a {@link TableCellRenderer} for {@link MultiValueResolutionDecision}s.
@@ -70,7 +70,7 @@ public class MultiValueCellRenderer extends JLabel implements TableCellRenderer
                         setBackground(ConflictColors.BGCOLOR_TAG_SUM_ALL_NUM.get());
                         break;
                     default:
-                        Main.error("Unknown decision type in renderColors(): "+decision.getDecisionType());
+                        Logging.error("Unknown decision type in renderColors(): "+decision.getDecisionType());
                     }
                 } else {
                     setForeground(UIManager.getColor("Table.foreground"));
@@ -102,7 +102,7 @@ public class MultiValueCellRenderer extends JLabel implements TableCellRenderer
             cbDecisionRenderer.setSelectedIndex(0);
             break;
         default:
-            Main.error("Unknown decision type in renderValue(): "+decision.getDecisionType());
+            Logging.error("Unknown decision type in renderValue(): "+decision.getDecisionType());
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
index 863dbbd..2b666d9 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
@@ -39,10 +39,13 @@ import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.tagging.TagTableColumnModelBuilder;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
+/**
+ * This conflict resolution dialog is used when tags are pasted from the clipboard that conflict with the existing ones.
+ */
 public class PasteTagsConflictResolverDialog extends JDialog implements PropertyChangeListener {
     static final Map<OsmPrimitiveType, String> PANE_TITLES;
     static {
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
index ca29f88..98c6ed8 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
@@ -12,6 +12,9 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
+/**
+ * This class stores the decision the user made regarding a relation member conflict
+ */
 public class RelationMemberConflictDecision {
 
     private final Relation relation;
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
index 64a3650..3f0a230 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
@@ -13,6 +13,9 @@ import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 
+/**
+ * This class renders {@link RelationMemberConflictDecisionType} entries of a list/table
+ */
 public class RelationMemberConflictDecisionRenderer extends JLabel
 implements TableCellRenderer, ListCellRenderer<RelationMemberConflictDecisionType> {
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java
index d3aa629..f9dd255 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionType.java
@@ -5,6 +5,9 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import javax.swing.JLabel;
 
+/**
+ * This represents the decision a user can make regarding a relation conflict
+ */
 public enum RelationMemberConflictDecisionType {
     /**
      * keep the respective relation member for the target primitive (the target node
@@ -22,6 +25,11 @@ public enum RelationMemberConflictDecisionType {
      */
     UNDECIDED;
 
+    /**
+     * Sets the label according to the current decision.
+     * @param decision The decision
+     * @param label The label to set
+     */
     public static void prepareLabel(RelationMemberConflictDecisionType decision, JLabel label) {
         switch(decision) {
         case REMOVE:
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
index 77463d5..485cb29 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
@@ -27,17 +27,21 @@ import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
-import org.openstreetmap.josm.Main;
 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.Tag;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * This component presents the user with the ability to resolve a relation member conflict
+ * @see RelationMemberConflictResolverModel
+ */
 public class RelationMemberConflictResolver extends JPanel {
 
     private final AutoCompletingTextField tfRole = new AutoCompletingTextField(10);
@@ -196,7 +200,7 @@ public class RelationMemberConflictResolver extends JPanel {
 
     public void prepareForEditing() {
         AutoCompletionList acList = new AutoCompletionList();
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.getAutoCompletionManager().populateWithMemberRoles(acList);
         }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
index 41a0957..d6fc4bc 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
@@ -13,8 +13,12 @@ import javax.swing.table.TableColumn;
 
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
+import org.openstreetmap.josm.gui.conflict.pair.relation.RelationMemberTable;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 
+/**
+ * This class defines the columns of a {@link RelationMemberTable}
+ */
 public class RelationMemberConflictResolverColumnModel extends DefaultTableColumnModel {
 
     static final class MemberRenderer extends OsmPrimitivRenderer {
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java
index 70411af..cf93175 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverTable.java
@@ -12,6 +12,11 @@ import javax.swing.ListSelectionModel;
 
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 
+/**
+ * The main table displayed in the {@link RelationMemberConflictResolver}
+ *
+ * @see RelationMemberConflictResolverColumnModel
+ */
 public class RelationMemberConflictResolverTable extends JTable implements MultiValueCellEditor.NavigationListener {
 
     private SelectNextColumnCellAction selectNextColumnCellAction;
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
index 2d9860f..c743164 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.data.Preferences.pref;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
 /**
@@ -215,7 +216,7 @@ public final class TagConflictResolutionUtil {
                 } catch (PatternSyntaxException e) {
                     // Can happen if a particular resolver has an invalid regular expression pattern
                     // but it should not stop the other automatic tag conflict resolution.
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
index 414a821..f5ba64f 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
@@ -16,6 +16,9 @@ import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
+/**
+ * This model holds the information about tags that are currently conflicting and the decision of the user regarding them.
+ */
 public class TagConflictResolverModel extends DefaultTableModel {
     public static final String NUM_CONFLICTS_PROP = TagConflictResolverModel.class.getName() + ".numConflicts";
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverTable.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverTable.java
index bf73d71..e98b53f 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverTable.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverTable.java
@@ -10,6 +10,9 @@ import org.openstreetmap.josm.gui.tagging.TagTableColumnModelBuilder;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTable;
 
+/**
+ * This table presents the tags that are conflicting to the user.
+ */
 public class TagConflictResolverTable extends JosmTable implements MultiValueCellEditor.NavigationListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/correction/RoleCorrectionTableModel.java b/src/org/openstreetmap/josm/gui/correction/RoleCorrectionTableModel.java
index 9431f78..c38df70 100644
--- a/src/org/openstreetmap/josm/gui/correction/RoleCorrectionTableModel.java
+++ b/src/org/openstreetmap/josm/gui/correction/RoleCorrectionTableModel.java
@@ -6,7 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.util.List;
 
 import org.openstreetmap.josm.data.correction.RoleCorrection;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 
 /**
  * Role correction table model.
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
index 54b208c..ee5112c 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/AbstractStackTransferHandler.java
@@ -9,11 +9,12 @@ import java.util.Collection;
 import javax.swing.JComponent;
 import javax.swing.TransferHandler;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
 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.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -43,21 +44,22 @@ public abstract class AbstractStackTransferHandler extends TransferHandler {
 
     @Override
     public boolean importData(TransferSupport support) {
-        return importData(support, Main.getLayerManager().getEditLayer(), null);
+        return importData(support, MainApplication.getLayerManager().getEditLayer(), null);
     }
 
     protected boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth center) {
         for (AbstractOsmDataPaster df : getSupportedPasters()) {
             if (df.supports(support)) {
                 try {
-                    if (Main.isDebugEnabled()) {
-                        Main.debug("{0} pasting {1} at {2}", df.getClass().getSimpleName(), Arrays.toString(support.getDataFlavors()), center);
+                    if (Logging.isDebugEnabled()) {
+                        Logging.debug("{0} pasting {1} at {2}",
+                                df.getClass().getSimpleName(), Arrays.toString(support.getDataFlavors()), center);
                     }
                     if (df.importData(support, layer, center)) {
                         return true;
                     }
                 } catch (UnsupportedFlavorException | IOException e) {
-                    Main.warn(e);
+                    Logging.warn(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 0f4e8b2..1edc5e7 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
@@ -12,8 +12,8 @@ import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.io.IOException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -49,7 +49,7 @@ public final class ClipboardUtils {
             try {
                 clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
             } catch (HeadlessException e) {
-                Main.warn("Headless. Using fake clipboard.", e);
+                Logging.warn("Headless. Using fake clipboard.", e);
                 clipboard = new Clipboard("fake");
             }
         }
@@ -82,7 +82,7 @@ public final class ClipboardUtils {
                 return (String) t.getTransferData(DataFlavor.stringFlavor);
             }
         } catch (UnsupportedFlavorException | IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
         return null;
     }
@@ -108,17 +108,17 @@ public final class ClipboardUtils {
             } catch (IllegalStateException e) {
                 // Clipboard currently unavailable.
                 // On some platforms, the system clipboard is unavailable while it is accessed by another application.
-                Main.trace("Clipboard unavailable.", e);
+                Logging.trace("Clipboard unavailable.", e);
                 try {
                     Thread.sleep(1);
                 } catch (InterruptedException ex) {
-                    Main.warn(ex, "InterruptedException in " + Utils.class.getSimpleName()
-                            + " while getting clipboard content");
+                    Logging.log(Logging.LEVEL_WARN, "InterruptedException in " + Utils.class.getSimpleName()
+                            + " while getting clipboard content", ex);
                     Thread.currentThread().interrupt();
                 }
             } catch (NullPointerException e) { // NOPMD
                 // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
-                Main.error(e);
+                Logging.error(e);
             }
         }
         return t;
@@ -144,7 +144,7 @@ public final class ClipboardUtils {
                 getClipboard().setContents(transferable, new DoNothingClipboardOwner());
                 return Boolean.TRUE;
             } catch (IllegalStateException ex) {
-                Main.error(ex);
+                Logging.error(ex);
                 return Boolean.FALSE;
             }
         });
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
index f5e8fb7..c7049f0 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
@@ -9,9 +9,9 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.importers.AbstractOsmDataPaster;
 import org.openstreetmap.josm.gui.datatransfer.importers.FilePaster;
 import org.openstreetmap.josm.gui.datatransfer.importers.OsmLinkPaster;
@@ -20,6 +20,7 @@ import org.openstreetmap.josm.gui.datatransfer.importers.PrimitiveTagTransferPas
 import org.openstreetmap.josm.gui.datatransfer.importers.TagTransferPaster;
 import org.openstreetmap.josm.gui.datatransfer.importers.TextTagPaster;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This transfer hanlder provides the ability to transfer OSM data. It allows you to receive files, primitives or tags.
@@ -46,7 +47,7 @@ public class OsmTransferHandler extends AbstractStackTransferHandler {
                         return true;
                     }
                 } catch (UnsupportedFlavorException | IOException e) {
-                    Main.warn(e);
+                    Logging.warn(e);
                 }
             }
         }
@@ -70,7 +71,7 @@ public class OsmTransferHandler extends AbstractStackTransferHandler {
      * @param transferable The transferable to use.
      */
     public void pasteOn(OsmDataLayer editLayer, EastNorth mPosition, Transferable transferable) {
-        importData(new TransferSupport(Main.main.panel, transferable), editLayer, mPosition);
+        importData(new TransferSupport(MainApplication.getMainPanel(), transferable), editLayer, mPosition);
     }
 
     /**
@@ -79,7 +80,7 @@ public class OsmTransferHandler extends AbstractStackTransferHandler {
      */
     public void pasteTags(Collection<? extends OsmPrimitive> primitives) {
         Transferable transferable = ClipboardUtils.getClipboardContent();
-        importTags(new TransferSupport(Main.main.panel, transferable), primitives);
+        importTags(new TransferSupport(MainApplication.getMainPanel(), transferable), primitives);
     }
 
     /**
@@ -95,10 +96,10 @@ public class OsmTransferHandler extends AbstractStackTransferHandler {
                 }
             }
         } catch (IllegalStateException e) {
-            Main.debug(e);
+            Logging.debug(e);
         } catch (NullPointerException e) { // NOPMD
             // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
-            Main.error(e);
+            Logging.error(e);
         }
         return false;
     }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
index f7b78c1..da2d9b1 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
@@ -11,10 +11,10 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java
index fc476f6..317fa18 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java
@@ -13,12 +13,12 @@ import java.util.Map;
 
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.I18n;
 
@@ -64,7 +64,7 @@ public abstract class AbstractTagPaster extends AbstractOsmDataPaster {
             String title2 = trn("to {0} object", "to {0} objects", selection.size(), selection.size());
             @I18n.QuirkyPluralString
             final String title = title1 + ' ' + title2;
-            Main.main.undoRedo.add(new SequenceCommand(title, commands));
+            MainApplication.undoRedo.add(new SequenceCommand(title, commands));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java
index c808915..c177c19 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java
@@ -9,9 +9,9 @@ import java.util.List;
 
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.OpenFileAction;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
@@ -34,7 +34,7 @@ public final class FilePaster extends AbstractOsmDataPaster {
         List<File> files = (List<File>) support.getTransferable().getTransferData(df);
         OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(files, null);
         task.setRecordHistory(true);
-        Main.worker.submit(task);
+        MainApplication.worker.submit(task);
         return true;
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
index 10d0d52..2cae789 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
@@ -23,6 +23,7 @@ import org.openstreetmap.josm.data.osm.RelationData;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.data.osm.WayData;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
@@ -56,7 +57,7 @@ public final class PrimitiveDataPaster extends AbstractOsmDataPaster {
         AddPrimitivesCommand command = createNewPrimitives(pasteBuffer, offset, layer);
 
         /* Now execute the commands to add the duplicated contents of the paste buffer to the map */
-        Main.main.undoRedo.add(command);
+        MainApplication.undoRedo.add(command);
         return true;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
index 1356266..1311be5 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
@@ -2,16 +2,30 @@
 package org.openstreetmap.josm.gui.datatransfer.importers;
 
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.GridBagLayout;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.io.IOException;
 import java.util.Map;
 
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
 import javax.swing.TransferHandler.TransferSupport;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.widgets.UrlLabel;
+import org.openstreetmap.josm.io.XmlWriter;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.LanguageInfo.LocaleType;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.TextTagParser;
+import org.openstreetmap.josm.tools.TextTagParser.TagWarningCallback;
 
 /**
  * This transfer support allows us to import tags from the text that was copied to the clipboard.
@@ -33,7 +47,7 @@ public final class TextTagPaster extends AbstractTagPaster {
         try {
             return super.supports(support) && containsValidTags(support);
         } catch (UnsupportedFlavorException | IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
             return false;
         }
     }
@@ -46,10 +60,10 @@ public final class TextTagPaster extends AbstractTagPaster {
     protected Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
         Map<String, String> tags = getTagsImpl(support);
         if (tags.isEmpty()) {
-            TextTagParser.showBadBufferMessage(HELP);
+            showBadBufferMessage(HELP);
             throw new IOException("Invalid tags to paste.");
         }
-        if (!TextTagParser.validateTags(tags)) {
+        if (!TextTagParser.validateTags(tags, TextTagPaster::warning)) {
             throw new IOException("Tags to paste are not valid.");
         }
         return tags;
@@ -58,4 +72,64 @@ public final class TextTagPaster extends AbstractTagPaster {
     private Map<String, String> getTagsImpl(TransferSupport support) throws UnsupportedFlavorException, IOException {
         return TextTagParser.readTagsFromText((String) support.getTransferable().getTransferData(df));
     }
+
+    /**
+     * Default {@link TagWarningCallback} implementation.
+     * Displays a warning about a problematic tag and ask user what to do about it.
+     * @param text Message to display
+     * @param data Tag key and/or value
+     * @param code to use with {@code ExtendedDialog#toggleEnable(String)}
+     * @return 1 to validate and display next warnings if any, 2 to cancel operation, 3 to clear buffer, 4 to paste tags
+     * @since 12683
+     */
+    public static int warning(String text, String data, String code) {
+        ExtendedDialog ed = new ExtendedDialog(
+                    Main.parent,
+                    tr("Do you want to paste these tags?"),
+                    tr("Ok"), tr("Cancel"), tr("Clear buffer"), tr("Ignore warnings"));
+        ed.setButtonIcons("ok", "cancel", "dialogs/delete", "pastetags");
+        ed.setContent("<html><b>"+text + "</b><br/><br/><div width=\"300px\">"+XmlWriter.encode(data, true)+"</html>");
+        ed.setDefaultButton(2);
+        ed.setCancelButton(2);
+        ed.setIcon(JOptionPane.WARNING_MESSAGE);
+        ed.toggleEnable(code);
+        ed.showDialog();
+        int r = ed.getValue();
+        if (r == 0) r = 2;
+        // clean clipboard if user asked
+        if (r == 3) ClipboardUtils.copyString("");
+        return r;
+    }
+
+    /**
+     * Shows message that the buffer can not be pasted, allowing user to clean the buffer
+     * @param helpTopic the help topic of the parent action
+     * TODO: Replace by proper HelpAwareOptionPane instead of self-made help link
+     */
+    public static void showBadBufferMessage(String helpTopic) {
+        String msg = tr("<html><p> Sorry, it is impossible to paste tags from buffer. It does not contain any JOSM object"
+            + " or suitable text. </p></html>");
+        JPanel p = new JPanel(new GridBagLayout());
+        p.add(new JLabel(msg), GBC.eop());
+        String helpUrl = HelpUtil.getHelpTopicUrl(HelpUtil.buildAbsoluteHelpTopic(helpTopic, LocaleType.DEFAULT));
+        if (helpUrl != null) {
+            p.add(new UrlLabel(helpUrl), GBC.eop());
+        }
+
+        ExtendedDialog ed = new ExtendedDialog(
+                    Main.parent,
+                    tr("Warning"),
+                    tr("Ok"), tr("Clear buffer"))
+            .setButtonIcons("ok", "dialogs/delete")
+            .setContent(p)
+            .setDefaultButton(1)
+            .setCancelButton(1)
+            .setIcon(JOptionPane.WARNING_MESSAGE)
+            .toggleEnable("tags.paste.cleanbadbuffer");
+
+        ed.showDialog();
+
+        // clean clipboard if user asked
+        if (ed.getValue() == 2) ClipboardUtils.copyString("");
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
index c10048a..75d0946 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
@@ -43,6 +43,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetInSelectionListModel;
@@ -57,6 +58,7 @@ import org.openstreetmap.josm.gui.widgets.ListPopupMenu;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
@@ -118,8 +120,8 @@ public class ChangesetDialog extends ToggleDialog {
         // let the model for changesets in the current layer listen to various
         // events and bootstrap it's content
         ChangesetCache.getInstance().addChangesetCacheListener(inActiveDataLayerModel);
-        Main.getLayerManager().addActiveLayerChangeListener(inActiveDataLayerModel);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().addActiveLayerChangeListener(inActiveDataLayerModel);
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.addDataSetListener(inActiveDataLayerModel);
             inActiveDataLayerModel.initFromDataSet(editLayer.data);
@@ -131,8 +133,8 @@ public class ChangesetDialog extends ToggleDialog {
         // remove the list model for the current edit layer as listener
         //
         ChangesetCache.getInstance().removeChangesetCacheListener(inActiveDataLayerModel);
-        Main.getLayerManager().removeActiveLayerChangeListener(inActiveDataLayerModel);
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(inActiveDataLayerModel);
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.removeDataSetListener(inActiveDataLayerModel);
         }
@@ -231,7 +233,7 @@ public class ChangesetDialog extends ToggleDialog {
     }
 
     protected void initWithCurrentData() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             inSelectionModel.initFromPrimitives(editLayer.data.getAllSelected());
             inActiveDataLayerModel.initFromDataSet(editLayer.data);
@@ -262,9 +264,9 @@ public class ChangesetDialog extends ToggleDialog {
             Set<Integer> sel = getCurrentChangesetListModel().getSelectedChangesetIds();
             if (sel.isEmpty())
                 return;
-            if (Main.getLayerManager().getEditDataSet() == null)
+            if (MainApplication.getLayerManager().getEditDataSet() == null)
                 return;
-            new SelectObjectsAction().selectObjectsByChangesetIds(Main.getLayerManager().getEditDataSet(), sel);
+            new SelectObjectsAction().selectObjectsByChangesetIds(MainApplication.getLayerManager().getEditDataSet(), sel);
         }
 
     }
@@ -310,14 +312,14 @@ public class ChangesetDialog extends ToggleDialog {
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() == null)
+            if (MainApplication.getLayerManager().getEditLayer() == null)
                 return;
             ChangesetListModel model = getCurrentChangesetListModel();
             Set<Integer> sel = model.getSelectedChangesetIds();
             if (sel.isEmpty())
                 return;
 
-            DataSet ds = Main.getLayerManager().getEditLayer().data;
+            DataSet ds = MainApplication.getLayerManager().getEditLayer().data;
             selectObjectsByChangesetIds(ds, sel);
         }
 
@@ -356,7 +358,7 @@ public class ChangesetDialog extends ToggleDialog {
             if (sel.isEmpty())
                 return;
             ChangesetHeaderDownloadTask task = new ChangesetHeaderDownloadTask(sel);
-            Main.worker.submit(new PostDownloadHandler(task, task.download()));
+            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
         }
 
         protected void updateEnabledState() {
@@ -391,7 +393,7 @@ public class ChangesetDialog extends ToggleDialog {
             List<Changeset> sel = getCurrentChangesetListModel().getSelectedOpenChangesets();
             if (sel.isEmpty())
                 return;
-            Main.worker.submit(new CloseChangesetTask(sel));
+            MainApplication.worker.submit(new CloseChangesetTask(sel));
         }
 
         protected void updateEnabledState() {
@@ -513,7 +515,7 @@ public class ChangesetDialog extends ToggleDialog {
                 future = null;
             } else {
                 task = new ChangesetHeaderDownloadTask(toDownload);
-                future = Main.worker.submit(new PostDownloadHandler(task, task.download()));
+                future = MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
             }
 
             Runnable r = () -> {
@@ -522,10 +524,10 @@ public class ChangesetDialog extends ToggleDialog {
                     try {
                         future.get();
                     } catch (InterruptedException e1) {
-                        Main.warn(e1, "InterruptedException in ChangesetDialog while downloading changeset header");
+                        Logging.log(Logging.LEVEL_WARN, "InterruptedException in ChangesetDialog while downloading changeset header", e1);
                         Thread.currentThread().interrupt();
                     } catch (ExecutionException e2) {
-                        Main.error(e2);
+                        Logging.error(e2);
                         BugReportExceptionHandler.handleException(e2.getCause());
                         return;
                     }
@@ -541,7 +543,7 @@ public class ChangesetDialog extends ToggleDialog {
                 // launch the task
                 GuiHelper.runInEDT(() -> launchChangesetManager(sel));
             };
-            Main.worker.submit(r);
+            MainApplication.worker.submit(r);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
index d3c318e..4104539 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
@@ -35,12 +35,12 @@ import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.PseudoCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
@@ -231,7 +231,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
         for (IEnabledStateUpdating listener : showNotifyListener) {
             listener.updateEnabledState();
         }
-        Main.main.undoRedo.addCommandQueueListener(this);
+        MainApplication.undoRedo.addCommandQueueListener(this);
     }
 
     /**
@@ -247,7 +247,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     public void hideNotify() {
         undoTreeModel.setRoot(new DefaultMutableTreeNode());
         redoTreeModel.setRoot(new DefaultMutableTreeNode());
-        Main.main.undoRedo.removeCommandQueueListener(this);
+        MainApplication.undoRedo.removeCommandQueueListener(this);
     }
 
     /**
@@ -256,17 +256,17 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
      */
     private void buildTrees() {
         setTitle(tr("Command Stack"));
-        if (Main.getLayerManager().getEditLayer() == null)
+        if (MainApplication.getLayerManager().getEditLayer() == null)
             return;
 
-        List<Command> undoCommands = Main.main.undoRedo.commands;
+        List<Command> undoCommands = MainApplication.undoRedo.commands;
         DefaultMutableTreeNode undoRoot = new DefaultMutableTreeNode();
         for (int i = 0; i < undoCommands.size(); ++i) {
             undoRoot.add(getNodeForCommand(undoCommands.get(i), i));
         }
         undoTreeModel.setRoot(undoRoot);
 
-        List<Command> redoCommands = Main.main.undoRedo.redoCommands;
+        List<Command> redoCommands = MainApplication.undoRedo.redoCommands;
         DefaultMutableTreeNode redoRoot = new DefaultMutableTreeNode();
         for (int i = 0; i < redoCommands.size(); ++i) {
             redoRoot.add(getNodeForCommand(redoCommands.get(i), i));
@@ -333,7 +333,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
      */
     protected static Collection<? extends OsmPrimitive> getAffectedPrimitives(TreePath path) {
         PseudoCommand c = ((CommandListMutableTreeNode) path.getLastPathComponent()).getCommand();
-        final OsmDataLayer currentLayer = Main.getLayerManager().getEditLayer();
+        final OsmDataLayer currentLayer = MainApplication.getLayerManager().getEditLayer();
         return new SubclassFilteredCollection<>(
                 c.getParticipatingPrimitives(),
                 o -> {
@@ -374,7 +374,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
             } else
                 throw new IllegalStateException();
 
-            DataSet dataSet = Main.getLayerManager().getEditDataSet();
+            DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
             if (dataSet == null) return;
             dataSet.setSelected(getAffectedPrimitives(path));
         }
@@ -455,14 +455,14 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
             switch (type) {
             case UNDO:
                 int numUndo = ((DefaultMutableTreeNode) undoTreeModel.getRoot()).getChildCount() - idx;
-                Main.main.undoRedo.undo(numUndo);
+                MainApplication.undoRedo.undo(numUndo);
                 break;
             case REDO:
                 int numRedo = idx+1;
-                Main.main.undoRedo.redo(numRedo);
+                MainApplication.undoRedo.redo(numRedo);
                 break;
             }
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
index c9eab96..cdd129c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
@@ -55,6 +55,7 @@ import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
@@ -67,6 +68,7 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -128,7 +130,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
             lstConflicts.setCellRenderer(new OsmPrimitivRenderer());
             lstConflicts.addMouseListener(new MouseEventHandler());
         }
-        addListSelectionListener(e -> Main.map.mapView.repaint());
+        addListSelectionListener(e -> MainApplication.getMap().mapView.repaint());
 
         SideButton btnResolve = new SideButton(actResolve);
         addListSelectionListener(actResolve);
@@ -138,7 +140,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
 
         createLayout(lstConflicts, true, Arrays.asList(btnResolve, btnSelect));
 
-        popupMenuHandler.addAction(Main.main.menu.autoScaleActions.get("conflict"));
+        popupMenuHandler.addAction(MainApplication.getMenu().autoScaleActions.get("conflict"));
 
         ResolveToMyVersionAction resolveToMyVersionAction = new ResolveToMyVersionAction();
         ResolveToTheirVersionAction resolveToTheirVersionAction = new ResolveToTheirVersionAction();
@@ -152,13 +154,13 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
 
     @Override
     public void showNotify() {
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
-        removeEditLayerListeners(Main.getLayerManager().getEditLayer());
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
+        removeEditLayerListeners(MainApplication.getLayerManager().getEditLayer());
     }
 
     /**
@@ -208,16 +210,16 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
 
             lstConflicts.setSelectedIndex(index);
         }
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
     /**
      * refreshes the view of this dialog
      */
     public void refreshView() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        DataSet editDs = MainApplication.getLayerManager().getEditDataSet();
         synchronized (this) {
-            conflicts = editLayer == null ? new ConflictCollection() : editLayer.getConflicts();
+            conflicts = editDs == null ? new ConflictCollection() : editDs.getConflicts();
         }
         GuiHelper.runInEDT(() -> {
             model.fireContentChanged();
@@ -317,7 +319,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
 
     @Override
     public void onConflictsRemoved(ConflictCollection conflicts) {
-        Main.info("1 conflict has been resolved.");
+        Logging.info("1 conflict has been resolved.");
         refreshView();
     }
 
@@ -480,7 +482,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
                     sel.add(o);
                 }
             }
-            DataSet ds = Main.getLayerManager().getEditDataSet();
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
             if (ds != null) { // Can't see how it is possible but it happened in #7942
                 ds.setSelected(sel);
             }
@@ -517,7 +519,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
                     }
                 }
             }
-            Main.main.undoRedo.add(new SequenceCommand(name, commands));
+            MainApplication.undoRedo.add(new SequenceCommand(name, commands));
             refreshView();
         }
     }
@@ -630,7 +632,7 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
                         ht("/Concepts/Conflict#WarningAboutDetectedConflicts")
                 );
                 unfurlDialog();
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             });
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
index bcd9c0b..ba7df47 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
@@ -17,9 +17,10 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.pair.ConflictResolver;
 import org.openstreetmap.josm.gui.help.HelpBrowser;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -202,7 +203,7 @@ public class ConflictResolutionDialog extends ExtendedDialog implements Property
                     return;
                 }
             }
-            Main.main.undoRedo.add(resolver.buildResolveCommand());
+            MainApplication.undoRedo.add(resolver.buildResolveCommand());
             buttonAction(1, evt);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
index 72a1880..1ce6ae2 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
@@ -32,18 +32,18 @@ import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableColumn;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.NameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 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.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This dialog is used to get a user confirmation that a collection of primitives can be removed
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
index 90f4d85..1547fd6 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
@@ -39,6 +39,7 @@ import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
 import org.openstreetmap.josm.gui.SideButton;
@@ -87,7 +88,7 @@ public class FilterDialog extends ToggleDialog implements DataSetListener, MapMo
         DatasetEventManager.getInstance().removeDatasetListener(this);
         MapFrame.removeMapModeChangeListener(this);
         filterModel.model.clearFilterFlags();
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
     private static final Shortcut ENABLE_FILTER_SHORTCUT
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
index 8bbaa54..8a855d6 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
@@ -10,12 +10,14 @@ import java.util.List;
 
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Filter;
 import org.openstreetmap.josm.data.osm.FilterModel;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.autofilter.AutoFilterManager;
 import org.openstreetmap.josm.gui.widgets.OSDLabel;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The model that is used for the table in the {@link FilterDialog}.
@@ -85,8 +87,9 @@ public class FilterTableModel extends AbstractTableModel {
     }
 
     private void updateMap() {
-        if (Main.map != null && model.isChanged()) {
-            Main.map.filterDialog.updateDialogHeader();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && model.isChanged()) {
+            map.filterDialog.updateDialogHeader();
         }
     }
 
@@ -266,7 +269,7 @@ public class FilterTableModel extends AbstractTableModel {
             case in_selection: /* filter mode: in selection */
                 return trc("filter", "F");
             default:
-                Main.warn("Unknown filter mode: " + f.mode);
+                Logging.warn("Unknown filter mode: " + f.mode);
             }
             break;
         default: // Do nothing
diff --git a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java
index 0793dec..9913e1f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java
@@ -10,12 +10,12 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.BBox;
+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.OsmDataLayer;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -28,10 +28,10 @@ public class InspectPrimitiveDataText {
     private static final char NL = '\n';
 
     private final StringBuilder s = new StringBuilder();
-    private final OsmDataLayer layer;
+    private final DataSet ds;
 
-    InspectPrimitiveDataText(OsmDataLayer layer) {
-        this.layer = layer;
+    InspectPrimitiveDataText(DataSet ds) {
+        this.ds = ds;
     }
 
     private InspectPrimitiveDataText add(String title, String... values) {
@@ -225,7 +225,7 @@ public class InspectPrimitiveDataText {
     }
 
     void addConflicts(OsmPrimitive o) {
-        Conflict<?> c = layer.getConflicts().getConflictForMy(o);
+        Conflict<?> c = ds.getConflicts().getConflictForMy(o);
         if (c != null) {
             add(tr("In conflict with: "));
             addNameAndId(c.getTheir());
diff --git a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
index a6ad484..d932c39 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
@@ -21,12 +21,13 @@ import javax.swing.JTabbedPane;
 import javax.swing.SingleSelectionModel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
@@ -37,9 +38,9 @@ import org.openstreetmap.josm.gui.mappaint.StyleSource;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Panel to inspect one or more OsmPrimitives.
@@ -51,26 +52,25 @@ import org.openstreetmap.josm.tools.WindowGeometry;
 public class InspectPrimitiveDialog extends ExtendedDialog {
 
     protected transient List<OsmPrimitive> primitives;
-    protected transient OsmDataLayer layer;
     private boolean mappaintTabLoaded;
     private boolean editcountTabLoaded;
 
     /**
      * Constructs a new {@code InspectPrimitiveDialog}.
      * @param primitives collection of primitives
-     * @param layer data layer
+     * @param data data set
+     * @since 12672 (signature)
      */
-    public InspectPrimitiveDialog(final Collection<OsmPrimitive> primitives, OsmDataLayer layer) {
+    public InspectPrimitiveDialog(final Collection<OsmPrimitive> primitives, DataSet data) {
         super(Main.parent, tr("Advanced object info"), tr("Close"));
         this.primitives = new ArrayList<>(primitives);
-        this.layer = layer;
         setRememberWindowGeometry(getClass().getName() + ".geometry",
                 WindowGeometry.centerInWindow(Main.parent, new Dimension(750, 550)));
 
         setButtonIcons("ok");
         final JTabbedPane tabs = new JTabbedPane();
 
-        tabs.addTab(tr("data"), genericMonospacePanel(new JPanel(), buildDataText(layer, this.primitives)));
+        tabs.addTab(tr("data"), genericMonospacePanel(new JPanel(), buildDataText(data, this.primitives)));
 
         final JPanel pMapPaint = new JPanel();
         tabs.addTab(tr("map style"), pMapPaint);
@@ -104,8 +104,8 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
         return p;
     }
 
-    protected static String buildDataText(OsmDataLayer layer, List<OsmPrimitive> primitives) {
-        InspectPrimitiveDataText dt = new InspectPrimitiveDataText(layer);
+    protected static String buildDataText(DataSet data, List<OsmPrimitive> primitives) {
+        InspectPrimitiveDataText dt = new InspectPrimitiveDataText(data);
         primitives.stream()
                 .sorted(OsmPrimitiveComparator.orderingWaysRelationsNodes().thenComparing(OsmPrimitiveComparator.comparingNames()))
                 .forEachOrdered(dt::addPrimitive);
@@ -113,9 +113,9 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
     }
 
     protected static String buildMapPaintText() {
-        final Collection<OsmPrimitive> sel = Main.getLayerManager().getEditDataSet().getAllSelected();
+        final Collection<OsmPrimitive> sel = MainApplication.getLayerManager().getEditDataSet().getAllSelected();
         ElemStyles elemstyles = MapPaintStyles.getStyles();
-        NavigatableComponent nc = Main.map.mapView;
+        NavigatableComponent nc = MainApplication.getMap().mapView;
         double scale = nc.getDist100Pixel();
 
         final StringBuilder txtMappaint = new StringBuilder();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
index 95c5310..a778718 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
@@ -27,11 +27,12 @@ import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * A dialog that lets the user add a node at the coordinates he enters.
@@ -248,7 +249,7 @@ public class LatLonDialog extends ExtendedDialog {
                 latLon = null;
             }
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             latLon = null;
         }
         if (latLon == null) {
@@ -267,7 +268,7 @@ public class LatLonDialog extends ExtendedDialog {
         try {
             en = parseEastNorth(tfEastNorth.getText());
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             en = null;
         }
         if (en == null) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
index 6b14ed7..6adceaa 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
@@ -43,6 +43,8 @@ import javax.swing.table.TableModel;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.MergeLayerAction;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.layer.ActivateLayerAction;
@@ -158,7 +160,7 @@ public class LayerListDialog extends ToggleDialog {
             visibilityToggleShortcuts[i] = Shortcut.registerShortcut("subwindow:layers:toggleLayer" + i1,
                     tr("Toggle visibility of layer: {0}", i1), KeyEvent.VK_0 + (i1 % 10), Shortcut.ALT);
             visibilityToggleActions[i] = new ToggleLayerIndexVisibility(i);
-            Main.registerActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
+            MainApplication.registerActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
         }
     }
 
@@ -369,7 +371,7 @@ public class LayerListDialog extends ToggleDialog {
     @Override
     public void destroy() {
         for (int i = 0; i < 10; i++) {
-            Main.unregisterActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
+            MainApplication.unregisterActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
         }
         MultikeyActionsHandler.getInstance().removeAction(activateLayerAction);
         MultikeyActionsHandler.getInstance().removeAction(showHideLayerAction);
@@ -506,7 +508,7 @@ public class LayerListDialog extends ToggleDialog {
         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
             Layer layer = (Layer) value;
             if (layer instanceof NativeScaleLayer) {
-                boolean active = ((NativeScaleLayer) layer) == Main.map.mapView.getNativeScaleLayer();
+                boolean active = ((NativeScaleLayer) layer) == MainApplication.getMap().mapView.getNativeScaleLayer();
                 cb.setSelected(active);
                 cb.setToolTipText(active
                     ? tr("scale follows native resolution of this layer")
@@ -823,11 +825,12 @@ public class LayerListDialog extends ToggleDialog {
                 return;
             List<Integer> sel = getSelectedRows();
             List<Layer> layers = getLayers();
+            MapView mapView = MainApplication.getMap().mapView;
             for (int row : sel) {
                 Layer l1 = layers.get(row);
                 Layer l2 = layers.get(row-1);
-                Main.map.mapView.moveLayer(l2, row);
-                Main.map.mapView.moveLayer(l1, row-1);
+                mapView.moveLayer(l2, row);
+                mapView.moveLayer(l1, row-1);
             }
             fireTableDataChanged();
             selectionModel.setValueIsAdjusting(true);
@@ -858,11 +861,12 @@ public class LayerListDialog extends ToggleDialog {
             List<Integer> sel = getSelectedRows();
             Collections.reverse(sel);
             List<Layer> layers = getLayers();
+            MapView mapView = MainApplication.getMap().mapView;
             for (int row : sel) {
                 Layer l1 = layers.get(row);
                 Layer l2 = layers.get(row+1);
-                Main.map.mapView.moveLayer(l1, row+1);
-                Main.map.mapView.moveLayer(l2, row);
+                mapView.moveLayer(l1, row+1);
+                mapView.moveLayer(l2, row);
             }
             fireTableDataChanged();
             selectionModel.setValueIsAdjusting(true);
@@ -998,11 +1002,12 @@ public class LayerListDialog extends ToggleDialog {
                     l.setVisible(true);
                     break;
                 case 1:
-                    NativeScaleLayer oldLayer = Main.map.mapView.getNativeScaleLayer();
+                    MapFrame map = MainApplication.getMap();
+                    NativeScaleLayer oldLayer = map.mapView.getNativeScaleLayer();
                     if (oldLayer == l) {
-                        Main.map.mapView.setNativeScaleLayer(null);
+                        map.mapView.setNativeScaleLayer(null);
                     } else if (l instanceof NativeScaleLayer) {
-                        Main.map.mapView.setNativeScaleLayer((NativeScaleLayer) l);
+                        map.mapView.setNativeScaleLayer((NativeScaleLayer) l);
                         if (oldLayer != null) {
                             int idx = getLayers().indexOf(oldLayer);
                             if (idx >= 0) {
@@ -1155,7 +1160,7 @@ public class LayerListDialog extends ToggleDialog {
      * @return the layer at given index, or {@code null} if index out of range
      */
     public static Layer getLayerForIndex(int index) {
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
 
         if (index < layers.size() && index >= 0)
             return layers.get(index);
@@ -1172,7 +1177,7 @@ public class LayerListDialog extends ToggleDialog {
     public static List<MultikeyInfo> getLayerInfoByClass(Class<?> layerClass) {
         List<MultikeyInfo> result = new ArrayList<>();
 
-        List<Layer> layers = Main.getLayerManager().getLayers();
+        List<Layer> layers = MainApplication.getLayerManager().getLayers();
 
         int index = 0;
         for (Layer l: layers) {
@@ -1194,7 +1199,7 @@ public class LayerListDialog extends ToggleDialog {
         if (l == null)
             return false;
 
-        return Main.getLayerManager().containsLayer(l);
+        return MainApplication.getLayerManager().containsLayer(l);
     }
 
     /**
@@ -1206,7 +1211,7 @@ public class LayerListDialog extends ToggleDialog {
         if (l == null)
             return null;
 
-        int index = Main.getLayerManager().getLayers().indexOf(l);
+        int index = MainApplication.getLayerManager().getLayers().indexOf(l);
         if (index < 0)
             return null;
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
index f30dec7..21276b9 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
@@ -55,15 +55,17 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.PreferencesAction;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateListener;
 import org.openstreetmap.josm.gui.mappaint.StyleSetting;
 import org.openstreetmap.josm.gui.mappaint.StyleSource;
+import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.util.FileFilterAllFiles;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -78,6 +80,7 @@ import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -131,7 +134,7 @@ public class MapPaintDialog extends ToggleDialog {
                 downAction.updateEnabledState();
             }
         });
-        cbWireframe.addActionListener(e -> Main.main.menu.wireFrameToggleAction.actionPerformed(null));
+        cbWireframe.addActionListener(e -> MainApplication.getMenu().wireFrameToggleAction.actionPerformed(null));
         cbWireframe.setBorder(new EmptyBorder(new Insets(1, 1, 1, 1)));
 
         tblStyles = new ScrollableTable(model);
@@ -177,12 +180,12 @@ public class MapPaintDialog extends ToggleDialog {
     @Override
     public void showNotify() {
         MapPaintStyles.addMapPaintSylesUpdateListener(model);
-        Main.main.menu.wireFrameToggleAction.addButtonModel(cbWireframe.getModel());
+        MainApplication.getMenu().wireFrameToggleAction.addButtonModel(cbWireframe.getModel());
     }
 
     @Override
     public void hideNotify() {
-        Main.main.menu.wireFrameToggleAction.removeButtonModel(cbWireframe.getModel());
+        MainApplication.getMenu().wireFrameToggleAction.removeButtonModel(cbWireframe.getModel());
         MapPaintStyles.removeMapPaintSylesUpdateListener(model);
     }
 
@@ -414,8 +417,8 @@ public class MapPaintDialog extends ToggleDialog {
         @Override
         public void actionPerformed(ActionEvent e) {
             final int[] rows = tblStyles.getSelectedRows();
-            MapPaintStyles.reloadStyles(rows);
-            Main.worker.submit(() -> SwingUtilities.invokeLater(() -> {
+            MapPaintStyleLoader.reloadStyles(rows);
+            MainApplication.worker.submit(() -> SwingUtilities.invokeLater(() -> {
                 selectionModel.setValueIsAdjusting(true);
                 selectionModel.clearSelection();
                 for (int r: rows) {
@@ -459,7 +462,7 @@ public class MapPaintDialog extends ToggleDialog {
             AbstractFileChooser fc = fcm.openFileChooser();
             if (fc == null)
                 return;
-            Main.worker.submit(new SaveToFileTask(s, fc.getSelectedFile()));
+            MainApplication.worker.submit(new SaveToFileTask(s, fc.getSelectedFile()));
         }
 
         private class SaveToFileTask extends PleaseWaitRunnable {
@@ -489,7 +492,7 @@ public class MapPaintDialog extends ToggleDialog {
                         Files.copy(in, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
                     }
                 } catch (IOException e) {
-                    Main.warn(e);
+                    Logging.warn(e);
                     error = true;
                 }
             }
@@ -637,7 +640,7 @@ public class MapPaintDialog extends ToggleDialog {
                     s.closeSourceInputStream(is);
                 }
             } catch (IOException ex) {
-                Main.error(ex);
+                Logging.error(ex);
                 txtSource.append("<ERROR: failed to read file!>");
             }
             txtSource.setCaretPosition(0);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
index 75e5b4d..0c1400d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
@@ -16,6 +16,7 @@ import javax.swing.ListCellRenderer;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.widgets.SearchTextResultListPanel;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -26,7 +27,7 @@ import org.openstreetmap.josm.tools.Shortcut;
 public final class MenuItemSearchDialog extends ExtendedDialog {
 
     private final Selector selector;
-    private static final MenuItemSearchDialog INSTANCE = new MenuItemSearchDialog(Main.main.menu);
+    private static final MenuItemSearchDialog INSTANCE = new MenuItemSearchDialog(MainApplication.getMenu());
 
     private MenuItemSearchDialog(MainMenu menu) {
         super(Main.parent, tr("Search menu items"), tr("Select"), tr("Cancel"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
index 85a22e6..2624816 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
@@ -7,8 +7,8 @@ import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.bbox.BBoxChooser;
@@ -54,8 +54,8 @@ public class MinimapDialog extends ToggleDialog implements NavigatableComponent.
 
     @Override
     public void zoomChanged() {
-        if (!skipEvents && Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        if (!skipEvents && MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             final Bounds currentBounds = new Bounds(
                     mv.getLatLon(0, mv.getHeight()),
                     mv.getLatLon(mv.getWidth(), 0)
@@ -71,7 +71,7 @@ public class MinimapDialog extends ToggleDialog implements NavigatableComponent.
     public void propertyChange(PropertyChangeEvent evt) {
         if (!skipEvents) {
             skipEvents = true;
-            Main.map.mapView.zoomTo(slippyMap.getBoundingBox());
+            MainApplication.getMap().mapView.zoomTo(slippyMap.getBoundingBox());
             skipEvents = false;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
index a7b1ef0..48a4fa2 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
@@ -35,6 +35,8 @@ import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.notes.Note.State;
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.osm.NoteData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.NoteInputDialog;
 import org.openstreetmap.josm.gui.NoteSortDialog;
 import org.openstreetmap.josm.gui.SideButton;
@@ -79,7 +81,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         openInBrowserAction = new OpenInBrowserAction();
         uploadAction = new UploadNotesAction();
         buildDialog();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
     private void buildDialog() {
@@ -98,7 +100,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
             @Override
             public void mouseClicked(MouseEvent e) {
                 if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2 && noteData != null && noteData.getSelectedNote() != null) {
-                    Main.map.mapView.zoomTo(noteData.getSelectedNote().getLatLon());
+                    MainApplication.getMap().mapView.zoomTo(noteData.getSelectedNote().getLatLon());
                 }
             }
         });
@@ -160,8 +162,9 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         if (e.getRemovedLayer() instanceof NoteLayer) {
             noteData = null;
             model.clearData();
-            if (Main.map.mapMode instanceof AddNoteAction) {
-                Main.map.selectMapMode(Main.map.mapModeSelect);
+            MapFrame map = MainApplication.getMap();
+            if (map.mapMode instanceof AddNoteAction) {
+                map.selectMapMode(map.mapModeSelect);
             }
         }
     }
@@ -194,7 +197,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         }
         updateButtonStates();
         // TODO make a proper listener mechanism to handle change of note selection
-        Main.main.menu.infoweb.noteSelectionChanged();
+        MainApplication.getMenu().infoweb.noteSelectionChanged();
     }
 
     /**
@@ -296,7 +299,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         public void actionPerformed(ActionEvent e) {
             Note note = displayList.getSelectedValue();
             if (note == null) {
-                JOptionPane.showMessageDialog(Main.map,
+                JOptionPane.showMessageDialog(MainApplication.getMap(),
                         "You must select a note first",
                         "No note selected",
                         JOptionPane.ERROR_MESSAGE);
@@ -352,9 +355,9 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         @Override
         public void actionPerformed(ActionEvent e) {
             if (noteData == null) { //there is no notes layer. Create one first
-                Main.getLayerManager().addLayer(new NoteLayer());
+                MainApplication.getLayerManager().addLayer(new NoteLayer());
             }
-            Main.map.selectMapMode(new AddNoteAction(noteData));
+            MainApplication.getMap().selectMapMode(new AddNoteAction(noteData));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
index e52467e..0faf33c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
@@ -40,8 +40,8 @@ import org.openstreetmap.josm.actions.relation.EditRelationAction;
 import org.openstreetmap.josm.actions.relation.RecentRelationsAction;
 import org.openstreetmap.josm.actions.relation.SelectMembersAction;
 import org.openstreetmap.josm.actions.relation.SelectRelationAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
@@ -49,13 +49,14 @@ import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
 import org.openstreetmap.josm.data.osm.event.DataSetListener;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
 import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
 import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
@@ -180,7 +181,7 @@ public class RelationListDialog extends ToggleDialog
         displaylist.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, KeyEvent.CTRL_DOWN_MASK), "edit");
 
         // Do not hide copy action because of default JList override (fix #9815)
-        displaylist.getActionMap().put("copy", Main.main.menu.copy);
+        displaylist.getActionMap().put("copy", MainApplication.getMenu().copy);
         displaylist.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_C, GuiHelper.getMenuShortcutKeyMaskEx()), "copy");
 
         updateActionsRelationLists();
@@ -208,15 +209,15 @@ public class RelationListDialog extends ToggleDialog
         Component focused = FocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
 
         //update highlights
-        if (highlightEnabled && focused == displaylist && Main.isDisplayingMapView() && highlightHelper.highlightOnly(sel)) {
-            Main.map.mapView.repaint();
+        if (highlightEnabled && focused == displaylist && MainApplication.isDisplayingMapView() && highlightHelper.highlightOnly(sel)) {
+            MainApplication.getMap().mapView.repaint();
         }
     }
 
     @Override
     public void showNotify() {
-        Main.getLayerManager().addLayerChangeListener(newAction);
-        Main.getLayerManager().addActiveLayerChangeListener(newAction);
+        MainApplication.getLayerManager().addLayerChangeListener(newAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(newAction);
         MapView.addZoomChangeListener(this);
         newAction.updateEnabledState();
         DatasetEventManager.getInstance().addDatasetListener(this, FireMode.IN_EDT);
@@ -228,8 +229,8 @@ public class RelationListDialog extends ToggleDialog
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(newAction);
-        Main.getLayerManager().removeLayerChangeListener(newAction);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(newAction);
+        MainApplication.getLayerManager().removeLayerChangeListener(newAction);
         MapView.removeZoomChangeListener(this);
         DatasetEventManager.getInstance().removeDatasetListener(this);
         DataSet.removeSelectionListener(addSelectionToRelations);
@@ -324,7 +325,7 @@ public class RelationListDialog extends ToggleDialog
         }
 
         protected void setCurrentRelationAsSelection() {
-            Main.getLayerManager().getEditDataSet().setSelected(displaylist.getSelectedValue());
+            MainApplication.getLayerManager().getEditDataSet().setSelected(displaylist.getSelectedValue());
         }
 
         protected void editCurrentRelation() {
@@ -333,7 +334,7 @@ public class RelationListDialog extends ToggleDialog
 
         @Override
         public void mouseClicked(MouseEvent e) {
-            if (Main.getLayerManager().getEditLayer() == null) return;
+            if (MainApplication.getLayerManager().getEditLayer() == null) return;
             if (isDoubleClick(e)) {
                 if (e.isControlDown()) {
                     editCurrentRelation();
@@ -356,7 +357,7 @@ public class RelationListDialog extends ToggleDialog
         }
 
         public void run() {
-            RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), null, null).setVisible(true);
+            RelationEditor.getEditor(MainApplication.getLayerManager().getEditLayer(), null, null).setVisible(true);
         }
 
         @Override
@@ -365,7 +366,7 @@ public class RelationListDialog extends ToggleDialog
         }
 
         protected void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null);
         }
 
         @Override
@@ -694,7 +695,7 @@ public class RelationListDialog extends ToggleDialog
 
     @Override
     public void dataChanged(DataChangedEvent event) {
-        initFromLayer(Main.getLayerManager().getEditLayer());
+        initFromLayer(MainApplication.getLayerManager().getEditLayer());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
index 728ac65..bdd9f7b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
@@ -43,10 +43,10 @@ import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction;
 import org.openstreetmap.josm.actions.relation.EditRelationAction;
 import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
@@ -57,6 +57,7 @@ import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
 import org.openstreetmap.josm.data.osm.event.DataSetListener;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
 import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
 import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
 import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
@@ -65,7 +66,8 @@ import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
@@ -169,16 +171,16 @@ public class SelectionListDialog extends ToggleDialog {
         SelectionEventManager.getInstance().addSelectionListener(actShowHistory, FireMode.IN_EDT_CONSOLIDATED);
         SelectionEventManager.getInstance().addSelectionListener(model, FireMode.IN_EDT_CONSOLIDATED);
         DatasetEventManager.getInstance().addDatasetListener(model, FireMode.IN_EDT);
-        Main.getLayerManager().addActiveLayerChangeListener(actSearch);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSearch);
         // editLayerChanged also gets the selection history of the level. Listener calls setJOSMSelection when fired.
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(model);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(model);
         actSearch.updateEnabledState();
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(actSearch);
-        Main.getLayerManager().removeActiveLayerChangeListener(model);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSearch);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(model);
         SelectionEventManager.getInstance().removeSelectionListener(actShowHistory);
         SelectionEventManager.getInstance().removeSelectionListener(model);
         DatasetEventManager.getInstance().removeDatasetListener(model);
@@ -200,7 +202,7 @@ public class SelectionListDialog extends ToggleDialog {
             int idx = lstPrimitives.locationToIndex(e.getPoint());
             if (idx < 0) return;
             if (isDoubleClick(e)) {
-                OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
                 if (layer == null) return;
                 OsmPrimitive osm = model.getElementAt(idx);
                 Collection<OsmPrimitive> sel = layer.data.getSelected();
@@ -211,8 +213,8 @@ public class SelectionListDialog extends ToggleDialog {
                     // else open relation editor if applicable
                     actEditRelationSelection.actionPerformed(null);
                 }
-            } else if (highlightEnabled && Main.isDisplayingMapView() && helper.highlightOnly(model.getElementAt(idx))) {
-                Main.map.mapView.repaint();
+            } else if (highlightEnabled && MainApplication.isDisplayingMapView() && helper.highlightOnly(model.getElementAt(idx))) {
+                MainApplication.getMap().mapView.repaint();
             }
         }
 
@@ -296,7 +298,7 @@ public class SelectionListDialog extends ToggleDialog {
         }
 
         protected void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null);
         }
 
         @Override
@@ -321,7 +323,7 @@ public class SelectionListDialog extends ToggleDialog {
         public void actionPerformed(ActionEvent e) {
             Collection<OsmPrimitive> sel = model.getSelected();
             if (sel.isEmpty()) return;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer == null) return;
             editLayer.data.setSelected(sel);
             model.selectionModel.setSelectionInterval(0, sel.size()-1);
@@ -441,7 +443,7 @@ public class SelectionListDialog extends ToggleDialog {
             if (box.getBounds() == null)
                 return;
             box.enlargeBoundingBox();
-            Main.map.mapView.zoomTo(box);
+            MainApplication.getMap().mapView.zoomTo(box);
         }
 
         protected void updateEnabledState() {
@@ -614,6 +616,7 @@ public class SelectionListDialog extends ToggleDialog {
                     fireContentsChanged(this, 0, getSize());
                     if (selection != null) {
                         remember(selection);
+                        MapFrame map = MainApplication.getMap();
                         if (selection.size() == 2) {
                             Iterator<? extends OsmPrimitive> it = selection.iterator();
                             OsmPrimitive n1 = it.next();
@@ -623,12 +626,12 @@ public class SelectionListDialog extends ToggleDialog {
                                 LatLon c1 = ((Node) n1).getCoor();
                                 LatLon c2 = ((Node) n2).getCoor();
                                 if (c1 != null && c2 != null) {
-                                    Main.map.statusLine.setDist(c1.greatCircleDistance(c2));
+                                    map.statusLine.setDist(c1.greatCircleDistance(c2));
                                     return;
                                 }
                             }
                         }
-                        Main.map.statusLine.setDist(
+                        map.statusLine.setDist(
                                 new SubclassFilteredCollection<OsmPrimitive, Way>(selection, Way.class::isInstance));
                     }
                 }
@@ -841,7 +844,7 @@ public class SelectionListDialog extends ToggleDialog {
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.getLayerManager().getEditDataSet().setSelected(sel);
+            MainApplication.getLayerManager().getEditDataSet().setSelected(sel);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
index da9ed27..6794213 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
@@ -53,6 +53,7 @@ import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.ParametrizedEnumProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.ShowHideButtonListener;
 import org.openstreetmap.josm.gui.SideButton;
@@ -64,13 +65,14 @@ import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
+import org.openstreetmap.josm.gui.util.WindowGeometry.WindowGeometryException;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.WindowGeometry;
-import org.openstreetmap.josm.tools.WindowGeometry.WindowGeometryException;
 
 /**
  * This class is a toggle dialog that can be turned on and off.
@@ -109,7 +111,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
                 return super.parse(s);
             } catch (IllegalArgumentException e) {
                 // Legacy settings
-                Main.trace(e);
+                Logging.trace(e);
                 return Boolean.parseBoolean(s) ? ButtonHidingType.DYNAMIC : ButtonHidingType.ALWAYS_SHOWN;
             }
         }
@@ -253,7 +255,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
 
         setBorder(BorderFactory.createEtchedBorder());
 
-        Main.redirectToMainContentPane(this);
+        MainApplication.redirectToMainContentPane(this);
         Main.pref.addPreferenceChangeListener(this);
 
         registerInWindowMenu();
@@ -265,7 +267,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
      */
     protected void registerInWindowMenu() {
         if (Main.main != null) {
-            windowMenuItem = MainMenu.addWithCheckbox(Main.main.menu.windowMenu,
+            windowMenuItem = MainMenu.addWithCheckbox(MainApplication.getMenu().windowMenu,
                     (JosmAction) getToggleAction(),
                     MainMenu.WINDOW_MENU_GROUP.TOGGLE_DIALOG);
         }
@@ -462,7 +464,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             hideNotify();
         }
         if (Main.main != null) {
-            Main.main.menu.windowMenu.remove(windowMenuItem);
+            MainApplication.getMenu().windowMenu.remove(windowMenuItem);
         }
         Toolkit.getDefaultToolkit().removeAWTEventListener(this);
         Main.pref.removePreferenceChangeListener(this);
@@ -707,7 +709,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             try {
                 new WindowGeometry(preferencePrefix+".geometry").applySafe(this);
             } catch (WindowGeometryException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 ToggleDialog.this.setPreferredSize(ToggleDialog.this.getDefaultDetachedSize());
                 pack();
                 setLocationRelativeTo(Main.parent);
@@ -931,8 +933,8 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
                     if (action != null) {
                         buttonActions.add(action);
                     } else {
-                        Main.warn("Button " + button + " doesn't have action defined");
-                        Main.error(new Exception());
+                        Logging.warn("Button " + button + " doesn't have action defined");
+                        Logging.error(new Exception());
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
index 45f53b5..d3b47ce 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
@@ -34,6 +34,7 @@ import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -41,6 +42,7 @@ import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListen
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -71,12 +73,12 @@ public class UserListDialog extends ToggleDialog implements DataSelectionListene
     @Override
     public void showNotify() {
         SelectionEventManager.getInstance().addSelectionListenerForEdt(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
     }
 
@@ -139,7 +141,7 @@ public class UserListDialog extends ToggleDialog implements DataSelectionListene
     @Override
     public void showDialog() {
         super.showDialog();
-        refreshForActiveLayer(Main.getLayerManager().getActiveLayer());
+        refreshForActiveLayer(MainApplication.getLayerManager().getActiveLayer());
     }
 
     class SelectUsersPrimitivesAction extends AbstractAction implements ListSelectionListener {
@@ -198,7 +200,7 @@ public class UserListDialog extends ToggleDialog implements DataSelectionListene
             if (users.isEmpty())
                 return;
             if (users.size() > 10) {
-                Main.warn(tr("Only launching info browsers for the first {0} of {1} selected users", 10, users.size()));
+                Logging.warn(tr("Only launching info browsers for the first {0} of {1} selected users", 10, users.size()));
             }
             int num = Math.min(10, users.size());
             Iterator<User> it = users.iterator();
@@ -344,14 +346,14 @@ public class UserListDialog extends ToggleDialog implements DataSelectionListene
             for (int index: rows) {
                 users.add(data.get(index).user);
             }
-            Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getAllSelected();
+            Collection<OsmPrimitive> selected = MainApplication.getLayerManager().getEditDataSet().getAllSelected();
             Collection<OsmPrimitive> byUser = new LinkedList<>();
             for (OsmPrimitive p : selected) {
                 if (users.contains(p.getUser())) {
                     byUser.add(p);
                 }
             }
-            Main.getLayerManager().getEditDataSet().setSelected(byUser);
+            MainApplication.getLayerManager().getEditDataSet().setSelected(byUser);
         }
 
         public List<User> getSelectedUsers(int... rows) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
index 8317b52..19262c7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
@@ -39,9 +39,12 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.ValidatorVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
@@ -98,7 +101,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
                 Shortcut.registerShortcut("subwindow:validator", tr("Toggle: {0}", tr("Validation results")),
                         KeyEvent.VK_V, Shortcut.ALT_SHIFT), 150, false, ValidatorPreference.class);
 
-        popupMenuHandler.addAction(Main.main.menu.autoScaleActions.get("problem"));
+        popupMenuHandler.addAction(MainApplication.getMenu().autoScaleActions.get("problem"));
         popupMenuHandler.addAction(new EditRelationAction());
 
         tree = new ValidatorTreePanel();
@@ -128,7 +131,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
 
             @Override
             public void actionPerformed(ActionEvent e) {
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) {
                     return;
                 }
@@ -154,7 +157,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
         fixButton.setEnabled(false);
         buttons.add(fixButton);
 
-        if (ValidatorPreference.PREF_USE_IGNORE.get()) {
+        if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
             ignoreButton = new SideButton(new AbstractAction() {
                 {
                     putValue(NAME, tr("Ignore"));
@@ -177,16 +180,16 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
     @Override
     public void showNotify() {
         DataSet.addSelectionListener(this);
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             updateSelection(ds.getAllSelected());
         }
-        Main.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
     }
 
     @Override
     public void hideNotify() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         DataSet.removeSelectionListener(this);
     }
 
@@ -234,7 +237,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
         // run fix task asynchronously
         //
         FixTask fixTask = new FixTask(errorsToFix);
-        Main.worker.submit(fixTask);
+        MainApplication.worker.submit(fixTask);
     }
 
     /**
@@ -314,7 +317,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
         if (changed) {
             tree.resetErrors();
             OsmValidator.saveIgnoredErrors();
-            Main.map.repaint();
+            MainApplication.getMap().repaint();
         }
     }
 
@@ -346,7 +349,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
                 }
             }
         }
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.setSelected(sel);
         }
@@ -485,7 +488,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
             fixButton.setEnabled(hasFixes);
 
             if (isDblClick) {
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds != null) {
                     ds.setSelected(sel);
                 }
@@ -523,8 +526,9 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
             boolean hasFixes = setSelection(sel, true);
             fixButton.setEnabled(hasFixes);
             popupMenuHandler.setPrimitives(sel);
-            if (Main.map != null) {
-                Main.map.repaint();
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.repaint();
             }
         }
     }
@@ -568,7 +572,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
      * @param newSelection The new selection
      */
     public void updateSelection(Collection<? extends OsmPrimitive> newSelection) {
-        if (!Main.pref.getBoolean(ValidatorPreference.PREF_FILTER_BY_SELECTION, false))
+        if (!Main.pref.getBoolean(ValidatorPrefHelper.PREF_FILTER_BY_SELECTION, false))
             return;
         if (newSelection.isEmpty()) {
             tree.setFilter(null);
@@ -609,7 +613,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
             if (error.isFixable()) {
                 final Command fixCommand = error.getFix();
                 if (fixCommand != null) {
-                    SwingUtilities.invokeAndWait(() -> Main.main.undoRedo.addNoRedraw(fixCommand));
+                    SwingUtilities.invokeAndWait(() -> MainApplication.undoRedo.addNoRedraw(fixCommand));
                 }
                 // It is wanted to ignore an error if it said fixable, even if fixCommand was null
                 // This is to fix #5764 and #5773:
@@ -623,7 +627,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
             ProgressMonitor monitor = getProgressMonitor();
             try {
                 monitor.setTicksCount(testErrors.size());
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 int i = 0;
                 SwingUtilities.invokeAndWait(ds::beginUpdate);
                 try {
@@ -640,8 +644,8 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
                 }
                 monitor.subTask(tr("Updating map ..."));
                 SwingUtilities.invokeAndWait(() -> {
-                    Main.main.undoRedo.afterAdd();
-                    Main.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                    MainApplication.undoRedo.afterAdd();
+                    MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
                     tree.resetErrors();
                 });
             } catch (InterruptedException | InvocationTargetException e) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
index 9a9d531..36fd893 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
@@ -53,19 +53,21 @@ import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.changeset.query.ChangesetQueryDialog;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.io.CloseChangesetTask;
 import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.StreamUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * ChangesetCacheManager manages the local cache of changesets
@@ -403,7 +405,7 @@ public class ChangesetCacheManager extends JFrame {
                         ChangesetCacheManager.getInstance().runDownloadTask(new ChangesetQueryTask(parent, query));
                     }
                 } catch (IllegalStateException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     JOptionPane.showMessageDialog(parent, e.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
                 }
             }
@@ -457,7 +459,7 @@ public class ChangesetCacheManager extends JFrame {
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.worker.submit(new CloseChangesetTask(model.getSelectedChangesets()));
+            MainApplication.worker.submit(new CloseChangesetTask(model.getSelectedChangesets()));
         }
 
         protected void updateEnabledState() {
@@ -566,7 +568,7 @@ public class ChangesetCacheManager extends JFrame {
         public void actionPerformed(ActionEvent e) {
             if (!GraphicsEnvironment.isHeadless()) {
                 actDownloadSelectedContent.actionPerformed(e);
-                Main.worker.submit(() -> {
+                MainApplication.worker.submit(() -> {
                     final List<PrimitiveId> primitiveIds = model.getSelectedChangesets().stream()
                             .map(Changeset::getContent)
                             .filter(Objects::nonNull)
@@ -641,7 +643,7 @@ public class ChangesetCacheManager extends JFrame {
                 }
             } catch (IllegalStateException ex) {
                 alertAnonymousUser(parent);
-                Main.trace(ex);
+                Logging.trace(ex);
             }
         }
     }
@@ -752,8 +754,8 @@ public class ChangesetCacheManager extends JFrame {
      * @param task The changeset download task to run
      */
     public void runDownloadTask(final AbstractChangesetDownloadTask task) {
-        Main.worker.submit(new PostDownloadHandler(task, task.download()));
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
+        MainApplication.worker.submit(() -> {
             if (task.isCanceled() || task.isFailed())
                 return;
             GuiHelper.runInEDT(() -> setSelectedChangesets(task.getDownloadedData()));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
index ad0f3fc..9ec237e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
@@ -32,7 +32,6 @@ import javax.swing.JToolBar;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.downloadtasks.ChangesetContentDownloadTask;
 import org.openstreetmap.josm.data.osm.Changeset;
@@ -42,6 +41,7 @@ import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager;
 import org.openstreetmap.josm.gui.history.HistoryLoadTask;
@@ -91,25 +91,25 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
 
         actSelectInCurrentLayerAction = new SelectInCurrentLayerAction();
         model.getSelectionModel().addListSelectionListener(actSelectInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayerAction);
 
         actZoomInCurrentLayerAction = new ZoomInCurrentLayerAction();
         model.getSelectionModel().addListSelectionListener(actZoomInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
 
         addComponentListener(
                 new ComponentAdapter() {
                     @Override
                     public void componentShown(ComponentEvent e) {
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayerAction);
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
 
                     @Override
                     public void componentHidden(ComponentEvent e) {
                         // make sure the listener is unregistered when the panel becomes invisible
-                        Main.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayerAction);
-                        Main.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
                 }
         );
@@ -199,7 +199,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                         "<html>None of the selected objects is available in the current<br>"
                         + "edit layer ''{0}''.</html>",
                         primitives.size(),
-                        Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
+                        Utils.escapeReservedCharactersHTML(MainApplication.getLayerManager().getEditLayer().getName())
                 ),
                 title, JOptionPane.WARNING_MESSAGE, helpTopic
         );
@@ -267,10 +267,10 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                 for (HistoryOsmPrimitive p: toLoad) {
                     task.add(p);
                 }
-                Main.worker.submit(task);
+                MainApplication.worker.submit(task);
             }
 
-            Main.worker.submit(new ShowHistoryTask(primitives));
+            MainApplication.worker.submit(new ShowHistoryTask(primitives));
         }
 
         protected final void updateEnabledState() {
@@ -303,7 +303,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
         public void actionPerformed(ActionEvent arg0) {
             final List<PrimitiveId> primitiveIds = model.getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
                     .collect(Collectors.toList());
-            Main.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
+            MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
         }
 
         protected final void updateEnabledState() {
@@ -322,7 +322,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
             if (!isEnabled()) {
                 return null;
             }
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return null;
             }
@@ -337,7 +337,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
         }
 
         public final void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && model.hasSelectedPrimitives());
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && model.hasSelectedPrimitives());
         }
 
         @Override
@@ -371,7 +371,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                         HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToSelectInLayer"));
                 return;
             }
-            Main.getLayerManager().getEditLayer().data.setSelected(target);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(target);
         }
     }
 
@@ -394,7 +394,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                         HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToZoomTo"));
                 return;
             }
-            Main.getLayerManager().getEditLayer().data.setSelected(target);
+            MainApplication.getLayerManager().getEditLayer().data.setSelected(target);
             AutoScaleAction.zoomToSelection();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
index 9147fbe..42d94f7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
@@ -35,6 +35,7 @@ import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
@@ -89,24 +90,24 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
         actDownloadChangesetContent.initProperties();
 
         tb.add(actSelectInCurrentLayer);
-        Main.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayer);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actSelectInCurrentLayer);
 
         tb.add(actZoomInCurrentLayerAction);
-        Main.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(actZoomInCurrentLayerAction);
 
         addComponentListener(
                 new ComponentAdapter() {
                     @Override
                     public void componentShown(ComponentEvent e) {
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayer);
-                        Main.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actSelectInCurrentLayer);
+                        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
 
                     @Override
                     public void componentHidden(ComponentEvent e) {
                         // make sure the listener is unregistered when the panel becomes invisible
-                        Main.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayer);
-                        Main.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayer);
+                        MainApplication.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
                     }
                 }
         );
@@ -315,7 +316,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
                     ChangesetDetailPanel.this,
                     Collections.singleton(currentChangeset.getId())
             );
-            Main.worker.submit(new PostDownloadHandler(task, task.download()));
+            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
         }
 
         public void initProperties(Changeset cs) {
@@ -342,7 +343,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
                     tr("<html>None of the objects in the content of changeset {0} is available in the current<br>"
                             + "edit layer ''{1}''.</html>",
                             currentChangeset.getId(),
-                            Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
+                            Utils.escapeReservedCharactersHTML(MainApplication.getLayerManager().getEditLayer().getName())
                     ),
                     tr("Nothing to select"),
                     JOptionPane.WARNING_MESSAGE,
@@ -354,7 +355,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
         public void actionPerformed(ActionEvent arg0) {
             if (!isEnabled())
                 return;
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return;
             }
@@ -372,7 +373,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
         }
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && currentChangeset != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && currentChangeset != null);
         }
 
         @Override
@@ -401,7 +402,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
                     tr("<html>None of the objects in the content of changeset {0} is available in the current<br>"
                             + "edit layer ''{1}''.</html>",
                             currentChangeset.getId(),
-                            Main.getLayerManager().getEditLayer().getName()
+                            MainApplication.getLayerManager().getEditLayer().getName()
                     ),
                     tr("Nothing to zoom to"),
                     JOptionPane.WARNING_MESSAGE,
@@ -413,7 +414,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
         public void actionPerformed(ActionEvent arg0) {
             if (!isEnabled())
                 return;
-            OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
             if (layer == null) {
                 return;
             }
@@ -432,7 +433,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
         }
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && currentChangeset != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && currentChangeset != null);
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
index 6a24509..3c0c2ba 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
@@ -23,6 +23,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.ChangesetHeaderDownloadTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -77,7 +78,7 @@ public class ChangesetDiscussionPanel extends JPanel implements PropertyChangeLi
                     Collections.singleton(current.getId()),
                     true /* include discussion */
             );
-            Main.worker.submit(new PostDownloadHandler(task, task.download()));
+            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
         }
 
         public void initProperties(Changeset cs) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
index 716df05..1695c97 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
@@ -21,9 +21,12 @@ import javax.swing.JRadioButton;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.io.ChangesetQuery;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This panel presents a list of basic queries for changesets.
@@ -163,10 +166,9 @@ public class BasicChangesetQueryPanel extends JPanel {
             lbl.setText(tr("<html>Download my open changesets</html>"));
         }
 
-        // query for changesets in the current map view only if there *is* a current
-        // map view
+        // query for changesets in the current map view only if there *is* a current map view
         lbl = lblQueries.get(BasicQuery.CHANGESETS_IN_MAP_VIEW);
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             rbQueries.get(BasicQuery.CHANGESETS_IN_MAP_VIEW).setEnabled(false);
             lbl.setText(tr("<html>Download changesets in the current map view.<br><em>Disabled. " +
                     "There is currently no map view active.</em></html>"));
@@ -203,8 +205,8 @@ public class BasicChangesetQueryPanel extends JPanel {
             try {
                 q = BasicQuery.valueOf(BasicQuery.class, value);
             } catch (IllegalArgumentException e) {
-                Main.warn(e, tr("Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default query.",
-                        "changeset-query.basic.query", value));
+                Logging.log(Logging.LEVEL_WARN, tr("Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default query.",
+                        "changeset-query.basic.query", value), e);
                 q = BasicQuery.MOST_RECENT_CHANGESETS;
             }
         }
@@ -239,7 +241,8 @@ public class BasicChangesetQueryPanel extends JPanel {
             query = query.beingOpen(true);
             break;
         case CHANGESETS_IN_MAP_VIEW:
-            Bounds b = Main.map.mapView.getLatLonBounds(Main.map.mapView.getBounds());
+            MapView mapView = MainApplication.getMap().mapView;
+            Bounds b = mapView.getLatLonBounds(mapView.getBounds());
             query = query.inBbox(b);
             break;
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
index afad85f..6766ad8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
@@ -19,14 +19,14 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is a modal dialog for entering query criteria to search for changesets.
@@ -203,7 +203,7 @@ public class ChangesetQueryDialog extends JDialog {
                 setCanceled(false);
                 setVisible(false);
             } catch (IllegalStateException e) {
-                Main.error(e);
+                Logging.error(e);
                 JOptionPane.showMessageDialog(ChangesetQueryDialog.this, e.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/DateValidator.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/DateValidator.java
index c69784e..4ca8c90 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/DateValidator.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/DateValidator.java
@@ -11,8 +11,8 @@ import java.time.format.FormatStyle;
 
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Validates dates entered as text in a {@link JTextComponent}. Validates the input
@@ -95,7 +95,7 @@ public class DateValidator extends AbstractTextComponentValidator {
                 return LocalDate.parse(getComponent().getText(), df);
             } catch (DateTimeParseException e) {
                 // Try next format
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         return null;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/TimeValidator.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/TimeValidator.java
index 5f33443..57a7c86 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/TimeValidator.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/TimeValidator.java
@@ -11,8 +11,8 @@ import java.time.format.FormatStyle;
 
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Validates time values entered as text in a {@link JTextComponent}. Validates the input
@@ -100,7 +100,7 @@ public class TimeValidator extends AbstractTextComponentValidator {
                 return LocalTime.parse(getComponent().getText(), df);
             } catch (DateTimeParseException e) {
                 // Try next format
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         return LocalTime.MIDNIGHT;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
index 623bab1..f1a97ea 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
@@ -26,6 +26,7 @@ import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This panel allows to build a changeset query from an URL.
@@ -137,7 +138,7 @@ public class UrlBasedQueryPanel extends JPanel {
         try {
             return ChangesetQuery.buildFromUrlQuery(url.getQuery());
         } catch (ChangesetQueryUrlException e) {
-            Main.warn(e);
+            Logging.warn(e);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
index d324d16..91febce 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
@@ -7,8 +7,8 @@ import java.awt.event.ActionEvent;
 
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -52,9 +52,9 @@ public final class DuplicateAction extends AbstractAction implements IEnabledSta
 
     private static void duplicate(Layer layer) {
         if (layer instanceof OsmDataLayer) {
-            String newName = LayerListTransferHandler.suggestNewLayerName(layer.getName(), Main.getLayerManager().getLayers());
+            String newName = LayerListTransferHandler.suggestNewLayerName(layer.getName(), MainApplication.getLayerManager().getLayers());
             OsmDataLayer oldLayer = (OsmDataLayer) layer;
-            Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(oldLayer.data), newName, null));
+            MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(oldLayer.data), newName, null));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
index 0a091ce..992a72c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
@@ -14,12 +14,12 @@ import javax.swing.JComponent;
 import javax.swing.JTable;
 import javax.swing.TransferHandler;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.datatransfer.LayerTransferable;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This class allows the user to transfer layers using drag+drop.
@@ -123,10 +123,10 @@ public class LayerListTransferHandler extends TransferHandler {
 
             return true;
         } catch (UnsupportedFlavorException e) {
-            Main.warn("Flavor not supported", e);
+            Logging.warn("Flavor not supported", e);
             return false;
         } catch (IOException e) {
-            Main.warn("Error while pasting layer", e);
+            Logging.warn("Error while pasting layer", e);
             return false;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
index d6d354e..a6905a0 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
@@ -10,7 +10,8 @@ import java.util.List;
 import javax.swing.AbstractAction;
 import javax.swing.JMenuItem;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.MergeLayerAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -68,16 +69,17 @@ public final class MergeAction extends AbstractAction implements IEnabledStateUp
 
     @Override
     public void actionPerformed(ActionEvent e) {
+        MergeLayerAction mergeLayerAction = MainApplication.getMenu().merge;
         if (layer != null) {
-            Main.main.menu.merge.merge(layer);
+            mergeLayerAction.merge(layer);
         } else if (layers != null) {
-            Main.main.menu.merge.merge(layers);
+            mergeLayerAction.merge(layers);
         } else {
             if (model.getSelectedLayers().size() == 1) {
                 Layer selectedLayer = model.getSelectedLayers().get(0);
-                Main.main.menu.merge.merge(selectedLayer);
+                mergeLayerAction.merge(selectedLayer);
             } else {
-                Main.main.menu.merge.merge(model.getSelectedLayers());
+                mergeLayerAction.merge(model.getSelectedLayers());
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
index a37710e..469d6fc 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
@@ -59,13 +59,12 @@ import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembers
 import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
 import org.openstreetmap.josm.actions.relation.SelectMembersAction;
 import org.openstreetmap.josm.actions.relation.SelectRelationAction;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.SelectionChangedListener;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.IRelation;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -77,11 +76,13 @@ import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
@@ -104,6 +105,7 @@ import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
@@ -227,7 +229,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             + tr("Select objects for which to change tags.") + "</p></html>");
 
     private final PreferenceChangedListener preferenceListener = e -> {
-                if (Main.getLayerManager().getEditDataSet() != null) {
+                if (MainApplication.getLayerManager().getEditDataSet() != null) {
                     // Re-load data when display preference change
                     updateSelection();
                 }
@@ -383,10 +385,10 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             @Override
             public void mouseClicked(MouseEvent e) {
                 //update highlights
-                if (Main.isDisplayingMapView()) {
+                if (MainApplication.isDisplayingMapView()) {
                     int row = membershipTable.rowAtPoint(e.getPoint());
                     if (row >= 0 && highlightHelper.highlightOnly((Relation) membershipTable.getValueAt(row, 0))) {
-                        Main.map.mapView.repaint();
+                        MainApplication.getMap().mapView.repaint();
                     }
                 }
                 super.mouseClicked(e);
@@ -482,9 +484,9 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
      */
     private void editMembership(int row) {
         Relation relation = (Relation) membershipData.getValueAt(row, 0);
-        Main.map.relationListDialog.selectRelation(relation);
+        MainApplication.getMap().relationListDialog.selectRelation(relation);
         RelationEditor.getEditor(
-                Main.getLayerManager().getEditLayer(),
+                MainApplication.getLayerManager().getEditLayer(),
                 relation,
                 ((MemberInfo) membershipData.getValueAt(row, 1)).role
         ).setVisible(true);
@@ -510,9 +512,9 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
     public void showNotify() {
         DatasetEventManager.getInstance().addDatasetListener(dataChangedAdapter, FireMode.IN_EDT_CONSOLIDATED);
         SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
         for (JosmAction action : josmActions) {
-            Main.registerActionShortcut(action);
+            MainApplication.registerActionShortcut(action);
         }
         updateSelection();
     }
@@ -521,16 +523,16 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
     public void hideNotify() {
         DatasetEventManager.getInstance().removeDatasetListener(dataChangedAdapter);
         SelectionEventManager.getInstance().removeSelectionListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
         for (JosmAction action : josmActions) {
-            Main.unregisterActionShortcut(action);
+            MainApplication.unregisterActionShortcut(action);
         }
     }
 
     @Override
     public void setVisible(boolean b) {
         super.setVisible(b);
-        if (b && Main.getLayerManager().getEditDataSet() != null) {
+        if (b && MainApplication.getLayerManager().getEditDataSet() != null) {
             updateSelection();
         }
     }
@@ -827,7 +829,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
         public void updateTags(List<Tag> tags) {
             Command command = TaggingPreset.createCommand(getSelection(), tags);
             if (command != null) {
-                Main.main.undoRedo.add(command);
+                MainApplication.undoRedo.add(command);
             }
         }
 
@@ -994,7 +996,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             }
 
             Collection<OsmPrimitive> sel = Main.main.getInProgressSelection();
-            Main.main.undoRedo.add(new ChangePropertyCommand(sel, tags));
+            MainApplication.undoRedo.add(new ChangePropertyCommand(sel, tags));
 
             membershipTable.clearSelection();
             if (nextKey != null) {
@@ -1025,7 +1027,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             for (OsmPrimitive primitive: Main.main.getInProgressSelection()) {
                 rel.removeMembersFor(primitive);
             }
-            Main.main.undoRedo.add(new ChangeCommand(cur, rel));
+            MainApplication.undoRedo.add(new ChangeCommand(cur, rel));
 
             tagTable.clearSelection();
             if (nextRelation != null) {
@@ -1169,9 +1171,9 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                     uris.add(new URI(String.format("%sMap_Features", base)));
                 }
 
-                Main.worker.execute(() -> displayHelp(uris));
+                MainApplication.worker.execute(() -> displayHelp(uris));
             } catch (URISyntaxException e1) {
-                Main.error(e1);
+                Logging.error(e1);
             }
         }
 
@@ -1201,7 +1203,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                          *  content lengths, so we have to be fuzzy.. (this is UGLY, recode if u know better)
                          */
                         if (osize > -1 && conn.getContentLength() != -1 && Math.abs(conn.getContentLength() - osize) > 200) {
-                            Main.info("{0} is a mediawiki redirect", u);
+                            Logging.info("{0} is a mediawiki redirect", u);
                             conn.disconnect();
                         } else {
                             conn.disconnect();
@@ -1212,7 +1214,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                     }
                 }
             } catch (URISyntaxException | IOException e1) {
-                Main.error(e1);
+                Logging.error(e1);
             }
         }
     }
@@ -1263,7 +1265,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             String clipboard = ClipboardUtils.getClipboardStringContent();
             if (sel.isEmpty() || clipboard == null)
                 return;
-            Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, Utils.strip(clipboard)));
+            MainApplication.undoRedo.add(new ChangePropertyCommand(sel, key, Utils.strip(clipboard)));
         }
     }
 
@@ -1332,7 +1334,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             putValue(NAME, tr("Copy all Keys/Values"));
             putValue(SHORT_DESCRIPTION, tr("Copy the key and value of all the tags to clipboard"));
             Shortcut sc = Shortcut.registerShortcut("system:copytags", tr("Edit: {0}", tr("Copy Tags")), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE);
-            Main.registerActionShortcut(this, sc);
+            MainApplication.registerActionShortcut(this, sc);
             sc.setAccelerator(this);
         }
 
@@ -1414,8 +1416,8 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             try {
                 tagRowSorter.convertRowIndexToModel(tagTable.getSelectedRow());
             } catch (IndexOutOfBoundsException ignore) {
-                Main.trace(ignore);
-                Main.trace("Clearing tagTable selection");
+                Logging.trace(ignore);
+                Logging.trace("Clearing tagTable selection");
                 tagTable.clearSelection();
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollection.java b/src/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollection.java
index 264b5d9..5b0e65b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollection.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollection.java
@@ -7,11 +7,15 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.data.preferences.CollectionProperty;
 
+/**
+ * Manages list of recently used tags that will be displayed in the {@link PropertiesDialog}.
+ */
 class RecentTagCollection {
 
     /**
@@ -77,11 +81,11 @@ class RecentTagCollection {
         recentTags.keySet().removeIf(tagsToIgnore::match);
     }
 
-    public void setTagsToIgnore(SearchAction.SearchSetting tagsToIgnore) throws SearchCompiler.ParseError {
+    public void setTagsToIgnore(SearchSetting tagsToIgnore) throws SearchParseError {
         setTagsToIgnore(tagsToIgnore.text.isEmpty() ? SearchCompiler.Never.INSTANCE : SearchCompiler.compile(tagsToIgnore));
     }
 
-    public SearchAction.SearchSetting ignoreTag(Tag tagToIgnore, SearchAction.SearchSetting settingToUpdate) throws SearchCompiler.ParseError {
+    public SearchSetting ignoreTag(Tag tagToIgnore, SearchSetting settingToUpdate) throws SearchParseError {
         final String forTag = SearchCompiler.buildSearchStringForTag(tagToIgnore.getKey(), tagToIgnore.getValue());
         settingToUpdate.text = settingToUpdate.text.isEmpty()
                 ? forTag
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java b/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java
index 61fc30b..b208518 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/SearchBasedRowFilter.java
@@ -4,12 +4,12 @@ package org.openstreetmap.josm.gui.dialogs.properties;
 import javax.swing.RowFilter;
 import javax.swing.table.TableModel;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 
 /**
  * A {@link RowFilter} implementation which matches tags w.r.t. the specified filter's
- * {@link org.openstreetmap.josm.actions.search.SearchCompiler.Match#match(org.openstreetmap.josm.data.osm.Tagged)} method.
+ * {@link org.openstreetmap.josm.data.osm.search.SearchCompiler.Match#match(org.openstreetmap.josm.data.osm.Tagged)} method.
  *
  * <p>An {@link javax.swing.RowFilter.Entry}'s column 0 is considered as key, and column 1 is considered as value.</p>
  */
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
index 72e7490..8b930bc 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
@@ -63,12 +63,14 @@ import javax.swing.text.JTextComponent;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.CollectionProperty;
 import org.openstreetmap.josm.data.preferences.EnumProperty;
@@ -76,6 +78,7 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.IExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
@@ -84,12 +87,13 @@ import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.io.XmlWriter;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Class that helps PropertiesDialog add and edit tag values.
@@ -107,7 +111,7 @@ public class TagEditHelper {
     private String changedKey;
     private String objKey;
 
-    private final Comparator<AutoCompletionListItem> defaultACItemComparator =
+    static final Comparator<AutoCompletionListItem> DEFAULT_AC_ITEM_COMPARATOR =
             (o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
 
     /** Default number of recent tags */
@@ -126,7 +130,7 @@ public class TagEditHelper {
     public static final CollectionProperty PROPERTY_RECENT_TAGS = new CollectionProperty("properties.recent-tags",
             Collections.<String>emptyList());
     public static final StringProperty PROPERTY_TAGS_TO_IGNORE = new StringProperty("properties.recent-tags.ignore",
-            new SearchAction.SearchSetting().writeToString());
+            new SearchSetting().writeToString());
 
     /**
      * What to do with recent tags where keys already exist
@@ -159,7 +163,7 @@ public class TagEditHelper {
         "properties.refresh-recently-added-tags", RefreshRecent.class, RefreshRecent.STATUS);
 
     final RecentTagCollection recentTags = new RecentTagCollection(MAX_LRU_TAGS_NUMBER);
-    SearchAction.SearchSetting tagsToIgnore;
+    SearchSetting tagsToIgnore;
 
     /**
      * Copy of recently added tags in sorted from newest to oldest order.
@@ -203,11 +207,10 @@ public class TagEditHelper {
      * @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) {
+    boolean containsDataKey(String key) {
         return IntStream.range(0, tagData.getRowCount())
-                .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();
+                .anyMatch(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*/);
     }
 
     /**
@@ -327,22 +330,22 @@ public class TagEditHelper {
     }
 
     void loadTagsToIgnore() {
-        final SearchAction.SearchSetting searchSetting = Utils.firstNonNull(
-                SearchAction.SearchSetting.readFromString(PROPERTY_TAGS_TO_IGNORE.get()), new SearchAction.SearchSetting());
+        final SearchSetting searchSetting = Utils.firstNonNull(
+                SearchSetting.readFromString(PROPERTY_TAGS_TO_IGNORE.get()), new SearchSetting());
         if (!Objects.equals(tagsToIgnore, searchSetting)) {
             try {
                 tagsToIgnore = searchSetting;
                 recentTags.setTagsToIgnore(tagsToIgnore);
-            } catch (SearchCompiler.ParseError parseError) {
+            } catch (SearchParseError parseError) {
                 warnAboutParseError(parseError);
-                tagsToIgnore = new SearchAction.SearchSetting();
+                tagsToIgnore = new SearchSetting();
                 recentTags.setTagsToIgnore(SearchCompiler.Never.INSTANCE);
             }
         }
     }
 
-    private static void warnAboutParseError(SearchCompiler.ParseError parseError) {
-        Main.warn(parseError);
+    private static void warnAboutParseError(SearchParseError parseError) {
+        Logging.warn(parseError);
         JOptionPane.showMessageDialog(
                 Main.parent,
                 parseError.getMessage(),
@@ -442,9 +445,9 @@ public class TagEditHelper {
             JPanel p = new JPanel(new GridBagLayout());
             mainPanel.add(p, BorderLayout.CENTER);
 
-            AutoCompletionManager autocomplete = Main.getLayerManager().getEditLayer().data.getAutoCompletionManager();
+            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
             List<AutoCompletionListItem> keyList = autocomplete.getKeys();
-            keyList.sort(defaultACItemComparator);
+            keyList.sort(DEFAULT_AC_ITEM_COMPARATOR);
 
             keys = new AutoCompletingComboBox(key);
             keys.setPossibleACItems(keyList);
@@ -505,7 +508,7 @@ public class TagEditHelper {
             if (key.equals(newkey) && tr("<different>").equals(value))
                 return;
             if (key.equals(newkey) || value == null) {
-                Main.main.undoRedo.add(new ChangePropertyCommand(sel, newkey, value));
+                MainApplication.undoRedo.add(new ChangePropertyCommand(sel, newkey, value));
                 AutoCompletionManager.rememberUserInput(newkey, value, true);
             } else {
                 for (OsmPrimitive osm: sel) {
@@ -539,7 +542,7 @@ public class TagEditHelper {
                     commands.add(new ChangePropertyCommand(sel, newkey, value));
                     AutoCompletionManager.rememberUserInput(newkey, value, false);
                 }
-                Main.main.undoRedo.add(new SequenceCommand(
+                MainApplication.undoRedo.add(new SequenceCommand(
                         trn("Change properties of up to {0} object",
                                 "Change properties of up to {0} objects", sel.size(), sel.size()),
                                 commands));
@@ -637,9 +640,7 @@ public class TagEditHelper {
 
                    List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
                    valueList.sort(comparator);
-                   if (Main.isTraceEnabled()) {
-                       Main.trace("Focus gained by {0}, e={1}", values, e);
-                   }
+                   Logging.trace("Focus gained by {0}, e={1}", values, e);
                    values.setPossibleACItems(valueList);
                    values.getEditor().selectAll();
                    objKey = key;
@@ -690,13 +691,13 @@ public class TagEditHelper {
                 +"<br><br>"+tr("Please select a key")), GBC.eol().fill(GBC.HORIZONTAL));
 
             cacheRecentTags();
-            AutoCompletionManager autocomplete = Main.getLayerManager().getEditLayer().data.getAutoCompletionManager();
+            AutoCompletionManager autocomplete = MainApplication.getLayerManager().getEditLayer().data.getAutoCompletionManager();
             List<AutoCompletionListItem> keyList = autocomplete.getKeys();
 
             // remove the object's tag keys from the list
             keyList.removeIf(item -> containsDataKey(item.getValue()));
 
-            keyList.sort(defaultACItemComparator);
+            keyList.sort(DEFAULT_AC_ITEM_COMPARATOR);
             keys.setPossibleACItems(keyList);
             keys.setEditable(true);
 
@@ -715,7 +716,7 @@ public class TagEditHelper {
                         values.setSelectedItem(tag.getValue());
                     });
 
-            focus = addFocusAdapter(autocomplete, defaultACItemComparator);
+            focus = addFocusAdapter(autocomplete, DEFAULT_AC_ITEM_COMPARATOR);
             // fire focus event in advance or otherwise the popup list will be too small at first
             focus.focusGained(null);
 
@@ -838,7 +839,7 @@ public class TagEditHelper {
                         return;
                     }
                 } catch (NumberFormatException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                 }
                 JOptionPane.showMessageDialog(this, tr("Please enter integer number between 0 and {0}", MAX_LRU_TAGS_NUMBER));
             }
@@ -1009,7 +1010,7 @@ public class TagEditHelper {
                         recentTags.ignoreTag(tag, tagsToIgnore);
                         PROPERTY_TAGS_TO_IGNORE.put(tagsToIgnore.writeToString());
                     }
-                } catch (SearchCompiler.ParseError parseError) {
+                } catch (SearchParseError parseError) {
                     throw new IllegalStateException(parseError);
                 }
             }
@@ -1023,7 +1024,7 @@ public class TagEditHelper {
 
             @Override
             public void actionPerformed(ActionEvent e) {
-                final SearchAction.SearchSetting newTagsToIngore = SearchAction.showSearchDialog(tagsToIgnore);
+                final SearchSetting newTagsToIngore = SearchAction.showSearchDialog(tagsToIgnore);
                 if (newTagsToIngore == null) {
                     return;
                 }
@@ -1031,7 +1032,7 @@ public class TagEditHelper {
                     tagsToIgnore = newTagsToIngore;
                     recentTags.setTagsToIgnore(tagsToIgnore);
                     PROPERTY_TAGS_TO_IGNORE.put(tagsToIgnore.writeToString());
-                } catch (SearchCompiler.ParseError parseError) {
+                } catch (SearchParseError parseError) {
                     warnAboutParseError(parseError);
                 }
             }
@@ -1068,7 +1069,7 @@ public class TagEditHelper {
             valueCount.put(key, new TreeMap<String, Integer>());
             AutoCompletionManager.rememberUserInput(key, value, false);
             commandCount++;
-            Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, value));
+            MainApplication.undoRedo.add(new ChangePropertyCommand(sel, key, value));
             changedKey = key;
             clearEntries();
         }
@@ -1079,7 +1080,7 @@ public class TagEditHelper {
         }
 
         public void undoAllTagsAdding() {
-            Main.main.undoRedo.undo(commandCount);
+            MainApplication.undoRedo.undo(commandCount);
         }
 
         private void refreshRecentTags() {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
index d243662..347da55 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
@@ -30,21 +30,23 @@ import javax.swing.tree.TreePath;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiException;
 import org.openstreetmap.josm.io.OsmServerObjectReader;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -224,7 +226,7 @@ public class ChildRelationBrowser extends JPanel {
         }
 
         public void run() {
-            Main.worker.submit(new DownloadAllChildrenTask(getParentDialog(), (Relation) model.getRoot()));
+            MainApplication.worker.submit(new DownloadAllChildrenTask(getParentDialog(), (Relation) model.getRoot()));
         }
 
         @Override
@@ -261,7 +263,7 @@ public class ChildRelationBrowser extends JPanel {
             for (TreePath aSelection : selection) {
                 relations.add((Relation) aSelection.getLastPathComponent());
             }
-            Main.worker.submit(new DownloadRelationSetTask(getParentDialog(), relations));
+            MainApplication.worker.submit(new DownloadRelationSetTask(getParentDialog(), relations));
         }
 
         @Override
@@ -418,10 +420,10 @@ public class ChildRelationBrowser extends JPanel {
                     mergeDataSet(dataSet);
                     refreshView(r);
                 }
-                SwingUtilities.invokeLater(Main.map::repaint);
+                SwingUtilities.invokeLater(MainApplication.getMap()::repaint);
             } catch (OsmTransferException e) {
                 if (canceled) {
-                    Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                    Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                     return;
                 }
                 lastException = e;
@@ -470,7 +472,7 @@ public class ChildRelationBrowser extends JPanel {
                 }
             } catch (OsmTransferException e) {
                 if (canceled) {
-                    Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                    Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                     return;
                 }
                 lastException = e;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
index 14182a3..0b4bda4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
@@ -12,18 +12,19 @@ import java.util.Set;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.io.MultiFetchServerObjectReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -81,7 +82,7 @@ public class DownloadRelationMemberTask extends PleaseWaitRunnable {
 
     @Override
     protected void finish() {
-        Main.map.repaint();
+        MainApplication.getMap().repaint();
         if (canceled)
             return;
         if (lastException != null) {
@@ -138,7 +139,7 @@ public class DownloadRelationMemberTask extends PleaseWaitRunnable {
             });
         } catch (OsmTransferException e) {
             if (canceled) {
-                Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                 return;
             }
             lastException = e;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
index 83b1c9e..9411a44 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
@@ -9,17 +9,18 @@ import java.util.Collection;
 
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmServerObjectReader;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -100,11 +101,11 @@ public class DownloadRelationTask extends PleaseWaitRunnable {
             SwingUtilities.invokeAndWait(() -> {
                 layer.mergeFrom(allDownloads);
                 layer.onPostDownloadFromServer();
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
             });
         } catch (OsmTransferException | InvocationTargetException | InterruptedException e) {
             if (canceled) {
-                Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                 return;
             }
             lastException = e;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
index 44da538..0bdbbb1 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
@@ -52,12 +52,13 @@ import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.Tag;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.ScrollViewport;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
@@ -96,10 +97,11 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This dialog is for editing relations.
@@ -766,7 +768,7 @@ public class GenericRelationEditor extends RelationEditor {
             memberTableModel.unregister();
             memberTable.unregisterListeners();
             if (windowMenuItem != null) {
-                Main.main.menu.windowMenu.remove(windowMenuItem);
+                MainApplication.getMenu().windowMenu.remove(windowMenuItem);
                 windowMenuItem = null;
             }
             for (FlavorListener listener : clipboardListeners) {
@@ -796,7 +798,7 @@ public class GenericRelationEditor extends RelationEditor {
             }
         };
         focusAction.putValue("relationEditor", re);
-        return MainMenu.add(Main.main.menu.windowMenu, focusAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
+        return MainMenu.add(MainApplication.getMenu().windowMenu, focusAction, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
     }
 
     /**
@@ -840,7 +842,7 @@ public class GenericRelationEditor extends RelationEditor {
         int mods = shortcut.getModifiers();
         int code = shortcut.getKeyCode();
         if (code != KeyEvent.VK_INSERT && (mods == 0 || mods == InputEvent.SHIFT_DOWN_MASK)) {
-            Main.info(tr("Sorry, shortcut \"{0}\" can not be enabled in Relation editor dialog"), shortcut);
+            Logging.info(tr("Sorry, shortcut \"{0}\" can not be enabled in Relation editor dialog"), shortcut);
             return;
         }
         rootPane.getActionMap().put(actionName, action);
@@ -946,7 +948,7 @@ public class GenericRelationEditor extends RelationEditor {
             }
             return modified ? new ChangeCommand(orig, relation) : null;
         } catch (AddAbortException ign) {
-            Main.trace(ign);
+            Logging.trace(ign);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java b/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
index af3eaec..b88b55b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
@@ -1,7 +1,14 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs.relation;
 
+/**
+ * A listener that is called whenever a member should be made visible
+ */
 @FunctionalInterface
 public interface IMemberModelListener {
+    /**
+     * Requests the given member to become visible
+     * @param index The index of the member in the table.
+     */
     void makeMemberVisible(int index);
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
index fd4e2a2..d627852 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
@@ -5,6 +5,7 @@ import java.awt.Component;
 
 import javax.swing.AbstractCellEditor;
 import javax.swing.BorderFactory;
+import javax.swing.CellEditor;
 import javax.swing.JTable;
 import javax.swing.table.TableCellEditor;
 
@@ -13,6 +14,9 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 
+/**
+ * The {@link CellEditor} for the role cell in the table. Supports autocompletion.
+ */
 public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor {
     private final AutoCompletingTextField editor;
     private final transient DataSet ds;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
index b302240..f46755d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
@@ -27,6 +27,7 @@ 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.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
@@ -39,6 +40,9 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.HighlightHelper;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 
+/**
+ * The table of members a selected relation has.
+ */
 public class MemberTable extends OsmPrimitivesTable implements IMemberModelListener {
 
     /** the additional actions in popup menu */
@@ -107,7 +111,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
     }
 
     private transient ListSelectionListener highlighterListener = lse -> {
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
             final Set<OsmPrimitive> toHighlight = new HashSet<>();
             for (RelationMember r: sel) {
@@ -116,8 +120,8 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
                 }
             }
             SwingUtilities.invokeLater(() -> {
-                if (Main.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
-                    Main.map.mapView.repaint();
+                if (MainApplication.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
+                    MainApplication.getMap().mapView.repaint();
                 }
             });
         }
@@ -127,24 +131,24 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         highlightEnabled = Main.pref.getBoolean("draw.target-highlight", true);
         if (!highlightEnabled) return;
         getMemberTableModel().getSelectionModel().addListSelectionListener(highlighterListener);
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             HighlightHelper.clearAllHighlighted();
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
     }
 
     @Override
     public void registerListeners() {
-        Main.getLayerManager().addLayerChangeListener(zoomToGap);
-        Main.getLayerManager().addActiveLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().addLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(zoomToGap);
         super.registerListeners();
     }
 
     @Override
     public void unregisterListeners() {
         super.unregisterListeners();
-        Main.getLayerManager().removeLayerChangeListener(zoomToGap);
-        Main.getLayerManager().removeActiveLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().removeLayerChangeListener(zoomToGap);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(zoomToGap);
     }
 
     public void stopHighlighting() {
@@ -152,9 +156,9 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         if (!highlightEnabled) return;
         getMemberTableModel().getSelectionModel().removeListSelectionListener(highlighterListener);
         highlighterListener = null;
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             HighlightHelper.clearAllHighlighted();
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
     }
 
@@ -237,7 +241,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
 
         private void updateEnabledState() {
             setEnabled(Main.main != null
-                    && Main.getLayerManager().getEditLayer() == getLayer()
+                    && MainApplication.getLayerManager().getEditLayer() == getLayer()
                     && getSelectedRowCount() == 1
                     && hasGap());
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java
index 5e6fe9a..7e05bd4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java
@@ -9,6 +9,9 @@ import javax.swing.table.TableColumn;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 
+/**
+ * This is the column model for the {@link MemberTable}
+ */
 public class MemberTableColumnModel extends DefaultTableColumnModel {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
index 3e5e740..429f3a2 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
@@ -14,6 +14,9 @@ import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * This class renders the link column of the member table. It shows if the way segments are connected or not.
+ */
 public class MemberTableLinkedCellRenderer extends MemberTableCellRenderer {
 
     private static final Image ARROW_UP = ImageProvider.get("dialogs/relation", "arrowup").getImage();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
index 75ae1ed..ce86b29 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
@@ -6,8 +6,8 @@ import java.awt.Dimension;
 
 import javax.swing.JTable;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
index addc129..80db2b7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
@@ -20,7 +20,6 @@ import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -35,6 +34,7 @@ import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionTypeCalculator;
@@ -48,6 +48,9 @@ import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
+/**
+ * This is the base model used for the {@link MemberTable}. It holds the member data.
+ */
 public class MemberTableModel extends AbstractTableModel
 implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPrimitivesTableModel {
 
@@ -110,7 +113,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     /* --------------------------------------------------------------------------- */
     @Override
     public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        if (Main.getLayerManager().getEditLayer() != this.layer) return;
+        if (MainApplication.getLayerManager().getEditLayer() != this.layer) return;
         // just trigger a repaint
         Collection<RelationMember> sel = getSelectedMembers();
         fireTableDataChanged();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRenderer.java
index 636241e..7a835a7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableRoleCellRenderer.java
@@ -5,6 +5,9 @@ import java.awt.Component;
 
 import javax.swing.JTable;
 
+/**
+ * This renderer renders the role cell.
+ */
 public class MemberTableRoleCellRenderer extends MemberTableCellRenderer {
     @Override
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
index d519742..cf3e863 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
@@ -13,7 +13,6 @@ import javax.swing.JComponent;
 import javax.swing.JTable;
 import javax.swing.TransferHandler;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
@@ -21,6 +20,7 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A transfer handler that helps with importing / exporting members for relations.
@@ -90,7 +90,7 @@ public class MemberTransferHandler extends TransferHandler {
                 return false;
             }
         } catch (IOException | UnsupportedFlavorException e) {
-            Main.warn(e);
+            Logging.warn(e);
             return false;
         }
     }
@@ -146,7 +146,7 @@ public class MemberTransferHandler extends TransferHandler {
         protected RelationMember importPrimitive(MemberTable destination, T data) {
             final OsmPrimitive p = destination.getLayer().data.getPrimitiveById(data);
             if (p == null) {
-                Main.warn(tr("Cannot add {0} since it is not part of dataset", data));
+                Logging.warn(tr("Cannot add {0} since it is not part of dataset", data));
                 return null;
             } else {
                 return getMember(destination, data, p);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
index a85c6cc..97e6ecc 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
@@ -17,11 +17,12 @@ import org.openstreetmap.josm.data.osm.DataSetMerger;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmServerBackreferenceReader;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -31,7 +32,7 @@ import org.xml.sax.SAXException;
  * <pre>
  *  final ParentRelationLoadingTask task = new ParentRelationLoadingTask(
  *                   child,   // the child relation
- *                   Main.getLayerManager().getEditLayer(), // the edit layer
+ *                   MainApplication.getLayerManager().getEditLayer(), // the edit layer
  *                   true,  // load fully
  *                   new PleaseWaitProgressMonitor()  // a progress monitor
  *   );
@@ -46,7 +47,7 @@ import org.xml.sax.SAXException;
  *   );
  *
  *   // start the task
- *   Main.worker.submit(task);
+ *   MainApplication.worker.submit(task);
  * </pre>
  *
  */
@@ -178,7 +179,7 @@ public class ParentRelationLoadingTask extends PleaseWaitRunnable {
             }
         } catch (OsmTransferException e) {
             if (canceled) {
-                Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                 return;
             }
             lastException = e;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
index 4c18f86..e20d18c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
@@ -21,11 +21,11 @@ import javax.swing.event.ListDataListener;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -114,7 +114,7 @@ public class ReferringRelationsBrowser extends JPanel {
                         return;
                     model.populate(task.getParents());
                 });
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java
index 62b507e..104f263 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java
@@ -10,6 +10,11 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 
+/**
+ * This is the model for the {@link ReferringRelationsBrowser}.
+ * <p>
+ * It holds all referrers to a given relation
+ */
 public class ReferringRelationsBrowserModel extends AbstractListModel<Relation> {
 
     /** the relation */
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
index 5b8e561..3ea82b5 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
@@ -12,8 +12,8 @@ import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -38,7 +38,7 @@ public class RelationDialogManager extends WindowAdapter implements LayerChangeL
     public static RelationDialogManager getRelationDialogManager() {
         if (RelationDialogManager.relationDialogManager == null) {
             RelationDialogManager.relationDialogManager = new RelationDialogManager();
-            Main.getLayerManager().addLayerChangeListener(RelationDialogManager.relationDialogManager);
+            MainApplication.getLayerManager().addLayerChangeListener(RelationDialogManager.relationDialogManager);
         }
         return RelationDialogManager.relationDialogManager;
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
index 615b77d..cb2747a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
@@ -16,6 +16,7 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Abstract relation editor.
@@ -106,7 +107,7 @@ public abstract class RelationEditor extends ExtendedDialog implements IRelation
                     return e.getConstructor(Relation.class, Collection.class).newInstance(layer, r, selectedMembers);
                 }
             } catch (ReflectiveOperationException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
         }
         if (RelationDialogManager.getRelationDialogManager().isOpenInEditor(layer, r))
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
index 9eff2ea..eefa43d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
@@ -14,17 +14,18 @@ import javax.swing.event.TreeWillExpandListener;
 import javax.swing.tree.ExpandVetoException;
 import javax.swing.tree.TreePath;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmServerObjectReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -93,7 +94,7 @@ public class RelationTree extends JTree {
                 // we don't load complete  or new relations
                 return;
             // launch the download task
-            Main.worker.submit(new RelationLoader(getParentDialog(), parent, path));
+            MainApplication.worker.submit(new RelationLoader(getParentDialog(), parent, path));
         }
     }
 
@@ -131,13 +132,14 @@ public class RelationTree extends JTree {
             if (canceled)
                 return;
             if (lastException != null) {
-                Main.error(lastException);
+                Logging.error(lastException);
                 return;
             }
-            DataSetMerger visitor = new DataSetMerger(Main.getLayerManager().getEditLayer().data, ds);
+            DataSet editData = MainApplication.getLayerManager().getEditDataSet();
+            DataSetMerger visitor = new DataSetMerger(editData, ds);
             visitor.merge();
             if (!visitor.getConflicts().isEmpty()) {
-                Main.getLayerManager().getEditLayer().getConflicts().add(visitor.getConflicts());
+                editData.getConflicts().add(visitor.getConflicts());
             }
             final RelationTreeModel model = (RelationTreeModel) getModel();
             SwingUtilities.invokeLater(() -> model.refreshNode(path));
@@ -151,7 +153,7 @@ public class RelationTree extends JTree {
                         .createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
             } catch (OsmTransferException e) {
                 if (canceled) {
-                    Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
+                    Logging.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
                     return;
                 }
                 this.lastException = e;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRenderer.java
index 80191cb..01a953b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeCellRenderer.java
@@ -9,8 +9,8 @@ import javax.swing.JLabel;
 import javax.swing.JTree;
 import javax.swing.tree.TreeCellRenderer;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
index 0cdb59f..d184695 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
@@ -6,10 +6,10 @@ import java.util.List;
 
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -19,6 +19,9 @@ import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListen
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
+/**
+ * This table shows the primitives that are currently selected in the main OSM view.
+ */
 public class SelectionTableModel extends AbstractTableModel implements SelectionChangedListener, ActiveLayerChangeListener, LayerChangeListener {
 
     /** this selection table model only displays selected primitives in this layer */
@@ -26,7 +29,7 @@ public class SelectionTableModel extends AbstractTableModel implements Selection
     private final transient List<OsmPrimitive> cache;
 
     /**
-     * constructor
+     * Creates a new {@link SelectionTableModel} for a given layer
      *
      * @param layer  the data layer. Must not be null.
      * @throws IllegalArgumentException if layer is null
@@ -43,7 +46,7 @@ public class SelectionTableModel extends AbstractTableModel implements Selection
      */
     public void register() {
         DataSet.addSelectionListener(this);
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
     /**
@@ -51,7 +54,7 @@ public class SelectionTableModel extends AbstractTableModel implements Selection
      */
     public void unregister() {
         DataSet.removeSelectionListener(this);
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
     @Override
@@ -61,7 +64,7 @@ public class SelectionTableModel extends AbstractTableModel implements Selection
 
     @Override
     public int getRowCount() {
-        if (Main.getLayerManager().getEditLayer() != layer)
+        if (MainApplication.getLayerManager().getEditLayer() != layer)
             return 0;
         return cache.size();
     }
@@ -103,7 +106,7 @@ public class SelectionTableModel extends AbstractTableModel implements Selection
 
     @Override
     public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        if (layer == Main.getLayerManager().getEditLayer()) {
+        if (layer == MainApplication.getLayerManager().getEditLayer()) {
             cache.clear();
             cache.addAll(newSelection);
         } else {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java
index 29b315a..69ad906 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java
@@ -5,12 +5,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Add all objects selected in the current dataset after the last selected member.
@@ -42,7 +42,7 @@ public class AddSelectedAfterSelection extends AddFromSelectionAction {
             memberTableModel.addMembersAfterIdx(filterConfirmedPrimitives(selectionTableModel.getSelection()),
                     memberTableModel.getSelectionModel().getMaxSelectionIndex());
         } catch (AddAbortException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java
index 65027c5..f4f35cc 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java
@@ -5,12 +5,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Add all objects selected in the current dataset after the last member.
@@ -41,7 +41,7 @@ public class AddSelectedAtEndAction extends AddFromSelectionAction {
         try {
             memberTableModel.addMembersAtEnd(filterConfirmedPrimitives(selectionTableModel.getSelection()));
         } catch (AddAbortException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java
index 522ef4f..6c62483 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java
@@ -5,12 +5,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Add all objects selected in the current dataset before the first member.
@@ -41,7 +41,7 @@ public class AddSelectedAtStartAction extends AddFromSelectionAction {
         try {
             memberTableModel.addMembersAtBeginning(filterConfirmedPrimitives(selectionTableModel.getSelection()));
         } catch (AddAbortException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java
index 4578bb5..12bf414 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java
@@ -5,12 +5,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Add all objects selected in the current dataset before the first selected member.
@@ -42,7 +42,7 @@ public class AddSelectedBeforeSelection extends AddFromSelectionAction {
             memberTableModel.addMembersBeforeIdx(filterConfirmedPrimitives(selectionTableModel.getSelection()),
                     memberTableModel.getSelectionModel().getMinSelectionIndex());
         } catch (AddAbortException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java
index 06f6577..d3bc74a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java
@@ -8,10 +8,11 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
+import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
-import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -47,7 +48,7 @@ public class DownloadIncompleteMembersAction extends AbstractRelationEditorActio
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled())
             return;
-        Main.worker.submit(new DownloadRelationMemberTask(
+        MainApplication.worker.submit(new DownloadRelationMemberTask(
                 editor.getRelation(),
                 memberTableModel.getIncompleteMemberPrimitives(),
                 layer,
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java
index df947c5..019985f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java
@@ -7,6 +7,7 @@ import java.awt.Dialog;
 import java.awt.event.ActionEvent;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
@@ -42,7 +43,7 @@ public class DownloadSelectedIncompleteMembersAction extends AbstractRelationEdi
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled())
             return;
-        Main.worker.submit(new DownloadRelationMemberTask(
+        MainApplication.worker.submit(new DownloadRelationMemberTask(
                 editor.getRelation(),
                 memberTableModel.getSelectedIncompleteMemberPrimitives(),
                 layer,
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 7c49625..dd0d969 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
@@ -8,12 +8,12 @@ import java.util.Optional;
 
 import javax.swing.TransferHandler.TransferSupport;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTransferHandler;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Paste members.
@@ -37,7 +37,7 @@ public class PasteMembersAction extends AddFromSelectionAction implements Flavor
         try {
             new MemberTransferHandler().importData(getSupport());
         } catch (IllegalStateException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
@@ -51,7 +51,7 @@ public class PasteMembersAction extends AddFromSelectionAction implements Flavor
         try {
             setEnabled(new MemberTransferHandler().canImport(getSupport()));
         } catch (IllegalStateException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
index 9abdce4..cd319ff 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
@@ -13,6 +13,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
@@ -49,7 +50,7 @@ public class RefreshAction extends SavingAction implements CommandQueueListener
             ((JComponent) editor).getRootPane().getActionMap().put("refresh", this);
             ((JComponent) editor).getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), "refresh");
         }
-        Main.main.undoRedo.addCommandQueueListener(this);
+        MainApplication.undoRedo.addCommandQueueListener(this);
         updateEnabledState();
     }
 
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 0cdf451..2816047 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
@@ -15,11 +15,12 @@ import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.conflict.ConflictAddCommand;
 import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
@@ -71,7 +72,7 @@ abstract class SavingAction extends AbstractRelationEditorAction {
         // tags, don't add an empty relation
         if (newRelation.getMembersCount() == 0 && !newRelation.hasKeys())
             return;
-        Main.main.undoRedo.add(new AddCommand(layer, newRelation));
+        MainApplication.undoRedo.add(new AddCommand(layer, newRelation));
 
         // make sure everybody is notified about the changes
         //
@@ -81,7 +82,7 @@ abstract class SavingAction extends AbstractRelationEditorAction {
                     layer, editor.getRelation(), (RelationEditor) editor);
         }
         // Relation list gets update in EDT so selecting my be postponed to following EDT run
-        SwingUtilities.invokeLater(() -> Main.map.relationListDialog.selectRelation(newRelation));
+        SwingUtilities.invokeLater(() -> MainApplication.getMap().relationListDialog.selectRelation(newRelation));
     }
 
     /**
@@ -93,7 +94,7 @@ abstract class SavingAction extends AbstractRelationEditorAction {
         tagEditorModel.applyToPrimitive(editedRelation);
         memberTableModel.applyToRelation(editedRelation);
         Conflict<Relation> conflict = new Conflict<>(editor.getRelation(), editedRelation);
-        Main.main.undoRedo.add(new ConflictAddCommand(layer, conflict));
+        MainApplication.undoRedo.add(new ConflictAddCommand(layer, conflict));
     }
 
     /**
@@ -105,7 +106,7 @@ abstract class SavingAction extends AbstractRelationEditorAction {
         tagEditorModel.applyToPrimitive(editedRelation);
         memberTableModel.applyToRelation(editedRelation);
         if (!editedRelation.hasEqualSemanticAttributes(editor.getRelation(), false)) {
-            Main.main.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
+            MainApplication.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
         }
     }
 
@@ -139,7 +140,7 @@ abstract class SavingAction extends AbstractRelationEditorAction {
                         "/Dialog/RelationEditor#RelationChangedOutsideOfEditor"
         );
         if (ret == 0) {
-            Main.map.conflictDialog.unfurlDialog();
+            MainApplication.getMap().conflictDialog.unfurlDialog();
         }
         return ret == 0;
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java
index a9af2e8..c0f00f8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java
@@ -11,6 +11,9 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
 
+/**
+ * Utility classes for the {@link RelationSorter}.
+ */
 final class RelationSortUtils {
 
     private RelationSortUtils() {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
index ddcdcf2..b58159c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
@@ -11,13 +11,18 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 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.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Utils;
 
+/**
+ * This class sorts the relation members by connectivity.
+ * <p>
+ * Multiple {@link AdditionalSorter}s are implemented to handle special relation types.
+ */
 public class RelationSorter {
 
     private interface AdditionalSorter {
@@ -169,6 +174,11 @@ public class RelationSorter {
         return newMembers;
     }
 
+    /**
+     * Sorts a list of members by connectivity
+     * @param defaultMembers The members to sort
+     * @return A sorted list of the same members
+     */
     public static List<RelationMember> sortMembersByConnectivity(List<RelationMember> defaultMembers) {
 
         List<RelationMember> newMembers = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
index 47a6f71..9dbe952 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
@@ -4,13 +4,17 @@ package org.openstreetmap.josm.gui.dialogs.relation.sort;
 import static org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction.NONE;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+/**
+ * A class used by the {@link RelationSorter} to store if two ways are already connected
+ */
 public class WayConnectionType {
 
     /** True, if the corresponding primitive is not a way or the way is incomplete */
     private final boolean invalid;
 
-    /** True, if linked to the previous / next member.  */
+    /** True, if linked to the previous member.  */
     public boolean linkPrev;
+    /** True, if linked to the next member.  */
     public boolean linkNext;
 
     /**
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 42f4a9e..f7b95c6 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
@@ -15,6 +15,9 @@ import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direct
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
+/**
+ * This class calculates the {@link WayConnectionType} for a given list of members
+ */
 public class WayConnectionTypeCalculator {
 
     private static final int UNCONNECTED = Integer.MIN_VALUE;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
index 20fd1e6..19d41e5 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
@@ -8,15 +8,12 @@ import java.awt.event.MouseEvent;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.EnumMap;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.TreeMap;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.swing.JTree;
 import javax.swing.ToolTipManager;
@@ -26,7 +23,6 @@ import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
-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.event.AbstractDatasetChangedEvent;
@@ -39,12 +35,13 @@ import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
+import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
-import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ListenerList;
 
@@ -183,20 +180,14 @@ public class ValidatorTreePanel extends JTree implements Destroyable, DataSetLis
         }
 
         Predicate<TestError> filterToUse = e -> !e.isIgnored();
-        if (!ValidatorPreference.PREF_OTHER.get()) {
+        if (!ValidatorPrefHelper.PREF_OTHER.get()) {
             filterToUse = filterToUse.and(e -> e.getSeverity() != Severity.OTHER);
         }
         if (filter != null) {
             filterToUse = filterToUse.and(e -> e.getPrimitives().stream().anyMatch(filter::contains));
         }
         Map<Severity, Map<String, Map<String, List<TestError>>>> errorsBySeverityMessageDescription
-            = errors.stream().filter(filterToUse).collect(
-                    Collectors.groupingBy(TestError::getSeverity, () -> new EnumMap<>(Severity.class),
-                            Collectors.groupingBy(TestError::getMessage, () -> new TreeMap<>(AlphanumComparator.getInstance()),
-                                    Collectors.groupingBy(e -> e.getDescription() == null ? "" : e.getDescription(),
-                                            () -> new TreeMap<>(AlphanumComparator.getInstance()),
-                                            Collectors.toList()
-                                    ))));
+            = OsmValidator.getErrorsBySeverityMessageDescription(errors, filterToUse);
 
         final List<TreePath> expandedPaths = new ArrayList<>();
         errorsBySeverityMessageDescription.forEach((severity, errorsByMessageDescription) -> {
@@ -424,7 +415,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable, DataSetLis
 
     @Override
     public void destroy() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.removeDataSetListener(this);
         }
diff --git a/src/org/openstreetmap/josm/gui/download/AbstractDownloadSourcePanel.java b/src/org/openstreetmap/josm/gui/download/AbstractDownloadSourcePanel.java
new file mode 100644
index 0000000..74d25b9
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/AbstractDownloadSourcePanel.java
@@ -0,0 +1,124 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import java.util.Objects;
+
+import javax.swing.Icon;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.download.DownloadSourceSizingPolicy.FixedDownloadSourceSizePolicy;
+
+/**
+ * GUI representation of {@link DownloadSource} that is shown to the user in
+ * {@link DownloadDialog}.
+ * @param <T> The type of the data that a download source uses.
+ * @since 12652
+ */
+public abstract class AbstractDownloadSourcePanel<T> extends JPanel {
+
+    /**
+     * A prefix to be used for tab height preferences
+     */
+    public static final String TAB_SPLIT_NAMESPACE = "download.tabsplit.";
+
+    /**
+     * Called when creating a new {@link AbstractDownloadSourcePanel} for the given download source
+     * @param downloadSource The download source this panel is for
+     */
+    public AbstractDownloadSourcePanel(final DownloadSource<T> downloadSource) {
+        Objects.requireNonNull(downloadSource);
+        this.downloadSource = downloadSource;
+    }
+
+    /**
+     * The download source of this panel.
+     */
+    protected transient DownloadSource<T> downloadSource;
+
+    /**
+     * Gets the data.
+     * @return Returns the data.
+     */
+    public abstract T getData();
+
+    /**
+     * Gets the download source of this panel.
+     * @return Returns the download source of this panel.
+     */
+    public DownloadSource<T> getDownloadSource() {
+        return this.downloadSource;
+    }
+
+    /**
+     * Saves the current user preferences devoted to the data source.
+     */
+    public abstract void rememberSettings();
+
+    /**
+     * Restores the latest user preferences devoted to the data source.
+     */
+    public abstract void restoreSettings();
+
+    /**
+     * Performs the logic needed in case if the user triggered the download
+     * action in {@link DownloadDialog}.
+     * @param settings The settings to check.
+     * @return Returns {@code true} if the required procedure of handling the
+     * download action succeeded and {@link DownloadDialog} can be closed, e.g. validation,
+     * otherwise {@code false}.
+     */
+    public abstract boolean checkDownload(DownloadSettings settings);
+
+    /**
+     * Performs the logic needed in case if the user triggered the cancel
+     * action in {@link DownloadDialog}.
+     */
+    public void checkCancel() {
+        // nothing, let download dialog to close
+        // override if necessary
+    }
+
+    /**
+     * Gets the icon of the download source panel.
+     * @return The icon. Can be {@code null} if there is no icon associated with
+     * this download source.
+     */
+    public Icon getIcon() {
+        return null;
+    }
+
+    /**
+     * Updates GUI components of the panel according to the bbox changes.
+     * @param bbox The new value for the bounding box.
+     */
+    public void boudingBoxChanged(Bounds bbox) {
+        // override this if the panel must react on bbox changes
+    }
+
+    /**
+     * Tells the {@link DownloadSource} to start downloading
+     * @param downloadSettings The download settings
+     */
+    public void triggerDownload(DownloadSettings downloadSettings) {
+        getDownloadSource().doDownload(getData(), downloadSettings);
+    }
+
+    /**
+     * Returns a simple name describing this panel. This string can be used from other GUI parts
+     * of JOSM to save the user preferences related to the GUI settings. For example, the panel for downloading
+     * the OSM data can be named 'downloadosmpanel'. Note, choose the name such that it is unique to avoid
+     * collisions with other names.
+     * @return A simple name describing this panel.
+     */
+    public abstract String getSimpleName();
+
+    /**
+     * Gets the policy that defines how this component should be sized
+     * @return The sizing policy. A fixed policy on default.
+     * @since 12705
+     */
+    public DownloadSourceSizingPolicy getSizingPolicy() {
+        return new FixedDownloadSourceSizePolicy(this);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/BookmarkList.java b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
index 5947e99..ca17e3f 100644
--- a/src/org/openstreetmap/josm/gui/download/BookmarkList.java
+++ b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
@@ -32,6 +32,7 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapViewState;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
@@ -39,6 +40,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * List class that read and save its content from the bookmark file.
@@ -202,7 +204,7 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
             if (zoom <= 3) {
                 // 3 is the default zoom level in OSM database, but the real zoom level was not correct
                 // for a long time, see https://github.com/openstreetmap/openstreetmap-website/issues/1592
-                zoom = 12;
+                zoom = 15;
             }
             Projection mercator = Projections.getProjectionByCode("EPSG:3857");
             setArea(MapViewState.createDefaultState(430, 400) // Size of map on osm.org user profile settings
@@ -254,8 +256,8 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
             try {
                 model.addElement(new HomeLocationBookmark());
             } catch (IllegalStateException e) {
-                Main.info(e.getMessage());
-                Main.trace(e);
+                Logging.info(e.getMessage());
+                Logging.trace(e);
             }
         }
         // Then add manual bookmarks previously saved in local preferences
@@ -266,7 +268,7 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
                 try {
                     bookmarks.add(new Bookmark(entry));
                 } catch (IllegalArgumentException e) {
-                    Main.error(e, tr("Error reading bookmark entry: %s", e.getMessage()));
+                    Logging.log(Logging.LEVEL_ERROR, tr("Error reading bookmark entry: %s", e.getMessage()), e);
                 }
             }
             Collections.sort(bookmarks);
@@ -332,7 +334,7 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
             if (!GraphicsEnvironment.isHeadless()) {
                 final ChangesetQueryTask task = new ChangesetQueryTask(this, query);
                 ChangesetCacheManager.getInstance().runDownloadTask(task);
-                Main.worker.submit(() -> {
+                MainApplication.worker.submit(() -> {
                     if (task.isCanceled() || task.isFailed())
                         return;
                     GuiHelper.runInEDT(() -> task.getDownloadedData().stream()
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
index a07340c..2ccf97b 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
@@ -5,12 +5,9 @@ import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BorderLayout;
-import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.Graphics;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
@@ -19,17 +16,22 @@ import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 import javax.swing.AbstractAction;
+import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
 import javax.swing.KeyStroke;
+import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
@@ -37,30 +39,31 @@ import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Bounds;
 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.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 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.util.WindowGeometry;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
-import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
- * Dialog displayed to download OSM and/or GPS data from OSM server.
+ * Dialog displayed to the user to download mapping data.
  */
 public class DownloadDialog extends JDialog {
-    private static final IntegerProperty DOWNLOAD_TAB = new IntegerProperty("download.tab", 0);
 
+    private static final IntegerProperty DOWNLOAD_TAB = new IntegerProperty("download.tab", 0);
+    private static final StringProperty DOWNLOAD_SOURCE_TAB = new StringProperty("download.source.tab", OSMDownloadSource.SIMPLE_NAME);
     private static final BooleanProperty DOWNLOAD_AUTORUN = new BooleanProperty("download.autorun", false);
-    private static final BooleanProperty DOWNLOAD_OSM = new BooleanProperty("download.osm", true);
-    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);
 
@@ -79,50 +82,44 @@ public class DownloadDialog extends JDialog {
         return instance;
     }
 
-    protected SlippyMapChooser slippyMapChooser;
+    protected final transient List<DownloadSource<?>> downloadSources = new ArrayList<>();
     protected final transient List<DownloadSelection> downloadSelections = new ArrayList<>();
     protected final JTabbedPane tpDownloadAreaSelectors = new JTabbedPane();
+    protected final DownloadSourceTabs downloadSourcesTab = new DownloadSourceTabs();
+
     protected JCheckBox cbNewLayer;
     protected JCheckBox cbStartup;
     protected JCheckBox cbZoomToDownloadedData;
-    protected final JLabel sizeCheck = new JLabel();
+    protected SlippyMapChooser slippyMapChooser;
+    protected JPanel mainPanel;
+    protected DownloadDialogSplitPane dialogSplit;
+
+    /*
+     * Keep the reference globally to avoid having it garbage collected
+     */
+    protected final transient ExpertToggleAction.ExpertModeChangeListener expertListener =
+            getExpertModeListenerForDownloadSources();
     protected transient Bounds currentBounds;
     protected boolean canceled;
 
-    protected JCheckBox cbDownloadOsmData;
-    protected JCheckBox cbDownloadGpxData;
-    protected JCheckBox cbDownloadNotes;
-    /** the download action and button */
-    private final DownloadAction actDownload = new DownloadAction();
-    protected final JButton btnDownload = new JButton(actDownload);
+    protected JButton btnDownload;
+    protected JButton btnCancel;
+    protected JButton btnHelp;
 
+    /**
+     * Builds the main panel of the dialog.
+     * @return The panel of the dialog.
+     */
     protected final JPanel buildMainPanel() {
-        JPanel pnl = new JPanel(new GridBagLayout());
-
-        // size check depends on selected data source
-        final ChangeListener checkboxChangeListener = e -> updateSizeCheck();
-
-        // adding the download tasks
-        pnl.add(new JLabel(tr("Data Sources and Types:")), GBC.std().insets(5, 5, 1, 5));
-        cbDownloadOsmData = new JCheckBox(tr("OpenStreetMap data"), true);
-        cbDownloadOsmData.setToolTipText(tr("Select to download OSM data in the selected download area."));
-        cbDownloadOsmData.getModel().addChangeListener(checkboxChangeListener);
-        pnl.add(cbDownloadOsmData, GBC.std().insets(1, 5, 1, 5));
-        cbDownloadGpxData = new JCheckBox(tr("Raw GPS data"));
-        cbDownloadGpxData.setToolTipText(tr("Select to download GPS traces in the selected download area."));
-        cbDownloadGpxData.getModel().addChangeListener(checkboxChangeListener);
-        pnl.add(cbDownloadGpxData, GBC.std().insets(5, 5, 1, 5));
-        cbDownloadNotes = new JCheckBox(tr("Notes"));
-        cbDownloadNotes.setToolTipText(tr("Select to download notes in the selected download area."));
-        cbDownloadNotes.getModel().addChangeListener(checkboxChangeListener);
-        pnl.add(cbDownloadNotes, GBC.eol().insets(50, 5, 1, 5));
+        mainPanel = new JPanel(new GridBagLayout());
+
+        // add default download sources
+        addDownloadSource(new OSMDownloadSource());
+        addDownloadSource(new OverpassDownloadSource());
 
         // must be created before hook
         slippyMapChooser = new SlippyMapChooser();
 
-        // hook for subclasses
-        buildMainPanelAboveDownloadSelections(pnl);
-
         // predefined download selections
         downloadSelections.add(slippyMapChooser);
         downloadSelections.add(new BookmarkSelection());
@@ -133,24 +130,24 @@ public class DownloadDialog extends JDialog {
         // add selections from plugins
         PluginHandler.addDownloadSelection(downloadSelections);
 
-        // now everybody may add their tab to the tabbed pane
-        // (not done right away to allow plugins to remove one of
-        // the default selectors!)
+        // register all default download selections
         for (DownloadSelection s : downloadSelections) {
             s.addGui(this);
         }
 
-        pnl.add(tpDownloadAreaSelectors, GBC.eol().fill());
+        // allow to collapse the panes, but reserve some space for tabs
+        downloadSourcesTab.setMinimumSize(new Dimension(0, 25));
+        tpDownloadAreaSelectors.setMinimumSize(new Dimension(0, 0));
 
-        try {
-            tpDownloadAreaSelectors.setSelectedIndex(DOWNLOAD_TAB.get());
-        } catch (IndexOutOfBoundsException ex) {
-            Main.trace(ex);
-            DOWNLOAD_TAB.put(0);
-        }
+        dialogSplit = new DownloadDialogSplitPane(
+                downloadSourcesTab,
+                tpDownloadAreaSelectors);
 
-        Font labelFont = sizeCheck.getFont();
-        sizeCheck.setFont(labelFont.deriveFont(Font.PLAIN, labelFont.getSize()));
+        ChangeListener tabChangedListener = getDownloadSourceTabChangeListener();
+        tabChangedListener.stateChanged(new ChangeEvent(downloadSourcesTab));
+        downloadSourcesTab.addChangeListener(tabChangedListener);
+
+        mainPanel.add(dialogSplit, GBC.eol().fill());
 
         cbNewLayer = new JCheckBox(tr("Download as new layer"));
         cbNewLayer.setToolTipText(tr("<html>Select to download data into a new data layer.<br>"
@@ -165,58 +162,47 @@ public class DownloadDialog extends JDialog {
         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));
+        mainPanel.add(cbNewLayer, GBC.std().anchor(GBC.WEST).insets(5, 5, 5, 5));
+        mainPanel.add(cbStartup, GBC.std().anchor(GBC.WEST).insets(15, 5, 5, 5));
+        mainPanel.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));
+        mainPanel.add(new JLabel(), GBC.eol()); // place info label at a new line
+        JLabel infoLabel = new JLabel(
+                tr("Use left click&drag to select area, arrows or right mouse button to scroll map, wheel or +/- to zoom."));
+        mainPanel.add(infoLabel, GBC.eol().anchor(GBC.CENTER).insets(0, 0, 0, 0));
 
-        if (!ExpertToggleAction.isExpert()) {
-            JLabel infoLabel = new JLabel(
-                    tr("Use left click&drag to select area, arrows or right mouse button to scroll map, wheel or +/- to zoom."));
-            pnl.add(infoLabel, GBC.eol().anchor(GBC.SOUTH).insets(0, 0, 0, 0));
-        }
-        return pnl;
-    }
+        ExpertToggleAction.addExpertModeChangeListener(isExpert -> infoLabel.setVisible(!isExpert), true);
 
-    /* This should not be necessary, but if not here, repaint is not always correct in SlippyMap! */
-    @Override
-    public void paint(Graphics g) {
-        tpDownloadAreaSelectors.getSelectedComponent().paint(g);
-        super.paint(g);
+        return mainPanel;
     }
 
+    /**
+     * Builds the button pane of the dialog.
+     * @return The button panel of the dialog.
+     */
     protected final JPanel buildButtonPanel() {
+        btnDownload = new JButton(new DownloadAction());
+        btnCancel = new JButton(new CancelAction());
+        btnHelp = new JButton(
+                new ContextSensitiveHelpAction(getRootPane().getClientProperty("help").toString()));
+
         JPanel pnl = new JPanel(new FlowLayout());
 
-        // -- download button
         pnl.add(btnDownload);
-        InputMapUtils.enableEnter(btnDownload);
-
-        InputMapUtils.addEnterActionWhenAncestor(cbDownloadGpxData, actDownload);
-        InputMapUtils.addEnterActionWhenAncestor(cbDownloadOsmData, actDownload);
-        InputMapUtils.addEnterActionWhenAncestor(cbDownloadNotes, actDownload);
-        InputMapUtils.addEnterActionWhenAncestor(cbNewLayer, actDownload);
-        InputMapUtils.addEnterActionWhenAncestor(cbStartup, actDownload);
-        InputMapUtils.addEnterActionWhenAncestor(cbZoomToDownloadedData, actDownload);
-
-        // -- cancel button
-        JButton btnCancel;
-        CancelAction actCancel = new CancelAction();
-        btnCancel = new JButton(actCancel);
         pnl.add(btnCancel);
-        InputMapUtils.enableEnter(btnCancel);
-
-        // -- cancel on ESC
-        InputMapUtils.addEscapeAction(getRootPane(), actCancel);
-
-        // -- help button
-        JButton btnHelp = new JButton(new ContextSensitiveHelpAction(getRootPane().getClientProperty("help").toString()));
         pnl.add(btnHelp);
+
+        InputMapUtils.enableEnter(btnDownload);
+        InputMapUtils.enableEnter(btnCancel);
+        InputMapUtils.addEscapeAction(getRootPane(), btnCancel.getAction());
         InputMapUtils.enableEnter(btnHelp);
 
+        InputMapUtils.addEnterActionWhenAncestor(cbNewLayer, btnDownload.getAction());
+        InputMapUtils.addEnterActionWhenAncestor(cbStartup, btnDownload.getAction());
+        InputMapUtils.addEnterActionWhenAncestor(cbZoomToDownloadedData, btnDownload.getAction());
+
         return pnl;
     }
 
@@ -257,37 +243,19 @@ public class DownloadDialog extends JDialog {
             }
         });
         addWindowListener(new WindowEventHandler());
+        ExpertToggleAction.addExpertModeChangeListener(expertListener);
         restoreSettings();
-    }
 
-    protected void updateSizeCheck() {
-        boolean isAreaTooLarge = false;
+        // if no bounding box is selected make sure it is still propagated.
         if (currentBounds == null) {
-            sizeCheck.setText(tr("No area selected yet"));
-            sizeCheck.setForeground(Color.darkGray);
-        } else if (isDownloadNotes() && !isDownloadOsmData() && !isDownloadGpxData()) {
-            // see max_note_request_area in https://github.com/openstreetmap/openstreetmap-website/blob/master/config/example.application.yml
-            isAreaTooLarge = currentBounds.getArea() > Main.pref.getDouble("osm-server.max-request-area-notes", 25);
-        } else {
-            // see max_request_area in https://github.com/openstreetmap/openstreetmap-website/blob/master/config/example.application.yml
-            isAreaTooLarge = currentBounds.getArea() > Main.pref.getDouble("osm-server.max-request-area", 0.25);
-        }
-        displaySizeCheckResult(isAreaTooLarge);
-    }
-
-    protected void displaySizeCheckResult(boolean isAreaTooLarge) {
-        if (isAreaTooLarge) {
-            sizeCheck.setText(tr("Download area too large; will probably be rejected by server"));
-            sizeCheck.setForeground(Color.red);
-        } else {
-            sizeCheck.setText(tr("Download area ok, size probably acceptable to server"));
-            sizeCheck.setForeground(Color.darkGray);
+            boundingBoxChanged(null, null);
         }
     }
 
     /**
      * Distributes a "bounding box changed" from one DownloadSelection
-     * object to the others, so they may update or clear their input fields.
+     * object to the others, so they may update or clear their input fields. Also informs
+     * download sources about the change, so they can react on it.
      * @param b new current bounds
      *
      * @param eventSource - the DownloadSelection object that fired this notification.
@@ -299,7 +267,10 @@ public class DownloadDialog extends JDialog {
                 s.setDownloadArea(currentBounds);
             }
         }
-        updateSizeCheck();
+
+        for (AbstractDownloadSourcePanel<?> ds : downloadSourcesTab.getAllPanels()) {
+            ds.boudingBoxChanged(b);
+        }
     }
 
     /**
@@ -308,34 +279,14 @@ public class DownloadDialog extends JDialog {
      */
     public void startDownload(Bounds b) {
         this.currentBounds = b;
-        actDownload.run();
+        startDownload();
     }
 
     /**
-     * Replies true if the user selected to download OSM data
-     *
-     * @return true if the user selected to download OSM data
+     * Starts download.
      */
-    public boolean isDownloadOsmData() {
-        return cbDownloadOsmData.isSelected();
-    }
-
-    /**
-     * Replies true if the user selected to download GPX data
-     *
-     * @return true if the user selected to download GPX data
-     */
-    public boolean isDownloadGpxData() {
-        return cbDownloadGpxData.isSelected();
-    }
-
-    /**
-     * Replies true if user selected to download notes
-     *
-     * @return true if user selected to download notes
-     */
-    public boolean isDownloadNotes() {
-        return cbDownloadNotes.isSelected();
+    public void startDownload() {
+        btnDownload.doClick();
     }
 
     /**
@@ -358,17 +309,42 @@ public class DownloadDialog extends JDialog {
     }
 
     /**
-     * Adds a new download area selector to the download dialog
+     * Determines if the dialog autorun is enabled in preferences.
+     * @return {@code true} if the download dialog must be open at startup, {@code false} otherwise.
+     */
+    public static boolean isAutorunEnabled() {
+        return DOWNLOAD_AUTORUN.get();
+    }
+
+    /**
+     * Adds a new download area selector to the download dialog.
      *
-     * @param selector the download are selector
-     * @param displayName the display name of the selector
+     * @param selector the download are selector.
+     * @param displayName the display name of the selector.
      */
     public void addDownloadAreaSelector(JPanel selector, String displayName) {
         tpDownloadAreaSelectors.add(displayName, selector);
     }
 
     /**
-     * Refreshes the tile sources
+     * Adds a new download source to the download dialog if it is not added.
+     *
+     * @param downloadSource The download source to be added.
+     * @param <T> The type of the download data.
+     * @throws JosmRuntimeException If the download source is already added. Note, download sources are
+     * compared by their reference.
+     */
+    public <T> void addDownloadSource(DownloadSource<T> downloadSource) {
+        if (downloadSources.contains(downloadSource)) {
+            throw new JosmRuntimeException("The download source you are trying to add already exists.");
+        }
+
+        downloadSources.add(downloadSource);
+        addNewDownloadSourceTab(downloadSource);
+    }
+
+    /**
+     * Refreshes the tile sources.
      * @since 6364
      */
     public final void refreshTileSources() {
@@ -382,9 +358,7 @@ public class DownloadDialog extends JDialog {
      */
     public void rememberSettings() {
         DOWNLOAD_TAB.put(tpDownloadAreaSelectors.getSelectedIndex());
-        DOWNLOAD_OSM.put(cbDownloadOsmData.isSelected());
-        DOWNLOAD_GPS.put(cbDownloadGpxData.isSelected());
-        DOWNLOAD_NOTES.put(cbDownloadNotes.isSelected());
+        downloadSourcesTab.getSelectedPanel().ifPresent(panel -> DOWNLOAD_SOURCE_TAB.put(panel.getSimpleName()));
         DOWNLOAD_NEWLAYER.put(cbNewLayer.isSelected());
         DOWNLOAD_ZOOMTODATA.put(cbZoomToDownloadedData.isSelected());
         if (currentBounds != null) {
@@ -396,17 +370,21 @@ public class DownloadDialog extends JDialog {
      * Restores the previous settings in the download dialog.
      */
     public void restoreSettings() {
-        cbDownloadOsmData.setSelected(DOWNLOAD_OSM.get());
-        cbDownloadGpxData.setSelected(DOWNLOAD_GPS.get());
-        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);
 
-        if (Main.isDisplayingMapView()) {
-            MapView mv = Main.map.mapView;
+        try {
+            tpDownloadAreaSelectors.setSelectedIndex(DOWNLOAD_TAB.get());
+        } catch (IndexOutOfBoundsException e) {
+            Logging.trace(e);
+            tpDownloadAreaSelectors.setSelectedIndex(0);
+        }
+
+        downloadSourcesTab.setSelected(DOWNLOAD_SOURCE_TAB.get());
+
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mv = MainApplication.getMap().mapView;
             currentBounds = new Bounds(
                     mv.getLatLon(0, mv.getHeight()),
                     mv.getLatLon(mv.getWidth(), 0)
@@ -423,7 +401,7 @@ public class DownloadDialog extends JDialog {
 
     /**
      * Returns the previously saved bounding box from preferences.
-     * @return The bounding box saved in preferences if any, {@code null} otherwise
+     * @return The bounding box saved in preferences if any, {@code null} otherwise.
      * @since 6509
      */
     public static Bounds getSavedDownloadBounds() {
@@ -432,36 +410,29 @@ public class DownloadDialog extends JDialog {
             try {
                 return new Bounds(value, ";");
             } catch (IllegalArgumentException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return null;
     }
 
     /**
-     * Determines if the dialog autorun is enabled in preferences.
-     * @return {@code true} if the download dialog must be open at startup, {@code false} otherwise
-     */
-    public static boolean isAutorunEnabled() {
-        return DOWNLOAD_AUTORUN.get();
-    }
-
-    /**
      * Automatically opens the download dialog, if autorun is enabled.
      * @see #isAutorunEnabled
      */
     public static void autostartIfNeeded() {
         if (isAutorunEnabled()) {
-            Main.main.menu.download.actionPerformed(null);
+            MainApplication.getMenu().download.actionPerformed(null);
         }
     }
 
     /**
-     * Replies the currently selected download area.
-     * @return the currently selected download area. May be {@code null}, if no download area is selected yet.
+     * Returns an {@link Optional} of the currently selected download area.
+     * @return An {@link Optional} of the currently selected download area.
+     * @since 12574 Return type changed to optional
      */
-    public Bounds getSelectedDownloadArea() {
-        return currentBounds;
+    public Optional<Bounds> getSelectedDownloadArea() {
+        return Optional.ofNullable(currentBounds);
     }
 
     @Override
@@ -489,14 +460,51 @@ public class DownloadDialog extends JDialog {
         return canceled;
     }
 
+    /**
+     * Gets the global settings of the download dialog.
+     * @return The {@link DownloadSettings} object that describes the current state of
+     * the download dialog.
+     */
+    public DownloadSettings getDownloadSettings() {
+        return new DownloadSettings(currentBounds, isNewLayerRequired(), isZoomToDownloadedDataRequired());
+    }
+
     protected void setCanceled(boolean canceled) {
         this.canceled = canceled;
     }
 
-    protected void buildMainPanelAboveDownloadSelections(JPanel pnl) {
-        // Do nothing
+    /**
+     * Adds the download source to the download sources tab.
+     * @param downloadSource The download source to be added.
+     * @param <T> The type of the download data.
+     */
+    protected <T> void addNewDownloadSourceTab(DownloadSource<T> downloadSource) {
+        downloadSourcesTab.addPanel(downloadSource.createPanel());
     }
 
+    /**
+     * Creates listener that removes/adds download sources from/to {@code downloadSourcesTab}
+     * depending on the current mode.
+     * @return The expert mode listener.
+     */
+    private ExpertToggleAction.ExpertModeChangeListener getExpertModeListenerForDownloadSources() {
+        return downloadSourcesTab::updateExpert;
+    }
+
+    /**
+     * Creates a listener that reacts on tab switches for {@code downloadSourcesTab} in order
+     * to adjust proper division of the dialog according to user saved preferences or minimal size
+     * of the panel.
+     * @return A listener to adjust dialog division.
+     */
+    private ChangeListener getDownloadSourceTabChangeListener() {
+        return ec -> downloadSourcesTab.getSelectedPanel().ifPresent(
+                panel -> dialogSplit.setPolicy(panel.getSizingPolicy()));
+    }
+
+    /**
+     * Action that is executed when the cancel button is pressed.
+     */
     class CancelAction extends AbstractAction {
         CancelAction() {
             putValue(NAME, tr("Cancel"));
@@ -504,17 +512,26 @@ public class DownloadDialog extends JDialog {
             putValue(SHORT_DESCRIPTION, tr("Click to close the dialog and to abort downloading"));
         }
 
+        /**
+         * Cancels the download
+         */
         public void run() {
+            rememberSettings();
             setCanceled(true);
             setVisible(false);
         }
 
         @Override
         public void actionPerformed(ActionEvent e) {
+            Optional<AbstractDownloadSourcePanel<?>> panel = downloadSourcesTab.getSelectedPanel();
             run();
+            panel.ifPresent(AbstractDownloadSourcePanel::checkCancel);
         }
     }
 
+    /**
+     * Action that is executed when the download button is pressed.
+     */
     class DownloadAction extends AbstractAction {
         DownloadAction() {
             putValue(NAME, tr("Download"));
@@ -523,32 +540,20 @@ public class DownloadDialog extends JDialog {
             setEnabled(!Main.isOffline(OnlineResource.OSM_API));
         }
 
+        /**
+         * Starts the download and closes the dialog, if all requirements for the current download source are met.
+         * Otherwise the download is not started and the dialog remains visible.
+         */
         public void run() {
-            if (currentBounds == null) {
-                JOptionPane.showMessageDialog(
-                        DownloadDialog.this,
-                        tr("Please select a download area first."),
-                        tr("Error"),
-                        JOptionPane.ERROR_MESSAGE
-                );
-                return;
-            }
-            if (!isDownloadOsmData() && !isDownloadGpxData() && !isDownloadNotes()) {
-                JOptionPane.showMessageDialog(
-                        DownloadDialog.this,
-                        tr("<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>",
-                                cbDownloadOsmData.getText(),
-                                cbDownloadGpxData.getText(),
-                                cbDownloadNotes.getText()
-                        ),
-                        tr("Error"),
-                        JOptionPane.ERROR_MESSAGE
-                );
-                return;
-            }
-            setCanceled(false);
-            setVisible(false);
+            rememberSettings();
+            downloadSourcesTab.getSelectedPanel().ifPresent(panel -> {
+                DownloadSettings downloadSettings = getDownloadSettings();
+                if (panel.checkDownload(downloadSettings)) {
+                    setCanceled(false);
+                    setVisible(false);
+                    panel.triggerDownload(downloadSettings);
+                }
+            });
         }
 
         @Override
@@ -568,4 +573,108 @@ public class DownloadDialog extends JDialog {
             btnDownload.requestFocusInWindow();
         }
     }
+
+    /**
+     * A special tabbed pane for {@link AbstractDownloadSourcePanel}s
+     * @author Michael Zangl
+     * @since 12706
+     */
+    private static class DownloadSourceTabs extends JTabbedPane {
+        private final List<AbstractDownloadSourcePanel<?>> allPanels = new ArrayList<>();
+
+        List<AbstractDownloadSourcePanel<?>> getAllPanels() {
+            return allPanels;
+        }
+
+        List<AbstractDownloadSourcePanel<?>> getVisiblePanels() {
+            return IntStream.range(0, getTabCount())
+                    .mapToObj(this::getComponentAt)
+                    .map(p -> (AbstractDownloadSourcePanel<?>) p)
+                    .collect(Collectors.toList());
+        }
+
+        void setSelected(String simpleName) {
+            getVisiblePanels().stream()
+                .filter(panel -> simpleName.equals(panel.getSimpleName()))
+                .findFirst()
+                .ifPresent(this::setSelectedComponent);
+        }
+
+        void updateExpert(boolean isExpert) {
+            updateTabs();
+        }
+
+        void addPanel(AbstractDownloadSourcePanel<?> panel) {
+            allPanels.add(panel);
+            updateTabs();
+        }
+
+        private void updateTabs() {
+            // Not the best performance, but we don't do it often
+            removeAll();
+
+            boolean isExpert = ExpertToggleAction.isExpert();
+            allPanels.stream()
+                .filter(panel -> isExpert || !panel.getDownloadSource().onlyExpert())
+                .forEach(panel -> addTab(panel.getDownloadSource().getLabel(), panel.getIcon(), panel));
+        }
+
+        Optional<AbstractDownloadSourcePanel<?>> getSelectedPanel() {
+            return Optional.ofNullable((AbstractDownloadSourcePanel<?>) getSelectedComponent());
+        }
+
+        @Override
+        public void insertTab(String title, Icon icon, Component component, String tip, int index) {
+            if (!(component instanceof AbstractDownloadSourcePanel)) {
+                throw new IllegalArgumentException("Can only add AbstractDownloadSourcePanels");
+            }
+            super.insertTab(title, icon, component, tip, index);
+        }
+    }
+
+    /**
+     * A special split pane that acts according to a {@link DownloadSourceSizingPolicy}
+     *
+     * It attempts to size the top tab content correctly.
+     *
+     * @author Michael Zangl
+     * @since 12705
+     */
+    private static class DownloadDialogSplitPane extends JSplitPane {
+        private DownloadSourceSizingPolicy policy;
+        private JTabbedPane topComponent;
+
+        DownloadDialogSplitPane(JTabbedPane newTopComponent, Component newBottomComponent) {
+            super(VERTICAL_SPLIT, newTopComponent, newBottomComponent);
+            this.topComponent = newTopComponent;
+        }
+
+        public void setPolicy(DownloadSourceSizingPolicy policy) {
+            this.policy = policy;
+
+            super.setDividerLocation(policy.getComponentHeight() + computeOffset());
+            setDividerSize(policy.isHeightAdjustable() ? 10 : 0);
+            setEnabled(policy.isHeightAdjustable());
+        }
+
+        @Override
+        public void doLayout() {
+            // We need to force this height before the layout manager is run.
+            // We cannot do this in the setDividerLocation, since the offset cannot be computed there.
+            int offset = computeOffset();
+            if (policy.isHeightAdjustable()) {
+                policy.storeHeight(Math.max(getDividerLocation() - offset, 0));
+            }
+            super.setDividerLocation(policy.getComponentHeight() + offset);
+            super.doLayout();
+        }
+
+        /**
+         * @return The difference between the content height and the divider location
+         */
+        private int computeOffset() {
+            Component selectedComponent = topComponent.getSelectedComponent();
+            return topComponent.getHeight() - (selectedComponent == null ? 0 : selectedComponent.getHeight());
+        }
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadSelection.java b/src/org/openstreetmap/josm/gui/download/DownloadSelection.java
index f69346f..e7677c1 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadSelection.java
@@ -3,6 +3,11 @@ package org.openstreetmap.josm.gui.download;
 
 import org.openstreetmap.josm.data.Bounds;
 
+/**
+ * A mean to select a download area in the download dialog.
+ * Currently each selector implementation is accessible through its dedicated tab.
+ * @since 2344
+ */
 public interface DownloadSelection {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadSettings.java b/src/org/openstreetmap/josm/gui/download/DownloadSettings.java
new file mode 100644
index 0000000..3b29e51
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/DownloadSettings.java
@@ -0,0 +1,56 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import org.openstreetmap.josm.data.Bounds;
+
+import java.util.Optional;
+
+/**
+ * The global settings of {@link DownloadDialog}.
+ * <p>
+ * This class is immutable
+ * @since 12652
+ */
+public final class DownloadSettings {
+
+    private final Bounds downloadBounds;
+    private final boolean downloadAsNewLayer;
+    private final boolean zoomToDownloadedData;
+
+    /**
+     * Initializes a new instance of {@code DownloadSettings}.
+     * @param bbox The bounding box
+     * @param downloadAsNewLayer The flag defining if a new layer must be created for the downloaded data.
+     * @param zoomToDownloadedData The flag defining if the map view, see {@link SlippyMapChooser},
+     *                             must zoom to the downloaded data.
+     */
+    public DownloadSettings(Bounds bbox, boolean downloadAsNewLayer, boolean zoomToDownloadedData) {
+        this.downloadBounds = bbox;
+        this.downloadAsNewLayer = downloadAsNewLayer;
+        this.zoomToDownloadedData = zoomToDownloadedData;
+    }
+
+    /**
+     * Gets the flag defining if a new layer must be created for the downloaded data.
+     * @return {@code true} if a new layer must be created, {@code false} otherwise.
+     */
+    public boolean asNewLayer() {
+        return this.downloadAsNewLayer;
+    }
+
+    /**
+     * Gets the flag defining if the map view must zoom to the downloaded data.
+     * @return {@code true} if the view must zoom, {@code false} otherwise.
+     */
+    public boolean zoomToData() {
+        return this.zoomToDownloadedData;
+    }
+
+    /**
+     * Gets the download bounds that are requested
+     * @return The bounds or an empty {@link Optional} if no bounds are selected
+     */
+    public Optional<Bounds> getDownloadBounds() {
+        return Optional.ofNullable(downloadBounds);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadSource.java b/src/org/openstreetmap/josm/gui/download/DownloadSource.java
new file mode 100644
index 0000000..e6605b6
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/DownloadSource.java
@@ -0,0 +1,38 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+/**
+ * Defines an interface for different download sources.
+ * <p>
+ * Plugins may implement this to provide new download sources to the main download dialog.
+ * @param <T> The type of the data that a download source uses.
+ * @since 12652
+ */
+public interface DownloadSource<T> {
+
+    /**
+     * Creates a panel with GUI specific for the download source.
+     * @return Returns {@link AbstractDownloadSourcePanel}.
+     */
+    AbstractDownloadSourcePanel<T> createPanel();
+
+    /**
+     * Downloads the data.
+     * @param data The required data for the download source.
+     * @param settings The global settings of the download dialog, see {@link DownloadDialog}.
+     */
+    void doDownload(T data, DownloadSettings settings);
+
+    /**
+     * Returns a string representation of this download source.
+     * @return A string representation of this download source.
+     */
+    String getLabel();
+
+    /**
+     * Defines whether this download source should be visible only in the expert mode.
+     * @return Returns {@code true} if the download source should be visible only in the
+     * expert mode, {@code false} otherwise.
+     */
+    boolean onlyExpert();
+}
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadSourceSizingPolicy.java b/src/org/openstreetmap/josm/gui/download/DownloadSourceSizingPolicy.java
new file mode 100644
index 0000000..6427498
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/DownloadSourceSizingPolicy.java
@@ -0,0 +1,94 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import java.awt.Component;
+
+import org.openstreetmap.josm.data.preferences.AbstractProperty;
+
+/**
+ * Defines the sizing policy used for download tabs.
+ * @author Michael Zangl
+ * @since 12705
+ */
+public interface DownloadSourceSizingPolicy {
+    /**
+     * Gets the height of the download source panel.
+     * @return The height the component should have.
+     */
+    int getComponentHeight();
+
+    /**
+     * Check whether the user should be allowed to adjust the height of this download source panel
+     * @return <code>true</code> if the height should be adjustable
+     */
+    boolean isHeightAdjustable();
+
+    /**
+     * Stores the height
+     * @param height the height in pixel
+     */
+    default void storeHeight(int height) {
+        throw new UnsupportedOperationException(
+                "Setting the height is not supported for " + this.getClass().getCanonicalName());
+    }
+
+    /**
+     * The download source has a fixed size provided by the component
+     * @author Michael Zangl
+     */
+    class FixedDownloadSourceSizePolicy implements DownloadSourceSizingPolicy {
+        private final Component base;
+
+        /**
+         * Create a new fixed download source policy
+         * @param base The component of which the size should be taken.
+         */
+        public FixedDownloadSourceSizePolicy(Component base) {
+            this.base = base;
+        }
+
+        @Override
+        public int getComponentHeight() {
+            return (int) base.getPreferredSize().getHeight();
+        }
+
+        @Override
+        public boolean isHeightAdjustable() {
+            return false;
+        }
+    }
+
+    /**
+     * The height of this component is given by a preference entry.
+     * <p>
+     * Mind that using a preferred component size is not possible in this case, since the preference entry needs to have a onstant default value.
+     */
+    class AdjustableDownloadSizePolicy implements DownloadSourceSizingPolicy {
+
+        private final AbstractProperty<Integer> preference;
+
+        /**
+         * Create a new {@link AdjustableDownloadSizePolicy}
+         * @param preference The preference key to use
+         */
+        public AdjustableDownloadSizePolicy(AbstractProperty<Integer> preference) {
+            this.preference = preference;
+        }
+
+        @Override
+        public int getComponentHeight() {
+            return Math.max(1, preference.get());
+        }
+
+        @Override
+        public boolean isHeightAdjustable() {
+            return true;
+        }
+
+        @Override
+        public void storeHeight(int height) {
+            preference.put(height);
+        }
+
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java b/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java
new file mode 100644
index 0000000..958657c
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java
@@ -0,0 +1,347 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import javax.swing.Icon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.event.ChangeListener;
+
+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.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Pair;
+
+/**
+ * Class defines the way data is fetched from the OSM server.
+ * @since 12652
+ */
+public class OSMDownloadSource implements DownloadSource<OSMDownloadSource.OSMDownloadData> {
+    /**
+     * The simple name for the {@link OSMDownloadSourcePanel}
+     * @since 12706
+     */
+    public static final String SIMPLE_NAME = "osmdownloadpanel";
+
+    @Override
+    public AbstractDownloadSourcePanel<OSMDownloadData> createPanel() {
+        return new OSMDownloadSourcePanel(this);
+    }
+
+    @Override
+    public void doDownload(OSMDownloadData data, DownloadSettings settings) {
+        Bounds bbox = settings.getDownloadBounds()
+                .orElseThrow(() -> new IllegalArgumentException("OSM downloads requires bounds"));
+        boolean zoom = settings.zoomToData();
+        boolean newLayer = settings.asNewLayer();
+        List<Pair<AbstractDownloadTask<?>, Future<?>>> tasks = new ArrayList<>();
+
+        if (data.isDownloadOSMData()) {
+            DownloadOsmTask task = new DownloadOsmTask();
+            task.setZoomAfterDownload(zoom && !data.isDownloadGPX() && !data.isDownloadNotes());
+            Future<?> future = task.download(newLayer, bbox, null);
+            MainApplication.worker.submit(new PostDownloadHandler(task, future));
+            if (zoom) {
+                tasks.add(new Pair<>(task, future));
+            }
+        }
+
+        if (data.isDownloadGPX()) {
+            DownloadGpsTask task = new DownloadGpsTask();
+            task.setZoomAfterDownload(zoom && !data.isDownloadOSMData() && !data.isDownloadNotes());
+            Future<?> future = task.download(newLayer, bbox, null);
+            MainApplication.worker.submit(new PostDownloadHandler(task, future));
+            if (zoom) {
+                tasks.add(new Pair<>(task, future));
+            }
+        }
+
+        if (data.isDownloadNotes()) {
+            DownloadNotesTask task = new DownloadNotesTask();
+            task.setZoomAfterDownload(zoom && !data.isDownloadOSMData() && !data.isDownloadGPX());
+            Future<?> future = task.download(false, bbox, null);
+            MainApplication.worker.submit(new PostDownloadHandler(task, future));
+            if (zoom) {
+                tasks.add(new Pair<>(task, future));
+            }
+        }
+
+        if (zoom && tasks.size() > 1) {
+            MainApplication.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) {
+                        Logging.warn(ex);
+                    }
+                }
+                MapFrame map = MainApplication.getMap();
+                // Zoom to the larger download bounds
+                if (map != null && bounds != null) {
+                    final ProjectionBounds pb = bounds;
+                    GuiHelper.runInEDTAndWait(() -> map.mapView.zoomTo(new ViewportData(pb)));
+                }
+            });
+        }
+    }
+
+    @Override
+    public String getLabel() {
+        return tr("Download from OSM");
+    }
+
+    @Override
+    public boolean onlyExpert() {
+        return false;
+    }
+
+    /**
+     * The GUI representation of the OSM download source.
+     * @since 12652
+     */
+    public static class OSMDownloadSourcePanel extends AbstractDownloadSourcePanel<OSMDownloadData> {
+
+        private final JCheckBox cbDownloadOsmData;
+        private final JCheckBox cbDownloadGpxData;
+        private final JCheckBox cbDownloadNotes;
+        private final JLabel sizeCheck = new JLabel();
+
+        private static final BooleanProperty DOWNLOAD_OSM = new BooleanProperty("download.osm.data", true);
+        private static final BooleanProperty DOWNLOAD_GPS = new BooleanProperty("download.osm.gps", false);
+        private static final BooleanProperty DOWNLOAD_NOTES = new BooleanProperty("download.osm.notes", false);
+
+        /**
+         * Creates a new {@link OSMDownloadSourcePanel}.
+         * @param ds The osm download source the panel is for.
+         */
+        public OSMDownloadSourcePanel(OSMDownloadSource ds) {
+            super(ds);
+            setLayout(new GridBagLayout());
+
+            // size check depends on selected data source
+            final ChangeListener checkboxChangeListener = e ->
+                    DownloadDialog.getInstance().getSelectedDownloadArea().ifPresent(this::updateSizeCheck);
+
+            // adding the download tasks
+            add(new JLabel(tr("Data Sources and Types:")), GBC.std().insets(5, 5, 1, 5).anchor(GBC.CENTER));
+            cbDownloadOsmData = new JCheckBox(tr("OpenStreetMap data"), true);
+            cbDownloadOsmData.setToolTipText(tr("Select to download OSM data in the selected download area."));
+            cbDownloadOsmData.getModel().addChangeListener(checkboxChangeListener);
+
+            cbDownloadGpxData = new JCheckBox(tr("Raw GPS data"));
+            cbDownloadGpxData.setToolTipText(tr("Select to download GPS traces in the selected download area."));
+            cbDownloadGpxData.getModel().addChangeListener(checkboxChangeListener);
+
+            cbDownloadNotes = new JCheckBox(tr("Notes"));
+            cbDownloadNotes.setToolTipText(tr("Select to download notes in the selected download area."));
+            cbDownloadNotes.getModel().addChangeListener(checkboxChangeListener);
+
+            Font labelFont = sizeCheck.getFont();
+            sizeCheck.setFont(labelFont.deriveFont(Font.PLAIN, labelFont.getSize()));
+
+            add(cbDownloadOsmData, GBC.std().insets(1, 5, 1, 5));
+            add(cbDownloadGpxData, GBC.std().insets(1, 5, 1, 5));
+            add(cbDownloadNotes, GBC.eol().insets(1, 5, 1, 5));
+            add(sizeCheck, GBC.eol().anchor(GBC.EAST).insets(5, 5, 5, 2));
+
+            setMinimumSize(new Dimension(450, 115));
+        }
+
+        @Override
+        public OSMDownloadData getData() {
+            return new OSMDownloadData(
+                    isDownloadOsmData(),
+                    isDownloadNotes(),
+                    isDownloadGpxData());
+        }
+
+        @Override
+        public void rememberSettings() {
+            DOWNLOAD_OSM.put(isDownloadOsmData());
+            DOWNLOAD_GPS.put(isDownloadGpxData());
+            DOWNLOAD_NOTES.put(isDownloadNotes());
+        }
+
+        @Override
+        public void restoreSettings() {
+            cbDownloadOsmData.setSelected(DOWNLOAD_OSM.get());
+            cbDownloadGpxData.setSelected(DOWNLOAD_GPS.get());
+            cbDownloadNotes.setSelected(DOWNLOAD_NOTES.get());
+        }
+
+        @Override
+        public boolean checkDownload(DownloadSettings settings) {
+            /*
+             * It is mandatory to specify the area to download from OSM.
+             */
+            if (!settings.getDownloadBounds().isPresent()) {
+                JOptionPane.showMessageDialog(
+                        this.getParent(),
+                        tr("Please select a download area first."),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE
+                );
+
+                return false;
+            }
+
+            /*
+             * Checks if the user selected the type of data to download. At least one the following
+             * must be chosen : raw osm data, gpx data, notes.
+             * If none of those are selected, then the corresponding dialog is shown to inform the user.
+             */
+            if (!isDownloadOsmData() && !isDownloadGpxData() && !isDownloadNotes()) {
+                JOptionPane.showMessageDialog(
+                        this.getParent(),
+                        tr("<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>",
+                                cbDownloadOsmData.getText(),
+                                cbDownloadGpxData.getText(),
+                                cbDownloadNotes.getText()
+                        ),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE
+                );
+
+                return false;
+            }
+
+            this.rememberSettings();
+
+            return true;
+        }
+
+        /**
+         * Replies true if the user selected to download OSM data
+         *
+         * @return true if the user selected to download OSM data
+         */
+        public boolean isDownloadOsmData() {
+            return cbDownloadOsmData.isSelected();
+        }
+
+        /**
+         * Replies true if the user selected to download GPX data
+         *
+         * @return true if the user selected to download GPX data
+         */
+        public boolean isDownloadGpxData() {
+            return cbDownloadGpxData.isSelected();
+        }
+
+        /**
+         * Replies true if user selected to download notes
+         *
+         * @return true if user selected to download notes
+         */
+        public boolean isDownloadNotes() {
+            return cbDownloadNotes.isSelected();
+        }
+
+        @Override
+        public Icon getIcon() {
+            return ImageProvider.get("download");
+        }
+
+        @Override
+        public void boudingBoxChanged(Bounds bbox) {
+            updateSizeCheck(bbox);
+        }
+
+        @Override
+        public String getSimpleName() {
+            return SIMPLE_NAME;
+        }
+
+        private void updateSizeCheck(Bounds bbox) {
+            if (bbox == null) {
+                sizeCheck.setText(tr("No area selected yet"));
+                sizeCheck.setForeground(Color.darkGray);
+                return;
+            }
+
+            boolean isAreaTooLarge = false;
+            if (!isDownloadNotes() && !isDownloadOsmData() && !isDownloadGpxData()) {
+                isAreaTooLarge = false;
+            } else if (isDownloadNotes() && !isDownloadOsmData() && !isDownloadGpxData()) {
+                // see max_note_request_area in https://github.com/openstreetmap/openstreetmap-website/blob/master/config/example.application.yml
+                isAreaTooLarge = bbox.getArea() > Main.pref.getDouble("osm-server.max-request-area-notes", 25);
+            } else {
+                // see max_request_area in https://github.com/openstreetmap/openstreetmap-website/blob/master/config/example.application.yml
+                isAreaTooLarge = bbox.getArea() > Main.pref.getDouble("osm-server.max-request-area", 0.25);
+            }
+
+            displaySizeCheckResult(isAreaTooLarge);
+        }
+
+        private void displaySizeCheckResult(boolean isAreaTooLarge) {
+            if (isAreaTooLarge) {
+                sizeCheck.setText(tr("Download area too large; will probably be rejected by server"));
+                sizeCheck.setForeground(Color.red);
+            } else {
+                sizeCheck.setText(tr("Download area ok, size probably acceptable to server"));
+                sizeCheck.setForeground(Color.darkGray);
+            }
+        }
+
+    }
+
+    /**
+     * Encapsulates data that is required to download from the OSM server.
+     */
+    static class OSMDownloadData {
+        private final boolean downloadOSMData;
+        private final boolean downloadNotes;
+        private final boolean downloadGPX;
+
+        OSMDownloadData(boolean downloadOSMData, boolean downloadNotes, boolean downloadGPX) {
+            this.downloadOSMData = downloadOSMData;
+            this.downloadNotes = downloadNotes;
+            this.downloadGPX = downloadGPX;
+        }
+
+        boolean isDownloadOSMData() {
+            return downloadOSMData;
+        }
+
+        boolean isDownloadNotes() {
+            return downloadNotes;
+        }
+
+        boolean isDownloadGPX() {
+            return downloadGPX;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java b/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java
new file mode 100644
index 0000000..47896c4
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java
@@ -0,0 +1,397 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.util.Collection;
+import java.util.concurrent.Future;
+import java.util.function.Consumer;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+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.preferences.AbstractProperty;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.download.DownloadSourceSizingPolicy.AdjustableDownloadSizePolicy;
+import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.JosmTextArea;
+import org.openstreetmap.josm.io.OverpassDownloadReader;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * Class defines the way data is fetched from Overpass API.
+ * @since 12652
+ */
+public class OverpassDownloadSource implements DownloadSource<OverpassDownloadSource.OverpassDownloadData> {
+
+    @Override
+    public AbstractDownloadSourcePanel<OverpassDownloadData> createPanel() {
+        return new OverpassDownloadSourcePanel(this);
+    }
+
+    @Override
+    public void doDownload(OverpassDownloadData data, DownloadSettings settings) {
+        /*
+         * In order to support queries generated by the Overpass Turbo Query Wizard tool
+         * which do not require the area to be specified.
+         */
+        Bounds area = settings.getDownloadBounds().orElse(new Bounds(0, 0, 0, 0));
+        DownloadOsmTask task = new DownloadOsmTask();
+        task.setZoomAfterDownload(settings.zoomToData());
+        Future<?> future = task.download(
+                new OverpassDownloadReader(area, OverpassServerPreference.getOverpassServer(), data.getQuery()),
+                settings.asNewLayer(), area, null);
+        MainApplication.worker.submit(new PostDownloadHandler(task, future, data.getErrorReporter()));
+    }
+
+    @Override
+    public String getLabel() {
+        return tr("Download from Overpass API");
+    }
+
+    @Override
+    public boolean onlyExpert() {
+        return true;
+    }
+
+    /**
+     * The GUI representation of the Overpass download source.
+     * @since 12652
+     */
+    public static class OverpassDownloadSourcePanel extends AbstractDownloadSourcePanel<OverpassDownloadData> {
+
+        private static final String SIMPLE_NAME = "overpassdownloadpanel";
+        private static final AbstractProperty<Integer> PANEL_SIZE_PROPERTY =
+                new IntegerProperty(TAB_SPLIT_NAMESPACE + SIMPLE_NAME, 150).cached();
+        private static final BooleanProperty OVERPASS_QUERY_LIST_OPENED =
+                new BooleanProperty("download.overpass.query-list.opened", false);
+        private static final String ACTION_IMG_SUBDIR = "dialogs";
+
+        private JosmTextArea overpassQuery;
+        private OverpassQueryList overpassQueryList;
+
+        /**
+         * Create a new {@link OverpassDownloadSourcePanel}
+         * @param ds The download source to create the panel for
+         */
+        public OverpassDownloadSourcePanel(OverpassDownloadSource ds) {
+            super(ds);
+            setLayout(new BorderLayout());
+
+            String tooltip = tr("Build an Overpass query using the Overpass Turbo Query Wizard tool");
+            Action queryWizardAction = new AbstractAction() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    new OverpassQueryWizardDialog(OverpassDownloadSourcePanel.this).showDialog();
+                }
+            };
+
+            JButton openQueryWizard = new JButton(tr("Query Wizard"));
+            openQueryWizard.setToolTipText(tooltip);
+            openQueryWizard.addActionListener(queryWizardAction);
+
+            // CHECKSTYLE.OFF: LineLength
+            this.overpassQuery = new JosmTextArea(
+                    "/*\n" +
+                            tr("Place your Overpass query below or generate one using the Overpass Turbo Query Wizard")
+                            + "\n*/",
+                    8, 80);
+            // CHECKSTYLE.ON: LineLength
+            this.overpassQuery.setFont(GuiHelper.getMonospacedFont(overpassQuery));
+            this.overpassQuery.addFocusListener(new FocusListener() {
+                @Override
+                public void focusGained(FocusEvent e) {
+                    overpassQuery.selectAll();
+                }
+
+                @Override
+                public void focusLost(FocusEvent e) {
+                    // ignored
+                }
+            });
+
+
+            this.overpassQueryList = new OverpassQueryList(this, this.overpassQuery);
+            this.overpassQueryList.setPreferredSize(new Dimension(350, 300));
+
+            EditSnippetAction edit = new EditSnippetAction();
+            RemoveSnippetAction remove = new RemoveSnippetAction();
+            this.overpassQueryList.addSelectionListener(edit);
+            this.overpassQueryList.addSelectionListener(remove);
+
+            JPanel listPanel = new JPanel(new GridBagLayout());
+            listPanel.add(new JLabel(tr("Your saved queries:")), GBC.eol().insets(2).anchor(GBC.CENTER));
+            listPanel.add(this.overpassQueryList, GBC.eol().fill(GBC.BOTH));
+            listPanel.add(new JButton(new AddSnippetAction()), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.add(new JButton(edit), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.add(new JButton(remove), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.setVisible(OVERPASS_QUERY_LIST_OPENED.get());
+
+            JScrollPane scrollPane = new JScrollPane(overpassQuery);
+            BasicArrowButton arrowButton = new BasicArrowButton(listPanel.isVisible()
+                    ? BasicArrowButton.EAST
+                    : BasicArrowButton.WEST);
+            arrowButton.setToolTipText(tr("Show/hide Overpass snippet list"));
+            arrowButton.addActionListener(e -> {
+                if (listPanel.isVisible()) {
+                    listPanel.setVisible(false);
+                    arrowButton.setDirection(BasicArrowButton.WEST);
+                    OVERPASS_QUERY_LIST_OPENED.put(Boolean.FALSE);
+                } else {
+                    listPanel.setVisible(true);
+                    arrowButton.setDirection(BasicArrowButton.EAST);
+                    OVERPASS_QUERY_LIST_OPENED.put(Boolean.TRUE);
+                }
+            });
+
+            JPanel innerPanel = new JPanel(new BorderLayout());
+            innerPanel.add(scrollPane, BorderLayout.CENTER);
+            innerPanel.add(arrowButton, BorderLayout.EAST);
+
+            JPanel leftPanel = new JPanel(new GridBagLayout());
+            leftPanel.add(new JLabel(tr("Overpass query:")), GBC.eol().insets(5, 1, 5, 1).anchor(GBC.NORTHWEST));
+            leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
+            leftPanel.add(openQueryWizard, GBC.eol().anchor(GBC.CENTER));
+            leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
+
+            add(leftPanel, BorderLayout.WEST);
+            add(innerPanel, BorderLayout.CENTER);
+            add(listPanel, BorderLayout.EAST);
+
+            setMinimumSize(new Dimension(450, 240));
+        }
+
+        @Override
+        public OverpassDownloadData getData() {
+            String query = overpassQuery.getText();
+            /*
+             * A callback that is passed to PostDownloadReporter that is called once the download task
+             * has finished. According to the number of errors happened, their type we decide whether we
+             * want to save the last query in OverpassQueryList.
+             */
+            Consumer<Collection<Object>> errorReporter = errors -> {
+
+                boolean onlyNoDataError = errors.size() == 1 &&
+                        errors.contains("No data found in this area.");
+
+                if (errors.isEmpty() || onlyNoDataError) {
+                    overpassQueryList.saveHistoricItem(query);
+                }
+            };
+
+            return new OverpassDownloadData(query, errorReporter);
+        }
+
+        @Override
+        public void rememberSettings() {
+            // nothing
+        }
+
+        @Override
+        public void restoreSettings() {
+            // nothing
+        }
+
+        @Override
+        public boolean checkDownload(DownloadSettings settings) {
+            String query = getData().getQuery();
+
+            /*
+             * Absence of the selected area can be justified only if the overpass query
+             * is not restricted to bbox.
+             */
+            if (!settings.getDownloadBounds().isPresent() && query.contains("{{bbox}}")) {
+                JOptionPane.showMessageDialog(
+                        this.getParent(),
+                        tr("Please select a download area first."),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE
+                );
+                return false;
+            }
+
+            /*
+             * Check for an empty query. User might want to download everything, if so validation is passed,
+             * otherwise return false.
+             */
+            if (query.matches("(/\\*(\\*[^/]|[^\\*/])*\\*/|\\s)*")) {
+                boolean doFix = ConditionalOptionPaneUtil.showConfirmationDialog(
+                        "download.overpass.fix.emptytoall",
+                        this,
+                        tr("You entered an empty query. Do you want to download all data in this area instead?"),
+                        tr("Download all data?"),
+                        JOptionPane.YES_NO_OPTION,
+                        JOptionPane.QUESTION_MESSAGE,
+                        JOptionPane.YES_OPTION);
+                if (doFix) {
+                    String repairedQuery = "[out:xml]; \n"
+                            + query + "\n"
+                            + "(\n"
+                            + "    node({{bbox}});\n"
+                            + "<;\n"
+                            + ");\n"
+                            + "(._;>;);"
+                            + "out meta;";
+                    this.overpassQuery.setText(repairedQuery);
+                } else {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        /**
+         * Sets query to the query text field.
+         * @param query The query to set.
+         */
+        public void setOverpassQuery(String query) {
+            this.overpassQuery.setText(query);
+        }
+
+        @Override
+        public Icon getIcon() {
+            return ImageProvider.get("download-overpass");
+        }
+
+        @Override
+        public String getSimpleName() {
+            return SIMPLE_NAME;
+        }
+
+        @Override
+        public DownloadSourceSizingPolicy getSizingPolicy() {
+            return new AdjustableDownloadSizePolicy(PANEL_SIZE_PROPERTY);
+        }
+
+        /**
+         * Action that delegates snippet creation to {@link OverpassQueryList#createNewItem()}.
+         */
+        private class AddSnippetAction extends AbstractAction {
+
+            /**
+             * Constructs a new {@code AddSnippetAction}.
+             */
+            AddSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "add"));
+                putValue(SHORT_DESCRIPTION, tr("Add new snippet"));
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.createNewItem();
+            }
+        }
+
+        /**
+         * Action that delegates snippet removal to {@link OverpassQueryList#removeSelectedItem()}.
+         */
+        private class RemoveSnippetAction extends AbstractAction implements ListSelectionListener {
+
+            /**
+             * Constructs a new {@code RemoveSnippetAction}.
+             */
+            RemoveSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "delete"));
+                putValue(SHORT_DESCRIPTION, tr("Delete selected snippet"));
+                checkEnabled();
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.removeSelectedItem();
+            }
+
+            /**
+             * Disables the action if no items are selected.
+             */
+            void checkEnabled() {
+                setEnabled(overpassQueryList.getSelectedItem().isPresent());
+            }
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                checkEnabled();
+            }
+        }
+
+        /**
+         * Action that delegates snippet edit to {@link OverpassQueryList#editSelectedItem()}.
+         */
+        private class EditSnippetAction extends AbstractAction implements ListSelectionListener {
+
+            /**
+             * Constructs a new {@code EditSnippetAction}.
+             */
+            EditSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "edit"));
+                putValue(SHORT_DESCRIPTION, tr("Edit selected snippet"));
+                checkEnabled();
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.editSelectedItem();
+            }
+
+            /**
+             * Disables the action if no items are selected.
+             */
+            void checkEnabled() {
+                setEnabled(overpassQueryList.getSelectedItem().isPresent());
+            }
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                checkEnabled();
+            }
+        }
+    }
+
+    /**
+     * Encapsulates data that is required to preform download from Overpass API.
+     */
+    static class OverpassDownloadData {
+        private String query;
+        private Consumer<Collection<Object>> errorReporter;
+
+        OverpassDownloadData(String query, Consumer<Collection<Object>> errorReporter) {
+            this.query = query;
+            this.errorReporter = errorReporter;
+        }
+
+        String getQuery() {
+            return this.query;
+        }
+
+        Consumer<Collection<Object>> getErrorReporter() {
+            return this.errorReporter;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/OverpassQueryList.java b/src/org/openstreetmap/josm/gui/download/OverpassQueryList.java
new file mode 100644
index 0000000..71a9041
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/OverpassQueryList.java
@@ -0,0 +1,656 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.ListCellRenderer;
+import javax.swing.SwingUtilities;
+import javax.swing.border.CompoundBorder;
+import javax.swing.text.JTextComponent;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
+import org.openstreetmap.josm.gui.widgets.DefaultTextComponentValidator;
+import org.openstreetmap.josm.gui.widgets.JosmTextArea;
+import org.openstreetmap.josm.gui.widgets.SearchTextResultListPanel;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * A component to select user saved Overpass queries.
+ * @since 12574
+ */
+public final class OverpassQueryList extends SearchTextResultListPanel<OverpassQueryList.SelectorItem> {
+
+    private static final DateTimeFormatter FORMAT = DateTimeFormatter.ofPattern("HH:mm:ss, dd-MM-yyyy");
+
+    /*
+     * GUI elements
+     */
+    private final JTextComponent target;
+    private final Component componentParent;
+
+    /*
+     * All loaded elements within the list.
+     */
+    private final transient Map<String, SelectorItem> items;
+
+    /*
+     * Preferences
+     */
+    private static final String KEY_KEY = "key";
+    private static final String QUERY_KEY = "query";
+    private static final String LAST_EDIT_KEY = "lastEdit";
+    private static final String PREFERENCE_ITEMS = "download.overpass.query";
+
+    private static final String TRANSLATED_HISTORY = tr("history");
+
+    /**
+     * Constructs a new {@code OverpassQueryList}.
+     * @param parent The parent of this component.
+     * @param target The text component to which the queries must be added.
+     */
+    public OverpassQueryList(Component parent, JTextComponent target) {
+        this.target = target;
+        this.componentParent = parent;
+        this.items = restorePreferences();
+
+        OverpassQueryListMouseAdapter mouseHandler = new OverpassQueryListMouseAdapter(lsResult, lsResultModel);
+        super.lsResult.setCellRenderer(new OverpassQueryCellRendered());
+        super.setDblClickListener(e -> doubleClickEvent());
+        super.lsResult.addMouseListener(mouseHandler);
+        super.lsResult.addMouseMotionListener(mouseHandler);
+
+        filterItems();
+    }
+
+    /**
+     * Returns currently selected element from the list.
+     * @return An {@link Optional#empty()} if nothing is selected, otherwise
+     * the idem is returned.
+     */
+    public synchronized Optional<SelectorItem> getSelectedItem() {
+        int idx = lsResult.getSelectedIndex();
+        if (lsResultModel.getSize() <= idx || idx == -1) {
+            return Optional.empty();
+        }
+
+        SelectorItem item = lsResultModel.getElementAt(idx);
+
+        filterItems();
+
+        return Optional.of(item);
+    }
+
+    /**
+     * Adds a new historic item to the list. The key has form 'history {current date}'.
+     * Note, the item is not saved if there is already a historic item with the same query.
+     * @param query The query of the item.
+     * @exception IllegalArgumentException if the query is empty.
+     * @exception NullPointerException if the query is {@code null}.
+     */
+    public synchronized void saveHistoricItem(String query) {
+        boolean historicExist = this.items.values().stream()
+                .map(SelectorItem::getQuery)
+                .anyMatch(q -> q.equals(query));
+
+        if (!historicExist) {
+            SelectorItem item = new SelectorItem(
+                    TRANSLATED_HISTORY + " " + LocalDateTime.now().format(FORMAT), query);
+
+            this.items.put(item.getKey(), item);
+
+            savePreferences();
+            filterItems();
+        }
+    }
+
+    /**
+     * Removes currently selected item, saves the current state to preferences and
+     * updates the view.
+     */
+    public synchronized void removeSelectedItem() {
+        Optional<SelectorItem> it = this.getSelectedItem();
+
+        if (!it.isPresent()) {
+            JOptionPane.showMessageDialog(
+                    componentParent,
+                    tr("Please select an item first"));
+            return;
+        }
+
+        SelectorItem item = it.get();
+        if (this.items.remove(item.getKey(), item)) {
+            clearSelection();
+            savePreferences();
+            filterItems();
+        }
+    }
+
+    /**
+     * Opens {@link EditItemDialog} for the selected item, saves the current state
+     * to preferences and updates the view.
+     */
+    public synchronized void editSelectedItem() {
+        Optional<SelectorItem> it = this.getSelectedItem();
+
+        if (!it.isPresent()) {
+            JOptionPane.showMessageDialog(
+                    componentParent,
+                    tr("Please select an item first"));
+            return;
+        }
+
+        SelectorItem item = it.get();
+
+        EditItemDialog dialog = new EditItemDialog(
+                componentParent,
+                tr("Edit item"),
+                item,
+                tr("Save"), tr("Cancel"));
+        dialog.showDialog();
+
+        Optional<SelectorItem> editedItem = dialog.getOutputItem();
+        editedItem.ifPresent(i -> {
+            this.items.remove(item.getKey(), item);
+            this.items.put(i.getKey(), i);
+
+            savePreferences();
+            filterItems();
+        });
+    }
+
+    /**
+     * Opens {@link EditItemDialog}, saves the state to preferences if a new item is added
+     * and updates the view.
+     */
+    public synchronized void createNewItem() {
+        EditItemDialog dialog = new EditItemDialog(componentParent, tr("Add snippet"), tr("Add"));
+        dialog.showDialog();
+
+        Optional<SelectorItem> newItem = dialog.getOutputItem();
+        newItem.ifPresent(i -> {
+            items.put(i.getKey(), i);
+            savePreferences();
+            filterItems();
+        });
+    }
+
+    @Override
+    public void setDblClickListener(ActionListener dblClickListener) {
+        // this listener is already set within this class
+    }
+
+    @Override
+    protected void filterItems() {
+        String text = edSearchText.getText().toLowerCase(Locale.ENGLISH);
+        List<SelectorItem> matchingItems = this.items.values().stream()
+                .sorted((i1, i2) -> i2.getLastEdit().compareTo(i1.getLastEdit()))
+                .filter(item -> item.getKey().contains(text))
+                .collect(Collectors.toList());
+
+        super.lsResultModel.setItems(matchingItems);
+    }
+
+    private void doubleClickEvent() {
+        Optional<SelectorItem> selectedItem = this.getSelectedItem();
+
+        if (!selectedItem.isPresent()) {
+            return;
+        }
+
+        SelectorItem item = selectedItem.get();
+        this.target.setText(item.getQuery());
+    }
+
+    /**
+     * Saves all elements from the list to {@link Main#pref}.
+     */
+    private void savePreferences() {
+        Collection<Map<String, String>> toSave = new ArrayList<>(this.items.size());
+        for (SelectorItem item : this.items.values()) {
+            Map<String, String> it = new HashMap<>();
+            it.put(KEY_KEY, item.getKey());
+            it.put(QUERY_KEY, item.getQuery());
+            it.put(LAST_EDIT_KEY, item.getLastEdit().format(FORMAT));
+
+            toSave.add(it);
+        }
+
+        Main.pref.putListOfStructs(PREFERENCE_ITEMS, toSave);
+    }
+
+    /**
+     * Loads the user saved items from {@link Main#pref}.
+     * @return A set of the user saved items.
+     */
+    private static Map<String, SelectorItem> restorePreferences() {
+        Collection<Map<String, String>> toRetrieve =
+                Main.pref.getListOfStructs(PREFERENCE_ITEMS, Collections.emptyList());
+        Map<String, SelectorItem> result = new HashMap<>();
+
+        for (Map<String, String> entry : toRetrieve) {
+            try {
+                String key = entry.get(KEY_KEY);
+                String query = entry.get(QUERY_KEY);
+                String lastEditText = entry.get(LAST_EDIT_KEY);
+                // Compatibility: Some entries may not have a last edit set.
+                LocalDateTime lastEdit = lastEditText == null ? LocalDateTime.MIN : LocalDateTime.parse(lastEditText, FORMAT);
+
+                result.put(key, new SelectorItem(key, query, lastEdit));
+            } catch (IllegalArgumentException | DateTimeParseException e) {
+                // skip any corrupted item
+                Logging.error(e);
+            }
+        }
+
+        return result;
+    }
+
+    private class OverpassQueryListMouseAdapter extends MouseAdapter {
+
+        private final JList<SelectorItem> list;
+        private final ResultListModel<SelectorItem> model;
+        private final JPopupMenu emptySelectionPopup = new JPopupMenu();
+        private final JPopupMenu elementPopup = new JPopupMenu();
+
+        OverpassQueryListMouseAdapter(JList<SelectorItem> list, ResultListModel<SelectorItem> listModel) {
+            this.list = list;
+            this.model = listModel;
+
+            this.initPopupMenus();
+        }
+
+        /*
+         * Do not select the closest element if the user clicked on
+         * an empty area within the list.
+         */
+        private int locationToIndex(Point p) {
+            int idx = list.locationToIndex(p);
+
+            if (idx != -1 && !list.getCellBounds(idx, idx).contains(p)) {
+                return -1;
+            } else {
+                return idx;
+            }
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent e) {
+            super.mouseClicked(e);
+            if (SwingUtilities.isRightMouseButton(e)) {
+                int index = locationToIndex(e.getPoint());
+
+                if (model.getSize() == 0 || index == -1) {
+                    list.clearSelection();
+                    emptySelectionPopup.show(list, e.getX(), e.getY());
+                } else {
+                    list.setSelectedIndex(index);
+                    list.ensureIndexIsVisible(index);
+                    elementPopup.show(list, e.getX(), e.getY());
+                }
+            }
+        }
+
+        @Override
+        public void mouseMoved(MouseEvent e) {
+            super.mouseMoved(e);
+            int idx = locationToIndex(e.getPoint());
+            if (idx == -1) {
+                return;
+            }
+
+            SelectorItem item = model.getElementAt(idx);
+            list.setToolTipText("<html><pre style='width:300px;'>" +
+                    Utils.escapeReservedCharactersHTML(Utils.restrictStringLines(item.getQuery(), 9)));
+        }
+
+        private void initPopupMenus() {
+            AbstractAction add = new AbstractAction(tr("Add")) {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    createNewItem();
+                }
+            };
+            AbstractAction edit = new AbstractAction(tr("Edit")) {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    editSelectedItem();
+                }
+            };
+            AbstractAction remove = new AbstractAction(tr("Remove")) {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    removeSelectedItem();
+                }
+            };
+            this.emptySelectionPopup.add(add);
+            this.elementPopup.add(add);
+            this.elementPopup.add(edit);
+            this.elementPopup.add(remove);
+        }
+    }
+
+    /**
+     * This class defines the way each element is rendered in the list.
+     */
+    private static class OverpassQueryCellRendered extends JLabel implements ListCellRenderer<SelectorItem> {
+
+        OverpassQueryCellRendered() {
+            setOpaque(true);
+        }
+
+        @Override
+        public Component getListCellRendererComponent(
+                JList<? extends SelectorItem> list,
+                SelectorItem value,
+                int index,
+                boolean isSelected,
+                boolean cellHasFocus) {
+
+            Font font = list.getFont();
+            if (isSelected) {
+                setFont(new Font(font.getFontName(), Font.BOLD, font.getSize() + 2));
+                setBackground(list.getSelectionBackground());
+                setForeground(list.getSelectionForeground());
+            } else {
+                setFont(new Font(font.getFontName(), Font.PLAIN, font.getSize() + 2));
+                setBackground(list.getBackground());
+                setForeground(list.getForeground());
+            }
+
+            setEnabled(list.isEnabled());
+            setText(value.getKey());
+
+            if (isSelected && cellHasFocus) {
+                setBorder(new CompoundBorder(
+                        BorderFactory.createLineBorder(Color.BLACK, 1),
+                        BorderFactory.createEmptyBorder(2, 0, 2, 0)));
+            } else {
+                setBorder(new CompoundBorder(
+                        null,
+                        BorderFactory.createEmptyBorder(2, 0, 2, 0)));
+            }
+
+            return this;
+        }
+    }
+
+    /**
+     * Dialog that provides functionality to add/edit an item from the list.
+     */
+    private final class EditItemDialog extends ExtendedDialog {
+
+        private final JTextField name;
+        private final JosmTextArea query;
+
+        private final transient AbstractTextComponentValidator queryValidator;
+        private final transient AbstractTextComponentValidator nameValidator;
+
+        private static final int SUCCESS_BTN = 0;
+        private static final int CANCEL_BTN = 1;
+
+        private final transient SelectorItem itemToEdit;
+
+        /**
+         * Added/Edited object to be returned. If {@link Optional#empty()} then probably
+         * the user closed the dialog, otherwise {@link SelectorItem} is present.
+         */
+        private transient Optional<SelectorItem> outputItem = Optional.empty();
+
+        EditItemDialog(Component parent, String title, String... buttonTexts) {
+            this(parent, title, null, buttonTexts);
+        }
+
+        EditItemDialog(
+                Component parent,
+                String title,
+                SelectorItem itemToEdit,
+                String... buttonTexts) {
+            super(parent, title, buttonTexts);
+
+            this.itemToEdit = itemToEdit;
+
+            String nameToEdit = itemToEdit == null ? "" : itemToEdit.getKey();
+            String queryToEdit = itemToEdit == null ? "" : itemToEdit.getQuery();
+
+            this.name = new JTextField(nameToEdit);
+            this.query = new JosmTextArea(queryToEdit);
+
+            this.queryValidator = new DefaultTextComponentValidator(this.query, "", tr("Query cannot be empty"));
+            this.nameValidator = new AbstractTextComponentValidator(this.name) {
+                @Override
+                public void validate() {
+                    if (isValid()) {
+                        feedbackValid(tr("This name can be used for the item"));
+                    } else {
+                        feedbackInvalid(tr("Item with this name already exists"));
+                    }
+                }
+
+                @Override
+                public boolean isValid() {
+                    String currentName = name.getText();
+
+                    boolean notEmpty = !Utils.isStripEmpty(currentName);
+                    boolean exist = !currentName.equals(nameToEdit) &&
+                                        items.containsKey(currentName);
+
+                    return notEmpty && !exist;
+                }
+            };
+
+            this.name.getDocument().addDocumentListener(this.nameValidator);
+            this.query.getDocument().addDocumentListener(this.queryValidator);
+
+            JPanel panel = new JPanel(new GridBagLayout());
+            JScrollPane queryScrollPane = GuiHelper.embedInVerticalScrollPane(this.query);
+            queryScrollPane.getVerticalScrollBar().setUnitIncrement(10); // make scrolling smooth
+
+            GBC constraint = GBC.eol().insets(8, 0, 8, 8).anchor(GBC.CENTER).fill(GBC.HORIZONTAL);
+            constraint.ipady = 250;
+            panel.add(this.name, GBC.eol().insets(5).anchor(GBC.SOUTHEAST).fill(GBC.HORIZONTAL));
+            panel.add(queryScrollPane, constraint);
+
+            setDefaultButton(SUCCESS_BTN + 1);
+            setCancelButton(CANCEL_BTN + 1);
+            setPreferredSize(new Dimension(400, 400));
+            setContent(panel, false);
+        }
+
+        /**
+         * Gets a new {@link SelectorItem} if one was created/modified.
+         * @return A {@link SelectorItem} object created out of the fields of the dialog.
+         */
+        public Optional<SelectorItem> getOutputItem() {
+            return this.outputItem;
+        }
+
+        @Override
+        protected void buttonAction(int buttonIndex, ActionEvent evt) {
+            if (buttonIndex == SUCCESS_BTN) {
+                if (!this.nameValidator.isValid()) {
+                    JOptionPane.showMessageDialog(
+                            componentParent,
+                            tr("The item cannot be created with provided name"),
+                            tr("Warning"),
+                            JOptionPane.WARNING_MESSAGE);
+
+                    return;
+                } else if (!this.queryValidator.isValid()) {
+                    JOptionPane.showMessageDialog(
+                            componentParent,
+                            tr("The item cannot be created with an empty query"),
+                            tr("Warning"),
+                            JOptionPane.WARNING_MESSAGE);
+
+                    return;
+                } else if (this.itemToEdit != null) { // editing the item
+                    String newKey = this.name.getText();
+                    String newQuery = this.query.getText();
+
+                    String itemKey = this.itemToEdit.getKey();
+                    String itemQuery = this.itemToEdit.getQuery();
+
+                    this.outputItem = Optional.of(new SelectorItem(
+                            this.name.getText(),
+                            this.query.getText(),
+                            !newKey.equals(itemKey) || !newQuery.equals(itemQuery)
+                                ? LocalDateTime.now()
+                                : this.itemToEdit.getLastEdit()));
+
+                } else { // creating new
+                    this.outputItem = Optional.of(new SelectorItem(
+                            this.name.getText(),
+                            this.query.getText()));
+                }
+            }
+
+            super.buttonAction(buttonIndex, evt);
+        }
+    }
+
+    /**
+     * This class represents an Overpass query used by the user that can be
+     * shown within {@link OverpassQueryList}.
+     */
+    public static class SelectorItem {
+        private final String itemKey;
+        private final String query;
+        private final LocalDateTime lastEdit;
+
+        /**
+         * Constructs a new {@code SelectorItem}.
+         * @param key The key of this item.
+         * @param query The query of the item.
+         * @exception NullPointerException if any parameter is {@code null}.
+         * @exception IllegalArgumentException if any parameter is empty.
+         */
+        public SelectorItem(String key, String query) {
+            this(key, query, LocalDateTime.now());
+        }
+
+        /**
+         * Constructs a new {@code SelectorItem}.
+         * @param key The key of this item.
+         * @param query The query of the item.
+         * @param lastEdit The latest when the item was
+         * @exception NullPointerException if any parameter is {@code null}.
+         * @exception IllegalArgumentException if any parameter is empty.
+         */
+        public SelectorItem(String key, String query, LocalDateTime lastEdit) {
+            Objects.requireNonNull(key, "The name of the item cannot be null");
+            Objects.requireNonNull(query, "The query of the item cannot be null");
+            Objects.requireNonNull(lastEdit, "The last edit date time cannot be null");
+
+            if (Utils.isStripEmpty(key)) {
+                throw new IllegalArgumentException("The key of the item cannot be empty");
+            }
+            if (Utils.isStripEmpty(query)) {
+                throw new IllegalArgumentException("The query cannot be empty");
+            }
+
+            this.itemKey = key;
+            this.query = query;
+            this.lastEdit = lastEdit;
+        }
+
+        /**
+         * Gets the key (a string that is displayed in the selector) of this item.
+         * @return A string representing the key of this item.
+         */
+        public String getKey() {
+            return this.itemKey;
+        }
+
+        /**
+         * Gets the overpass query of this item.
+         * @return A string representing the overpass query of this item.
+         */
+        public String getQuery() {
+            return this.query;
+        }
+
+        /**
+         * Gets the latest date time when the item was created/changed.
+         * @return The latest date time when the item was created/changed.
+         */
+        public LocalDateTime getLastEdit() {
+            return lastEdit;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((itemKey == null) ? 0 : itemKey.hashCode());
+            result = prime * result + ((query == null) ? 0 : query.hashCode());
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            SelectorItem other = (SelectorItem) obj;
+            if (itemKey == null) {
+                if (other.itemKey != null) {
+                    return false;
+                }
+            } else if (!itemKey.equals(other.itemKey)) {
+                return false;
+            }
+            if (query == null) {
+                if (other.query != null) {
+                    return false;
+                }
+            } else if (!query.equals(other.query)) {
+                return false;
+            }
+            return true;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java b/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java
new file mode 100644
index 0000000..51f7073
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java
@@ -0,0 +1,245 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Optional;
+
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.text.JTextComponent;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.CollectionProperty;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
+import org.openstreetmap.josm.tools.UncheckedParseException;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * This dialog provides an easy and fast way to create an overpass query.
+ * @since 12576
+ * @since 12652: Moved here
+ */
+public final class OverpassQueryWizardDialog extends ExtendedDialog {
+
+    private final HistoryComboBox queryWizard;
+    private static final String HEADLINE_START = "<h3>";
+    private static final String HEADLINE_END = "</h3>";
+    private static final String TR_START = "<tr>";
+    private static final String TR_END = "</tr>";
+    private static final String TD_START = "<td>";
+    private static final String TD_END = "</td>";
+    private static final String SPAN_START = "<span>";
+    private static final String SPAN_END = "</span>";
+    private static final CollectionProperty OVERPASS_WIZARD_HISTORY =
+            new CollectionProperty("download.overpass.wizard", new ArrayList<String>());
+    private final transient OverpassTurboQueryWizard overpassQueryBuilder;
+
+    // dialog buttons
+    private static final int BUILD_QUERY = 0;
+    private static final int BUILD_AN_EXECUTE_QUERY = 1;
+    private static final int CANCEL = 2;
+
+    private static final String DESCRIPTION_STYLE =
+            "<style type=\"text/css\">\n"
+            + "table { border-spacing: 0pt;}\n"
+            + "h3 {text-align: center; padding: 8px;}\n"
+            + "td {border: 1px solid #dddddd; text-align: left; padding: 8px;}\n"
+            + "#desc {width: 350px;}"
+            + "</style>\n";
+
+    private final OverpassDownloadSource.OverpassDownloadSourcePanel dsPanel;
+
+    /**
+     * Create a new {@link OverpassQueryWizardDialog}
+     * @param dsPanel The Overpass download source panel.
+     */
+    public OverpassQueryWizardDialog(OverpassDownloadSource.OverpassDownloadSourcePanel dsPanel) {
+        super(dsPanel.getParent(), tr("Overpass Turbo Query Wizard"),
+                tr("Build query"), tr("Build query and execute"), tr("Cancel"));
+        this.dsPanel = dsPanel;
+
+        this.queryWizard = new HistoryComboBox();
+        this.overpassQueryBuilder = OverpassTurboQueryWizard.getInstance();
+
+        JPanel panel = new JPanel(new GridBagLayout());
+
+        JLabel searchLabel = new JLabel(tr("Search :"));
+        JTextComponent descPane = buildDescriptionSection();
+        JScrollPane scroll = GuiHelper.embedInVerticalScrollPane(descPane);
+        scroll.getVerticalScrollBar().setUnitIncrement(10); // make scrolling smooth
+
+        panel.add(searchLabel, GBC.std().insets(0, 0, 0, 20).anchor(GBC.SOUTHEAST));
+        panel.add(queryWizard, GBC.eol().insets(0, 0, 0, 15).fill(GBC.HORIZONTAL).anchor(GBC.SOUTH));
+        panel.add(scroll, GBC.eol().fill(GBC.BOTH).anchor(GBC.CENTER));
+
+        queryWizard.setPossibleItems(OVERPASS_WIZARD_HISTORY.get());
+
+        setCancelButton(CANCEL + 1);
+        setDefaultButton(BUILD_AN_EXECUTE_QUERY + 1);
+        setContent(panel, false);
+    }
+
+    @Override
+    public void buttonAction(int buttonIndex, ActionEvent evt) {
+        switch (buttonIndex) {
+            case BUILD_QUERY:
+                if (this.buildQueryAction()) {
+                    this.saveHistory();
+                    super.buttonAction(BUILD_QUERY, evt);
+                }
+                break;
+            case BUILD_AN_EXECUTE_QUERY:
+                if (this.buildQueryAction()) {
+                    this.saveHistory();
+                    super.buttonAction(BUILD_AN_EXECUTE_QUERY, evt);
+
+                    DownloadDialog.getInstance().startDownload();
+                }
+                break;
+            default:
+                super.buttonAction(buttonIndex, evt);
+
+        }
+    }
+
+    /**
+     * Saves the latest, successfully parsed search term.
+     */
+    private void saveHistory() {
+        queryWizard.addCurrentItemToHistory();
+        OVERPASS_WIZARD_HISTORY.put(queryWizard.getHistory());
+    }
+
+    /**
+     * Tries to process a search term using {@link OverpassTurboQueryWizard}. If the term cannot
+     * be parsed, the the corresponding dialog is shown.
+     * @param searchTerm The search term to parse.
+     * @return {@link Optional#empty()} if an exception was thrown when parsing, meaning
+     * that the term cannot be processed, or non-empty {@link Optional} containing the result
+     * of parsing.
+     */
+    private Optional<String> tryParseSearchTerm(String searchTerm) {
+        try {
+            String query = this.overpassQueryBuilder.constructQuery(searchTerm);
+
+            return Optional.of(query);
+        } catch (UncheckedParseException ex) {
+            Logging.error(ex);
+            JOptionPane.showMessageDialog(
+                    dsPanel.getParent(),
+                    "<html>" +
+                     tr("The Overpass wizard could not parse the following query:") +
+                     Utils.joinAsHtmlUnorderedList(Collections.singleton(searchTerm)) +
+                     "</html>",
+                    tr("Parse error"),
+                    JOptionPane.ERROR_MESSAGE
+            );
+
+            return Optional.empty();
+        }
+    }
+
+    /**
+     * Builds an Overpass query out from {@link OverpassQueryWizardDialog#queryWizard} contents.
+     * @return {@code true} if the query successfully built, {@code false} otherwise.
+     */
+    private boolean buildQueryAction() {
+        final String wizardSearchTerm = this.queryWizard.getText();
+
+        Optional<String> q = this.tryParseSearchTerm(wizardSearchTerm);
+        if (q.isPresent()) {
+            String query = q.get();
+            dsPanel.setOverpassQuery(query);
+
+            return true;
+        }
+
+        return false;
+    }
+
+    private static JTextComponent buildDescriptionSection() {
+        JEditorPane descriptionSection = new JEditorPane("text/html", getDescriptionContent());
+        descriptionSection.setEditable(false);
+        descriptionSection.addHyperlinkListener(e -> {
+            if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
+                OpenBrowser.displayUrl(e.getURL().toString());
+            }
+        });
+
+        return descriptionSection;
+    }
+
+    private static String getDescriptionContent() {
+        return new StringBuilder("<html>")
+                .append(DESCRIPTION_STYLE)
+                .append("<body>")
+                .append(HEADLINE_START)
+                .append(tr("Query Wizard"))
+                .append(HEADLINE_END)
+                .append("<p>")
+                .append(tr("Allows you to interact with <i>Overpass API</i> by writing declarative, human-readable terms."))
+                .append(tr("The <i>Query Wizard</i> tool will transform those to a valid overpass query."))
+                .append(tr("For more detailed description see "))
+                .append(tr("<a href=\"{0}\">OSM Wiki</a>.", Main.getOSMWebsite() + "/wiki/Overpass_turbo/Wizard"))
+                .append("</p>")
+                .append(HEADLINE_START).append(tr("Hints")).append(HEADLINE_END)
+                .append("<table>").append(TR_START).append(TD_START)
+                .append(Utils.joinAsHtmlUnorderedList(Arrays.asList("<i>type:node</i>", "<i>type:relation</i>", "<i>type:way</i>")))
+                .append(TD_END).append(TD_START)
+                .append(SPAN_START).append(tr("Download objects of a certain type.")).append(SPAN_END)
+                .append(TD_END).append(TR_END)
+                .append(TR_START).append(TD_START)
+                .append(Utils.joinAsHtmlUnorderedList(
+                        Arrays.asList("<i>key=value in <u>location</u></i>",
+                                "<i>key=value around <u>location</u></i>",
+                                "<i>key=value in bbox</i>")))
+                .append(TD_END).append(TD_START)
+                .append(tr("Download object by specifying a specific location. For example,"))
+                .append(Utils.joinAsHtmlUnorderedList(Arrays.asList(
+                        tr("{0} all objects having {1} as attribute are downloaded.", "<i>tourism=hotel in Berlin</i> -", "'tourism=hotel'"),
+                        tr("{0} all object with the corresponding key/value pair located around Berlin. Note, the default value for radius "+
+                                "is set to 1000m, but it can be changed in the generated query.", "<i>tourism=hotel around Berlin</i> -"),
+                        tr("{0} all objects within the current selection that have {1} as attribute.", "<i>tourism=hotel in bbox</i> -",
+                                "'tourism=hotel'"))))
+                .append(SPAN_START)
+                .append(tr("Instead of <i>location</i> any valid place name can be used like address, city, etc."))
+                .append(SPAN_END)
+                .append(TD_END).append(TR_END)
+                .append(TR_START).append(TD_START)
+                .append(Utils.joinAsHtmlUnorderedList(Arrays.asList("<i>key=value</i>", "<i>key=*</i>", "<i>key~regex</i>",
+                        "<i>key!=value</i>", "<i>key!~regex</i>", "<i>key=\"combined value\"</i>")))
+                .append(TD_END).append(TD_START)
+                .append(tr("<span>Download objects that have some concrete key/value pair, only the key with any contents for the value, " +
+                        "the value matching some regular expression. \"Not equal\" operators are supported as well.</span>"))
+                .append(TD_END).append(TR_END)
+                .append(TR_START).append(TD_START)
+                .append(Utils.joinAsHtmlUnorderedList(Arrays.asList(
+                        tr("<i>expression1 {0} expression2</i>", "or"),
+                        tr("<i>expression1 {0} expression2</i>", "and"))))
+                .append(TD_END).append(TD_START)
+                .append(SPAN_START)
+                .append(tr("Basic logical operators can be used to create more sophisticated queries. Instead of \"or\" - \"|\", \"||\" " +
+                        "can be used, and instead of \"and\" - \"&\", \"&&\"."))
+                .append(SPAN_END)
+                .append(TD_END).append(TR_END).append("</table>")
+                .append("</body>")
+                .append("</html>")
+                .toString();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
index c075601..08d9f19 100644
--- a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
@@ -46,6 +46,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
@@ -56,6 +57,7 @@ import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -188,7 +190,7 @@ public class PlaceSelection implements DownloadSelection {
             cbSearchExpression.addCurrentItemToHistory();
             Main.pref.putCollection(HISTORY_KEY, cbSearchExpression.getHistory());
             NameQueryTask task = new NameQueryTask(cbSearchExpression.getText());
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
 
         protected final void updateEnabledState() {
@@ -266,7 +268,7 @@ public class PlaceSelection implements DownloadSelection {
             } catch (SAXParseException e) {
                 if (!canceled) {
                     // Nominatim sometimes returns garbage, see #5934, #10643
-                    Main.warn(e, tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()));
+                    Logging.log(Logging.LEVEL_WARN, tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()), e);
                     GuiHelper.runInEDTAndWait(() -> HelpAwareOptionPane.showOptionDialog(
                             Main.parent,
                             tr("Name server returned invalid data. Please try again."),
diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
index ac911b3..c4ce3e4 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
@@ -44,15 +44,17 @@ import javax.swing.text.html.StyleSheet;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.gui.widgets.JosmHTMLEditorKit;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.LanguageInfo.LocaleType;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Help browser displaying HTML pages fetched from JOSM wiki.
@@ -141,8 +143,8 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
         try (CachedFile cf = new CachedFile("resource://data/help-browser.css")) {
             css = new String(cf.getByteContent(), StandardCharsets.ISO_8859_1);
         } catch (IOException e) {
-            Main.error(tr("Failed to read CSS file ''help-browser.css''. Exception is: {0}", e.toString()));
-            Main.error(e);
+            Logging.error(tr("Failed to read CSS file ''help-browser.css''. Exception is: {0}", e.toString()));
+            Logging.error(e);
             return ss;
         }
         ss.addRule(css);
@@ -214,13 +216,14 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
         } else if (isShowing()) { // Avoid IllegalComponentStateException like in #8775
             new WindowGeometry(this).remember(getClass().getName() + ".geometry");
         }
-        if (Main.main != null && Main.main.menu != null && Main.main.menu.windowMenu != null) {
+        MainMenu menu = MainApplication.getMenu();
+        if (menu != null && menu.windowMenu != null) {
             if (windowMenuItem != null && !visible) {
-                Main.main.menu.windowMenu.remove(windowMenuItem);
+                menu.windowMenu.remove(windowMenuItem);
                 windowMenuItem = null;
             }
             if (windowMenuItem == null && visible) {
-                windowMenuItem = MainMenu.add(Main.main.menu.windowMenu, FOCUS_ACTION, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
+                windowMenuItem = MainMenu.add(menu.windowMenu, FOCUS_ACTION, MainMenu.WINDOW_MENU_GROUP.VOLATILE);
             }
         }
         super.setVisible(visible);
@@ -235,7 +238,7 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
         try {
             help.getEditorKit().read(new StringReader(content), document, 0);
         } catch (IOException | BadLocationException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         help.setDocument(document);
     }
@@ -299,32 +302,32 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
         try {
             content = reader.fetchHelpTopicContent(url, true);
         } catch (MissingHelpContentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             url = getHelpTopicUrl(buildAbsoluteHelpTopic(relativeHelpTopic, LocaleType.BASELANGUAGE));
             try {
                 content = reader.fetchHelpTopicContent(url, true);
             } catch (MissingHelpContentException e1) {
-                Main.trace(e1);
+                Logging.trace(e1);
                 url = getHelpTopicUrl(buildAbsoluteHelpTopic(relativeHelpTopic, LocaleType.ENGLISH));
                 try {
                     content = reader.fetchHelpTopicContent(url, true);
                 } catch (MissingHelpContentException e2) {
-                    Main.debug(e2);
+                    Logging.debug(e2);
                     this.url = url;
                     handleMissingHelpContent(relativeHelpTopic);
                     return;
                 } catch (HelpContentReaderException e2) {
-                    Main.error(e2);
+                    Logging.error(e2);
                     handleHelpContentReaderException(relativeHelpTopic, e2);
                     return;
                 }
             } catch (HelpContentReaderException e1) {
-                Main.error(e1);
+                Logging.error(e1);
                 handleHelpContentReaderException(relativeHelpTopic, e1);
                 return;
             }
         } catch (HelpContentReaderException e) {
-            Main.error(e);
+            Logging.error(e);
             handleHelpContentReaderException(relativeHelpTopic, e);
             return;
         }
@@ -345,12 +348,12 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
         try {
             content = reader.fetchHelpTopicContent(url, true);
         } catch (MissingHelpContentException e) {
-            Main.debug(e);
+            Logging.debug(e);
             this.url = url;
             handleMissingHelpContent(absoluteHelpTopic);
             return;
         } catch (HelpContentReaderException e) {
-            Main.error(e);
+            Logging.error(e);
             handleHelpContentReaderException(absoluteHelpTopic, e);
             return;
         }
@@ -376,7 +379,7 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
                 history.setCurrentUrl(url);
                 this.url = url;
             } catch (HelpContentReaderException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 HelpAwareOptionPane.showOptionDialog(
                         Main.parent,
                         tr(
@@ -586,8 +589,8 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
                         return true;
                     }
                 } catch (BadLocationException e) {
-                    Main.warn(tr("Bad location in HTML document. Exception was: {0}", e.toString()));
-                    Main.error(e);
+                    Logging.warn(tr("Bad location in HTML document. Exception was: {0}", e.toString()));
+                    Logging.error(e);
                 }
             }
             return false;
diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java b/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
index 4fcc06b..6ce6d3e 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
@@ -79,23 +79,25 @@ public class HelpBrowserHistory extends ChangeNotifier {
      * @param url the new current URL
      */
     public void setCurrentUrl(String url) {
-        boolean add = true;
+        if (url != null) {
+            boolean add = true;
 
-        if (historyPos >= 0 && historyPos < history.size() && history.get(historyPos).equals(url)) {
-            add = false;
-        } else if (historyPos == history.size() -1) {
-            // do nothing just append
-        } else if (historyPos == 0 && !history.isEmpty()) {
-            history = new ArrayList<>(Collections.singletonList(history.get(0)));
-        } else if (historyPos < history.size() -1 && historyPos > 0) {
-            history = new ArrayList<>(history.subList(0, historyPos));
-        } else {
-            history = new ArrayList<>();
+            if (historyPos >= 0 && historyPos < history.size() && history.get(historyPos).equals(url)) {
+                add = false;
+            } else if (historyPos == history.size() -1) {
+                // do nothing just append
+            } else if (historyPos == 0 && !history.isEmpty()) {
+                history = new ArrayList<>(Collections.singletonList(history.get(0)));
+            } else if (historyPos < history.size() -1 && historyPos > 0) {
+                history = new ArrayList<>(history.subList(0, historyPos));
+            } else {
+                history = new ArrayList<>();
+            }
+            if (add) {
+                history.add(url);
+                historyPos = history.size()-1;
+            }
+            fireStateChanged();
         }
-        if (add) {
-            history.add(url);
-            historyPos = history.size()-1;
-        }
-        fireStateChanged();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/help/HelpUtil.java b/src/org/openstreetmap/josm/gui/help/HelpUtil.java
index dd7f1af..9c50d40 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpUtil.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpUtil.java
@@ -12,6 +12,7 @@ import javax.swing.KeyStroke;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.HelpAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.LanguageInfo.LocaleType;
 
@@ -186,14 +187,13 @@ public final class HelpUtil {
     }
 
     /**
-     * Replies the global help action, if available. Otherwise, creates an instance
-     * of {@link HelpAction}.
+     * Replies the global help action, if available. Otherwise, creates an instance of {@link HelpAction}.
      *
      * @return instance of help action
      */
     private static Action getHelpAction() {
-        if (Main.main != null && Main.main.menu != null) {
-            return Main.main.menu.help;
+        if (MainApplication.getMenu() != null) {
+            return MainApplication.getMenu().help;
         }
         return HelpAction.createWithoutShortcut();
     }
@@ -201,9 +201,8 @@ public final class HelpUtil {
     /**
      * Makes a component aware of context sensitive help.
      *
-     * A relative help topic doesn't start with /Help and doesn't include a locale
-     * code. Example: /Dialog/RelationEditor is a relative help topic, /De:Help/Dialog/RelationEditor
-     * is not.
+     * A relative help topic doesn't start with /Help and doesn't include a locale code.
+     * Example: /Dialog/RelationEditor is a relative help topic, /De:Help/Dialog/RelationEditor is not.
      *
      * @param component the component
      * @param relativeHelpTopic the help topic. Set to the default help topic if null.
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
index ff143e6..0b4a2d4 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
@@ -22,6 +22,7 @@ import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSetListener;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -181,7 +182,7 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
         public void actionPerformed(ActionEvent e) {
             HistoryLoadTask task = new HistoryLoadTask();
             task.add(browser.getHistory());
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
index d4182d9..a4f8fb5 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
@@ -22,13 +22,14 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 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.gui.util.WindowGeometry;
 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;
 
 /**
@@ -64,7 +65,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
 
     protected HistoryBrowserDialogManager() {
         dialogs = new HashMap<>();
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
     /**
@@ -212,7 +213,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
             for (PrimitiveId p : notNewPrimitives) {
                 task.add(p);
             }
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
 
         Runnable r = () -> {
@@ -228,6 +229,6 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
                 BugReportExceptionHandler.handleException(e);
             }
         };
-        Main.worker.submit(r);
+        MainApplication.worker.submit(r);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
index a1091ec..3299a3f 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
@@ -35,12 +35,14 @@ import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 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.Logging;
 
 /**
  * This is the model used by the history browser.
@@ -99,12 +101,12 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         referenceRelationMemberTableModel = new DiffTableModel();
 
         if (Main.main != null) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null) {
                 editLayer.data.addDataSetListener(this);
             }
         }
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
     /**
@@ -137,7 +139,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         try {
             HistoryOsmPrimitive.forOsmPrimitive(primitive);
         } catch (IllegalArgumentException ign) {
-            Main.trace(ign);
+            Logging.trace(ign);
             return false;
         }
 
@@ -168,7 +170,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         this.history = history;
         if (history.getNumVersions() > 0) {
             HistoryOsmPrimitive newLatest = null;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null) {
                 OsmPrimitive p = editLayer.data.getPrimitiveById(history.getId(), history.getType());
                 if (canShowAsLatest(p)) {
@@ -529,11 +531,11 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
      *
      */
     public void unlinkAsListener() {
-        OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
         if (editLayer != null) {
             editLayer.data.removeDataSetListener(this);
         }
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
     /* ---------------------------------------------------------------------- */
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java b/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
index 34f3c80..128f415 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
@@ -42,7 +42,7 @@ import org.xml.sax.SAXException;
  *      .add(relation)
  *      .add(aHistoryItem);
  *
- *   Main.worker.execute(task);
+ *   MainApplication.worker.execute(task);
  * </pre>
  */
 public class HistoryLoadTask extends PleaseWaitRunnable {
diff --git a/src/org/openstreetmap/josm/gui/history/NodeListTableCellRenderer.java b/src/org/openstreetmap/josm/gui/history/NodeListTableCellRenderer.java
index b1e1a61..f0d2d35 100644
--- a/src/org/openstreetmap/josm/gui/history/NodeListTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/history/NodeListTableCellRenderer.java
@@ -15,6 +15,12 @@ import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * A {@link TableCellRenderer} for the {@link NodeListViewer}.
+ * 
+ * Renders information about a node when comparing the node list of two
+ * historical versions of a way.
+ */
 public class NodeListTableCellRenderer extends JLabel implements TableCellRenderer {
 
     public static final Color BGCOLOR_SELECTED = new Color(143, 170, 255);
diff --git a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
index 95c4496..fc38a89 100644
--- a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
+++ b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
@@ -20,7 +20,6 @@ import javax.swing.ListSelectionModel;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -28,6 +27,7 @@ import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.AdjustmentSynchronizer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -248,7 +248,7 @@ public class NodeListViewer extends JPanel {
                 return;
             OsmPrimitive p = getPrimitiveToZoom();
             if (p != null) {
-                OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+                OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
                 if (editLayer != null) {
                     editLayer.data.setSelected(p.getPrimitiveId());
                     AutoScaleAction.autoScale("selection");
@@ -264,14 +264,14 @@ public class NodeListViewer extends JPanel {
         protected OsmPrimitive getPrimitiveToZoom() {
             if (primitiveId == null)
                 return null;
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer == null)
                 return null;
             return editLayer.data.getPrimitiveById(primitiveId);
         }
 
         public void updateEnabledState() {
-            setEnabled(Main.getLayerManager().getEditLayer() != null && getPrimitiveToZoom() != null);
+            setEnabled(MainApplication.getLayerManager().getEditLayer() != null && getPrimitiveToZoom() != null);
         }
     }
 
@@ -301,9 +301,9 @@ public class NodeListViewer extends JPanel {
 
         public void run() {
             if (HistoryDataSet.getInstance().getHistory(primitiveId) == null) {
-                Main.worker.submit(new HistoryLoadTask().add(primitiveId));
+                MainApplication.worker.submit(new HistoryLoadTask().add(primitiveId));
             }
-            Main.worker.submit(() -> {
+            MainApplication.worker.submit(() -> {
                 final History h = HistoryDataSet.getInstance().getHistory(primitiveId);
                 if (h == null)
                     return;
diff --git a/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java b/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
index aa6ce6a..be2cd0c 100644
--- a/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
+++ b/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
@@ -9,6 +9,12 @@ import javax.swing.ListSelectionModel;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
+/**
+ * Helper class to ensure that two (or more) {@link javax.swing.JTable}s always
+ * have the same entries selected.
+ * 
+ * The tables are usually displayed side-by-side.
+ */
 public class SelectionSynchronizer implements ListSelectionListener {
 
     private final Set<ListSelectionModel> participants;
@@ -21,6 +27,13 @@ public class SelectionSynchronizer implements ListSelectionListener {
         participants = new HashSet<>();
     }
 
+    /**
+     * Add {@link ListSelectionModel} of the table to participate in selection
+     * synchronization.
+     * 
+     * Call this method for all tables that should have their selection synchronized.
+     * @param model the selection model of the table
+     */
     public void participateInSynchronizedSelection(ListSelectionModel model) {
         if (model == null)
             return;
diff --git a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
index f001e98..7c0d4ad 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.ChangesetDialog;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetDiscussionPanel;
@@ -154,7 +155,7 @@ public class VersionInfoPanel extends JPanel implements ChangeListener {
     protected String getInfoText(final Date timestamp, final long version, final boolean isLatest) {
         String text;
         if (isLatest) {
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             text = tr("<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>",
                     Long.toString(version),
                     editLayer == null ? tr("unknown") : Utils.escapeReservedCharactersHTML(editLayer.getName())
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTableModel.java b/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
index e0fc7c7..381c91f 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
@@ -5,10 +5,10 @@ import java.text.DateFormat;
 
 import javax.swing.table.AbstractTableModel;
 
-import org.openstreetmap.josm.Main;
 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.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -93,7 +93,7 @@ public final class VersionTableModel extends AbstractTableModel {
                 return;
             }
         } catch (IllegalArgumentException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         fireTableDataChanged();
     }
diff --git a/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java b/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
index fcc6821..65e46b6 100644
--- a/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
+++ b/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.CheckParameterUtil.ensureParameterNot
 import java.io.IOException;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSetMerger;
@@ -15,10 +14,11 @@ import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.MultiFetchServerObjectReader;
 import org.openstreetmap.josm.io.OsmServerObjectReader;
@@ -185,7 +185,7 @@ public abstract class AbstractPrimitiveTask extends PleaseWaitRunnable {
         }
         GuiHelper.runInEDTAndWait(() -> {
             layer.mergeFrom(ds);
-            if (zoom && Main.map != null)
+            if (zoom && MainApplication.getMap() != null)
                 AutoScaleAction.zoomTo(ds.allPrimitives());
             layer.onPostDownloadFromServer();
         });
diff --git a/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java b/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
index eac62c8..56da0d5 100644
--- a/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
+++ b/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -33,6 +34,7 @@ import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmApiPrimitiveGoneException;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -83,14 +85,14 @@ public abstract class AbstractUploadTask extends PleaseWaitRunnable {
     protected void synchronizePrimitive(final OsmPrimitiveType type, final long id) {
         // FIXME: should now about the layer this task is running for. might
         // be different from the current edit layer
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null)
             throw new IllegalStateException(tr("Failed to update primitive with id {0} because current edit layer is null", id));
         OsmPrimitive p = layer.data.getPrimitiveById(id, type);
         if (p == null)
             throw new IllegalStateException(
                     tr("Failed to update primitive with id {0} because current edit layer does not include such a primitive", id));
-        Main.worker.execute(new UpdatePrimitivesTask(layer, Collections.singleton(p)));
+        MainApplication.worker.execute(new UpdatePrimitivesTask(layer, Collections.singleton(p)));
     }
 
     /**
@@ -272,7 +274,7 @@ public abstract class AbstractUploadTask extends PleaseWaitRunnable {
                 "/Action/Upload#NodeStillInUseInWay"
         );
         if (ret == 0) {
-            DownloadReferrersAction.downloadReferrers(Main.getLayerManager().getEditLayer(), Arrays.asList(conflict.a));
+            DownloadReferrersAction.downloadReferrers(MainApplication.getLayerManager().getEditLayer(), Arrays.asList(conflict.a));
         }
     }
 
@@ -297,7 +299,7 @@ public abstract class AbstractUploadTask extends PleaseWaitRunnable {
                 return;
             }
         }
-        Main.warn(tr("Error header \"{0}\" did not match with an expected pattern", errorHeader));
+        Logging.warn(tr("Error header \"{0}\" did not match with an expected pattern", errorHeader));
         handleUploadConflictForUnknownConflict();
     }
 
@@ -312,7 +314,7 @@ public abstract class AbstractUploadTask extends PleaseWaitRunnable {
         if (conflict != null) {
             handleUploadPreconditionFailedConflict(e, conflict);
         } else {
-            Main.warn(tr("Error header \"{0}\" did not match with an expected pattern", e.getErrorHeader()));
+            Logging.warn(tr("Error header \"{0}\" did not match with an expected pattern", e.getErrorHeader()));
             ExceptionDialogUtil.explainPreconditionFailed(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
index 4e03dcb..7dc0cba 100644
--- a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
@@ -27,6 +27,7 @@ import javax.swing.event.HyperlinkEvent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -83,7 +84,7 @@ public class BasicUploadSettingsPanel extends JPanel {
                 + "</b> (<a href=\"urn:changeset-source\">" + tr("obtain from current layers") + "</a>)<b>:</b>");
         sourceLabel.addHyperlinkListener(e -> {
             if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
-                final String source = Main.map.mapView.getLayerInformationForSourceTag();
+                final String source = MainApplication.getMap().mapView.getLayerInformationForSourceTag();
                 hcbUploadSource.setText(Utils.shortenString(source, Changeset.MAX_CHANGESET_TAG_LENGTH));
                 // Fix #9965
                 changesetSourceModel.setComment(hcbUploadSource.getText());
diff --git a/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java b/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
index bb08246..2523fba 100644
--- a/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
@@ -25,6 +25,7 @@ import javax.swing.event.ListDataListener;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -298,8 +299,7 @@ public class ChangesetManagementPanel extends JPanel implements ListDataListener
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            DownloadOpenChangesetsTask task = new DownloadOpenChangesetsTask(ChangesetManagementPanel.this);
-            Main.worker.submit(task);
+            MainApplication.worker.submit(new DownloadOpenChangesetsTask(ChangesetManagementPanel.this));
         }
     }
 
@@ -318,8 +318,7 @@ public class ChangesetManagementPanel extends JPanel implements ListDataListener
         public void actionPerformed(ActionEvent e) {
             Changeset cs = (Changeset) cbOpenChangesets.getSelectedItem();
             if (cs == null) return;
-            CloseChangesetTask task = new CloseChangesetTask(Collections.singletonList(cs));
-            Main.worker.submit(task);
+            MainApplication.worker.submit(new CloseChangesetTask(Collections.singletonList(cs)));
         }
 
         protected void refreshEnabledState() {
diff --git a/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java b/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
index 309151c..daa309a 100644
--- a/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
@@ -28,9 +28,9 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This dialog lets the user select changesets from a list of changesets.
diff --git a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
index 9231a76..88e0d1e 100644
--- a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
@@ -32,13 +32,14 @@ import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Dialog box to request username and password from the user.
@@ -112,7 +113,7 @@ public class CredentialDialog extends JDialog {
         try {
             setAlwaysOnTop(true);
         } catch (SecurityException e) {
-            Main.warn(e, tr("Failed to put Credential Dialog always on top. Caught security exception."));
+            Logging.log(Logging.LEVEL_WARN, tr("Failed to put Credential Dialog always on top. Caught security exception."), e);
         }
         build();
     }
diff --git a/src/org/openstreetmap/josm/data/CustomConfigurator.java b/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
similarity index 59%
rename from src/org/openstreetmap/josm/data/CustomConfigurator.java
rename to src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
index 8088b14..0500a1a 100644
--- a/src/org/openstreetmap/josm/data/CustomConfigurator.java
+++ b/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data;
+package org.openstreetmap.josm.gui.io;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -17,13 +17,10 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
-import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -44,16 +41,16 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.preferences.ListListSetting;
-import org.openstreetmap.josm.data.preferences.ListSetting;
-import org.openstreetmap.josm.data.preferences.MapListSetting;
+import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.PreferencesUtils;
+import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.data.preferences.Setting;
-import org.openstreetmap.josm.data.preferences.StringSetting;
-import org.openstreetmap.josm.gui.io.DownloadFileTask;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.PluginDownloadTask;
 import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.plugins.ReadLocalPluginInformationTask;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -99,7 +96,7 @@ public final class CustomConfigurator {
      * @since 10469
      */
     public static void log(Exception e, String s) {
-        summary.append(s).append(' ').append(Main.getErrorMessage(e)).append('\n');
+        summary.append(s).append(' ').append(Logging.getErrorMessage(e)).append('\n');
     }
 
     /**
@@ -186,7 +183,7 @@ public final class CustomConfigurator {
         File fOut = new File(dir, path);
         DownloadFileTask downloadFileTask = new DownloadFileTask(Main.parent, address, fOut, mkdir, unzip);
 
-        Main.worker.submit(downloadFileTask);
+        MainApplication.worker.submit(downloadFileTask);
         log("Info: downloading file from %s to %s in background ", parentDir, fOut.getAbsolutePath());
         if (unzip) log("and unpacking it"); else log("");
 
@@ -205,7 +202,7 @@ public final class CustomConfigurator {
             case 'e': JOptionPane.showMessageDialog(Main.parent, text, tr("Error"), JOptionPane.ERROR_MESSAGE); break;
             case 'q': JOptionPane.showMessageDialog(Main.parent, text, tr("Question"), JOptionPane.QUESTION_MESSAGE); break;
             case 'p': JOptionPane.showMessageDialog(Main.parent, text, tr("Message"), JOptionPane.PLAIN_MESSAGE); break;
-            default: Main.warn("Unsupported messageBox type: " + c);
+            default: Logging.warn("Unsupported messageBox type: " + c);
         }
     }
 
@@ -280,7 +277,7 @@ public final class CustomConfigurator {
             exportDocument = builder.newDocument();
             root = document.getDocumentElement();
         } catch (SAXException | IOException | ParserConfigurationException ex) {
-            Main.warn(ex, "Error getting preferences to save:");
+            Logging.log(Logging.LEVEL_WARN, "Error getting preferences to save:", ex);
         }
         if (root == null || exportDocument == null)
             return;
@@ -309,8 +306,8 @@ public final class CustomConfigurator {
             ts.setOutputProperty(OutputKeys.INDENT, "yes");
             ts.transform(new DOMSource(exportDocument), new StreamResult(f.toURI().getPath()));
         } catch (DOMException | TransformerFactoryConfigurationError | TransformerException ex) {
-            Main.warn("Error saving preferences part:");
-            Main.error(ex);
+            Logging.warn("Error saving preferences part:");
+            Logging.error(ex);
         }
     }
 
@@ -374,7 +371,7 @@ public final class CustomConfigurator {
                 try { // proceed only after all other tasks were finished
                     while (busy) CustomConfigurator.class.wait();
                 } catch (InterruptedException ex) {
-                    Main.warn(ex, "InterruptedException while reading local plugin information");
+                    Logging.log(Logging.LEVEL_WARN, "InterruptedException while reading local plugin information", ex);
                     Thread.currentThread().interrupt();
                 }
 
@@ -392,7 +389,7 @@ public final class CustomConfigurator {
                     if (!installList.isEmpty()) {
                         PluginDownloadTask pluginDownloadTask =
                                 new PluginDownloadTask(Main.parent, toInstallPlugins, tr("Installing plugins"));
-                        Main.worker.submit(pluginDownloadTask);
+                        MainApplication.worker.submit(pluginDownloadTask);
                     }
                     Collection<String> pls = new ArrayList<>(Main.pref.getCollection("plugins"));
                     for (PluginInformation pi2: toInstallPlugins) {
@@ -411,8 +408,8 @@ public final class CustomConfigurator {
                 });
             }
         };
-        Main.worker.submit(task);
-        Main.worker.submit(r);
+        MainApplication.worker.submit(task);
+        MainApplication.worker.submit(r);
     }
 
     private static String getDirectoryByAbbr(String base) {
@@ -429,15 +426,6 @@ public final class CustomConfigurator {
         return dir;
     }
 
-    public static Preferences clonePreferences(Preferences pref) {
-        Preferences tmp = new Preferences();
-        tmp.settingsMap.putAll(pref.settingsMap);
-        tmp.defaultsMap.putAll(pref.defaultsMap);
-        tmp.colornames.putAll(pref.colornames);
-
-        return tmp;
-    }
-
     public static class XMLCommandProcessor {
 
         private Preferences mainPrefs;
@@ -494,7 +482,7 @@ public final class CustomConfigurator {
                 engine.eval("API.pluginDelete = function(names) { "+className+".pluginOperation('','',names);}");
             } catch (ScriptException ex) {
                 log("Error: initializing script engine: "+ex.getMessage());
-                Main.error(ex);
+                Logging.error(ex);
             }
         }
 
@@ -757,407 +745,4 @@ public final class CustomConfigurator {
             return s;
         }
     }
-
-    /**
-     * Helper class to do specific Preferences operation - appending, replacing,
-     * deletion by key and by value
-     * Also contains functions that convert preferences object to JavaScript object and back
-     */
-    public static final class PreferencesUtils {
-
-        private PreferencesUtils() {
-            // Hide implicit public constructor for utility class
-        }
-
-        private static void replacePreferences(Preferences fragment, Preferences mainpref) {
-            for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
-                mainpref.putSetting(entry.getKey(), entry.getValue());
-            }
-        }
-
-        private static void appendPreferences(Preferences fragment, Preferences mainpref) {
-            for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
-                String key = entry.getKey();
-                if (entry.getValue() instanceof StringSetting) {
-                    mainpref.putSetting(key, entry.getValue());
-                } else if (entry.getValue() instanceof ListSetting) {
-                    ListSetting lSetting = (ListSetting) entry.getValue();
-                    Collection<String> newItems = getCollection(mainpref, key, true);
-                    if (newItems == null) continue;
-                    for (String item : lSetting.getValue()) {
-                        // add nonexisting elements to then list
-                        if (!newItems.contains(item)) {
-                            newItems.add(item);
-                        }
-                    }
-                    mainpref.putCollection(key, newItems);
-                } else if (entry.getValue() instanceof ListListSetting) {
-                    ListListSetting llSetting = (ListListSetting) entry.getValue();
-                    Collection<Collection<String>> newLists = getArray(mainpref, key, true);
-                    if (newLists == null) continue;
-
-                    for (Collection<String> list : llSetting.getValue()) {
-                        // add nonexisting list (equals comparison for lists is used implicitly)
-                        if (!newLists.contains(list)) {
-                            newLists.add(list);
-                        }
-                    }
-                    mainpref.putArray(key, newLists);
-                } else if (entry.getValue() instanceof MapListSetting) {
-                    MapListSetting mlSetting = (MapListSetting) entry.getValue();
-                    List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
-                    if (newMaps == null) continue;
-
-                    // get existing properties as list of maps
-
-                    for (Map<String, String> map : mlSetting.getValue()) {
-                        // add nonexisting map (equals comparison for maps is used implicitly)
-                        if (!newMaps.contains(map)) {
-                            newMaps.add(map);
-                        }
-                    }
-                    mainpref.putListOfStructs(entry.getKey(), newMaps);
-                }
-            }
-        }
-
-        /**
-         * Delete items from {@code mainpref} collections that match items from {@code fragment} collections.
-         * @param fragment preferences
-         * @param mainpref main preferences
-         */
-        private static void deletePreferenceValues(Preferences fragment, Preferences mainpref) {
-
-            for (Entry<String, Setting<?>> entry : fragment.settingsMap.entrySet()) {
-                String key = entry.getKey();
-                if (entry.getValue() instanceof StringSetting) {
-                    StringSetting sSetting = (StringSetting) entry.getValue();
-                    // if mentioned value found, delete it
-                    if (sSetting.equals(mainpref.settingsMap.get(key))) {
-                        mainpref.put(key, null);
-                    }
-                } else if (entry.getValue() instanceof ListSetting) {
-                    ListSetting lSetting = (ListSetting) entry.getValue();
-                    Collection<String> newItems = getCollection(mainpref, key, true);
-                    if (newItems == null) continue;
-
-                    // remove mentioned items from collection
-                    for (String item : lSetting.getValue()) {
-                        log("Deleting preferences: from list %s: %s\n", key, item);
-                        newItems.remove(item);
-                    }
-                    mainpref.putCollection(entry.getKey(), newItems);
-                } else if (entry.getValue() instanceof ListListSetting) {
-                    ListListSetting llSetting = (ListListSetting) entry.getValue();
-                    Collection<Collection<String>> newLists = getArray(mainpref, key, true);
-                    if (newLists == null) continue;
-
-                    // if items are found in one of lists, remove that list!
-                    Iterator<Collection<String>> listIterator = newLists.iterator();
-                    while (listIterator.hasNext()) {
-                        Collection<String> list = listIterator.next();
-                        for (Collection<String> removeList : llSetting.getValue()) {
-                            if (list.containsAll(removeList)) {
-                                // remove current list, because it matches search criteria
-                                log("Deleting preferences: list from lists %s: %s\n", key, list);
-                                listIterator.remove();
-                            }
-                        }
-                    }
-
-                    mainpref.putArray(key, newLists);
-                } else if (entry.getValue() instanceof MapListSetting) {
-                    MapListSetting mlSetting = (MapListSetting) entry.getValue();
-                    List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
-                    if (newMaps == null) continue;
-
-                    Iterator<Map<String, String>> mapIterator = newMaps.iterator();
-                    while (mapIterator.hasNext()) {
-                        Map<String, String> map = mapIterator.next();
-                        for (Map<String, String> removeMap : mlSetting.getValue()) {
-                            if (map.entrySet().containsAll(removeMap.entrySet())) {
-                                // the map contain all mentioned key-value pair, so it should be deleted from "maps"
-                                log("Deleting preferences: deleting map from maps %s: %s\n", key, map);
-                                mapIterator.remove();
-                            }
-                        }
-                    }
-                    mainpref.putListOfStructs(entry.getKey(), newMaps);
-                }
-            }
-        }
-
-    private static void deletePreferenceKeyByPattern(String pattern, Preferences pref) {
-        Map<String, Setting<?>> allSettings = pref.getAllSettings();
-        for (Entry<String, Setting<?>> entry : allSettings.entrySet()) {
-            String key = entry.getKey();
-            if (key.matches(pattern)) {
-                log("Deleting preferences: deleting key from preferences: " + key);
-                pref.putSetting(key, null);
-            }
-        }
-    }
-
-    private static void deletePreferenceKey(String key, Preferences pref) {
-        Map<String, Setting<?>> allSettings = pref.getAllSettings();
-        if (allSettings.containsKey(key)) {
-            log("Deleting preferences: deleting key from preferences: " + key);
-            pref.putSetting(key, null);
-        }
-    }
-
-    private static Collection<String> getCollection(Preferences mainpref, String key, boolean warnUnknownDefault) {
-        ListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListSetting.class);
-        ListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListSetting.class);
-        if (existing == null && defaults == null) {
-            if (warnUnknownDefault) defaultUnknownWarning(key);
-            return null;
-        }
-        if (existing != null)
-            return new ArrayList<>(existing.getValue());
-        else
-            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
-    }
-
-    private static Collection<Collection<String>> getArray(Preferences mainpref, String key, boolean warnUnknownDefault) {
-        ListListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListListSetting.class);
-        ListListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListListSetting.class);
-
-        if (existing == null && defaults == null) {
-            if (warnUnknownDefault) defaultUnknownWarning(key);
-            return null;
-        }
-        if (existing != null)
-            return new ArrayList<>(existing.getValue());
-        else
-            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
-    }
-
-    private static List<Map<String, String>> getListOfStructs(Preferences mainpref, String key, boolean warnUnknownDefault) {
-        MapListSetting existing = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
-        MapListSetting defaults = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
-
-        if (existing == null && defaults == null) {
-            if (warnUnknownDefault) defaultUnknownWarning(key);
-            return null;
-        }
-
-        if (existing != null)
-            return new ArrayList<>(existing.getValue());
-        else
-            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
-    }
-
-    private static void defaultUnknownWarning(String key) {
-        log("Warning: Unknown default value of %s , skipped\n", key);
-        JOptionPane.showMessageDialog(
-                Main.parent,
-                tr("<html>Settings file asks to append preferences to <b>{0}</b>,<br/> "+
-                        "but its default value is unknown at this moment.<br/> " +
-                        "Please activate corresponding function manually and retry importing.", key),
-                tr("Warning"),
-                JOptionPane.WARNING_MESSAGE);
-    }
-
-    private static void showPrefs(Preferences tmpPref) {
-        Main.info("properties: " + tmpPref.settingsMap);
-    }
-
-    private static void modifyPreferencesByScript(ScriptEngine engine, Preferences tmpPref, String js) throws ScriptException {
-        loadPrefsToJS(engine, tmpPref, "API.pref", true);
-        engine.eval(js);
-        readPrefsFromJS(engine, tmpPref, "API.pref");
-    }
-
-    /**
-     * Convert JavaScript preferences object to preferences data structures
-     * @param engine - JS engine to put object
-     * @param tmpPref - preferences to fill from JS
-     * @param varInJS - JS variable name, where preferences are stored
-     * @throws ScriptException if the evaluation fails
-     */
-    public static void readPrefsFromJS(ScriptEngine engine, Preferences tmpPref, String varInJS) throws ScriptException {
-        String finish =
-            "stringMap = new java.util.TreeMap ;"+
-            "listMap =  new java.util.TreeMap ;"+
-            "listlistMap = new java.util.TreeMap ;"+
-            "listmapMap =  new java.util.TreeMap ;"+
-            "for (key in "+varInJS+") {"+
-            "  val = "+varInJS+"[key];"+
-            "  type = typeof val == 'string' ? 'string' : val.type;"+
-            "  if (type == 'string') {"+
-            "    stringMap.put(key, val);"+
-            "  } else if (type == 'list') {"+
-            "    l = new java.util.ArrayList;"+
-            "    for (i=0; i<val.length; i++) {"+
-            "      l.add(java.lang.String.valueOf(val[i]));"+
-            "    }"+
-            "    listMap.put(key, l);"+
-            "  } else if (type == 'listlist') {"+
-            "    l = new java.util.ArrayList;"+
-            "    for (i=0; i<val.length; i++) {"+
-            "      list=val[i];"+
-            "      jlist=new java.util.ArrayList;"+
-            "      for (j=0; j<list.length; j++) {"+
-            "         jlist.add(java.lang.String.valueOf(list[j]));"+
-            "      }"+
-            "      l.add(jlist);"+
-            "    }"+
-            "    listlistMap.put(key, l);"+
-            "  } else if (type == 'listmap') {"+
-            "    l = new java.util.ArrayList;"+
-            "    for (i=0; i<val.length; i++) {"+
-            "      map=val[i];"+
-            "      jmap=new java.util.TreeMap;"+
-            "      for (var key2 in map) {"+
-            "         jmap.put(key2,java.lang.String.valueOf(map[key2]));"+
-            "      }"+
-            "      l.add(jmap);"+
-            "    }"+
-            "    listmapMap.put(key, l);"+
-            "  }  else {" +
-            "   org.openstreetmap.josm.data.CustomConfigurator.log('Unknown type:'+val.type+ '- use list, listlist or listmap'); }"+
-            "  }";
-        engine.eval(finish);
-
-        @SuppressWarnings("unchecked")
-        Map<String, String> stringMap = (Map<String, String>) engine.get("stringMap");
-        @SuppressWarnings("unchecked")
-        Map<String, List<String>> listMap = (Map<String, List<String>>) engine.get("listMap");
-        @SuppressWarnings("unchecked")
-        Map<String, List<Collection<String>>> listlistMap = (Map<String, List<Collection<String>>>) engine.get("listlistMap");
-        @SuppressWarnings("unchecked")
-        Map<String, List<Map<String, String>>> listmapMap = (Map<String, List<Map<String, String>>>) engine.get("listmapMap");
-
-        tmpPref.settingsMap.clear();
-
-        Map<String, Setting<?>> tmp = new HashMap<>();
-        for (Entry<String, String> e : stringMap.entrySet()) {
-            tmp.put(e.getKey(), new StringSetting(e.getValue()));
-        }
-        for (Entry<String, List<String>> e : listMap.entrySet()) {
-            tmp.put(e.getKey(), new ListSetting(e.getValue()));
-        }
-
-        for (Entry<String, List<Collection<String>>> e : listlistMap.entrySet()) {
-            @SuppressWarnings({ "unchecked", "rawtypes" })
-            List<List<String>> value = (List) e.getValue();
-            tmp.put(e.getKey(), new ListListSetting(value));
-        }
-        for (Entry<String, List<Map<String, String>>> e : listmapMap.entrySet()) {
-            tmp.put(e.getKey(), new MapListSetting(e.getValue()));
-        }
-        for (Entry<String, Setting<?>> e : tmp.entrySet()) {
-            if (e.getValue().equals(tmpPref.defaultsMap.get(e.getKey()))) continue;
-            tmpPref.settingsMap.put(e.getKey(), e.getValue());
-        }
-    }
-
-    /**
-     * Convert preferences data structures to JavaScript object
-     * @param engine - JS engine to put object
-     * @param tmpPref - preferences to convert
-     * @param whereToPutInJS - variable name to store preferences in JS
-     * @param includeDefaults - include known default values to JS objects
-     * @throws ScriptException if the evaluation fails
-     */
-    public static void loadPrefsToJS(ScriptEngine engine, Preferences tmpPref, String whereToPutInJS, boolean includeDefaults)
-            throws ScriptException {
-        Map<String, String> stringMap = new TreeMap<>();
-        Map<String, List<String>> listMap = new TreeMap<>();
-        Map<String, List<List<String>>> listlistMap = new TreeMap<>();
-        Map<String, List<Map<String, String>>> listmapMap = new TreeMap<>();
-
-        if (includeDefaults) {
-            for (Map.Entry<String, Setting<?>> e: tmpPref.defaultsMap.entrySet()) {
-                Setting<?> setting = e.getValue();
-                if (setting instanceof StringSetting) {
-                    stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
-                } else if (setting instanceof ListSetting) {
-                    listMap.put(e.getKey(), ((ListSetting) setting).getValue());
-                } else if (setting instanceof ListListSetting) {
-                    listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
-                } else if (setting instanceof MapListSetting) {
-                    listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
-                }
-            }
-        }
-        tmpPref.settingsMap.entrySet().removeIf(e -> e.getValue().getValue() == null);
-
-        for (Map.Entry<String, Setting<?>> e: tmpPref.settingsMap.entrySet()) {
-            Setting<?> setting = e.getValue();
-            if (setting instanceof StringSetting) {
-                stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
-            } else if (setting instanceof ListSetting) {
-                listMap.put(e.getKey(), ((ListSetting) setting).getValue());
-            } else if (setting instanceof ListListSetting) {
-                listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
-            } else if (setting instanceof MapListSetting) {
-                listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
-            }
-        }
-
-        engine.put("stringMap", stringMap);
-        engine.put("listMap", listMap);
-        engine.put("listlistMap", listlistMap);
-        engine.put("listmapMap", listmapMap);
-
-        String init =
-            "function getJSList( javaList ) {"+
-            " var jsList; var i; "+
-            " if (javaList == null) return null;"+
-            "jsList = [];"+
-            "  for (i = 0; i < javaList.size(); i++) {"+
-            "    jsList.push(String(list.get(i)));"+
-            "  }"+
-            "return jsList;"+
-            "}"+
-            "function getJSMap( javaMap ) {"+
-            " var jsMap; var it; var e; "+
-            " if (javaMap == null) return null;"+
-            " jsMap = {};"+
-            " for (it = javaMap.entrySet().iterator(); it.hasNext();) {"+
-            "    e = it.next();"+
-            "    jsMap[ String(e.getKey()) ] = String(e.getValue()); "+
-            "  }"+
-            "  return jsMap;"+
-            "}"+
-            "for (it = stringMap.entrySet().iterator(); it.hasNext();) {"+
-            "  e = it.next();"+
-            whereToPutInJS+"[String(e.getKey())] = String(e.getValue());"+
-            "}\n"+
-            "for (it = listMap.entrySet().iterator(); it.hasNext();) {"+
-            "  e = it.next();"+
-            "  list = e.getValue();"+
-            "  jslist = getJSList(list);"+
-            "  jslist.type = 'list';"+
-            whereToPutInJS+"[String(e.getKey())] = jslist;"+
-            "}\n"+
-            "for (it = listlistMap.entrySet().iterator(); it.hasNext(); ) {"+
-            "  e = it.next();"+
-            "  listlist = e.getValue();"+
-            "  jslistlist = [];"+
-            "  for (it2 = listlist.iterator(); it2.hasNext(); ) {"+
-            "    list = it2.next(); "+
-            "    jslistlist.push(getJSList(list));"+
-            "    }"+
-            "  jslistlist.type = 'listlist';"+
-            whereToPutInJS+"[String(e.getKey())] = jslistlist;"+
-            "}\n"+
-            "for (it = listmapMap.entrySet().iterator(); it.hasNext();) {"+
-            "  e = it.next();"+
-            "  listmap = e.getValue();"+
-            "  jslistmap = [];"+
-            "  for (it2 = listmap.iterator(); it2.hasNext();) {"+
-            "    map = it2.next();"+
-            "    jslistmap.push(getJSMap(map));"+
-            "    }"+
-            "  jslistmap.type = 'listmap';"+
-            whereToPutInJS+"[String(e.getKey())] = jslistmap;"+
-            "}\n";
-
-            // Execute conversion script
-            engine.eval(init);
-        }
-    }
 }
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java b/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
index 9abf9cc..25d89c4 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
@@ -18,10 +18,10 @@ import java.util.Enumeration;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.PleaseWaitDialog;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -132,9 +132,9 @@ public class DownloadFileTask extends PleaseWaitRunnable {
                 }
             }
             if (!canceled) {
-                Main.info(tr("Download finished"));
+                Logging.info(tr("Download finished"));
                 if (unpack) {
-                    Main.info(tr("Unpacking {0} into {1}", file.getAbsolutePath(), file.getParent()));
+                    Logging.info(tr("Unpacking {0} into {1}", file.getAbsolutePath(), file.getParent()));
                     unzipFileRecursively(file, file.getParent());
                     Utils.deleteFile(file);
                 }
@@ -142,7 +142,7 @@ public class DownloadFileTask extends PleaseWaitRunnable {
         } catch (MalformedURLException e) {
             String msg = tr("Cannot download file ''{0}''. Its download link ''{1}'' is not a valid URL. Skipping download.",
                     file.getName(), address);
-            Main.warn(msg);
+            Logging.warn(msg);
             throw new DownloadException(msg, e);
         } catch (IOException e) {
             if (canceled)
@@ -159,7 +159,7 @@ public class DownloadFileTask extends PleaseWaitRunnable {
         try {
             download();
         } catch (DownloadException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java b/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
index 7f463e8..0fe0a81 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
@@ -24,6 +24,7 @@ import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.io.OsmServerChangesetReader;
 import org.openstreetmap.josm.io.OsmServerUserInfoReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -64,7 +65,7 @@ public class DownloadOpenChangesetsTask extends PleaseWaitRunnable {
                     + "JOSM does not know your identity.<br>"
                     + "You have either chosen to work anonymously or you are not entitled<br>"
                     + "to know the identity of the user on whose behalf you are working.");
-            Main.warn(msg);
+            Logging.warn(msg);
             if (!GraphicsEnvironment.isHeadless()) {
                 JOptionPane.showMessageDialog(GuiHelper.getFrameForComponent(parent),
                         "<html>" + msg + "</html>", tr("Missing user identity"), JOptionPane.ERROR_MESSAGE);
@@ -112,7 +113,8 @@ public class DownloadOpenChangesetsTask extends PleaseWaitRunnable {
             if (im.isFullyIdentified()) {
                 im.setPartiallyIdentified(im.getUserName());
             }
-            Main.warn(e, tr("Failed to retrieve user infos for the current JOSM user. Exception was: {0}", e.toString()));
+            Logging.log(Logging.LEVEL_WARN,
+                    tr("Failed to retrieve user infos for the current JOSM user. Exception was: {0}", e.toString()), e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
index 286063b..6674c2f 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
@@ -23,6 +23,7 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -128,9 +129,9 @@ public class DownloadPrimitivesWithReferrersTask extends PleaseWaitRunnable {
         }
 
         // Append downloaded data to JOSM
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null || this.newLayer)
-            Main.getLayerManager().addLayer(tmpLayer);
+            MainApplication.getLayerManager().addLayer(tmpLayer);
         else
             layer.mergeFrom(tmpLayer);
 
@@ -151,7 +152,7 @@ public class DownloadPrimitivesWithReferrersTask extends PleaseWaitRunnable {
 
         // Warm about deleted primitives
         final Set<PrimitiveId> del = new HashSet<>();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         for (PrimitiveId id : ids) {
             OsmPrimitive osm = ds.getPrimitiveById(id);
             if (osm != null && osm.isDeleted()) {
diff --git a/src/org/openstreetmap/josm/gui/io/IUploadDialog.java b/src/org/openstreetmap/josm/gui/io/IUploadDialog.java
index 01dd4ba..be736c1 100644
--- a/src/org/openstreetmap/josm/gui/io/IUploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/IUploadDialog.java
@@ -3,6 +3,8 @@ package org.openstreetmap.josm.gui.io;
 
 import java.util.Map;
 
+import org.openstreetmap.josm.io.UploadStrategySpecification;
+
 /**
  * Upload dialog super interface.
  * @since 9685
diff --git a/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java b/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
index 0be71c6..4ebef48 100644
--- a/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
+++ b/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
@@ -18,6 +18,7 @@ import javax.swing.event.MenuListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -84,7 +85,7 @@ public class RecentlyOpenedFilesMenu extends JMenu {
         public void actionPerformed(ActionEvent e) {
             OpenFileTask task = new OpenFileTask(Collections.singletonList(new File(file)), null);
             task.setRecordHistory(true);
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java b/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
index 831e51e..38ea4cf 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
@@ -5,12 +5,12 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 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;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * SaveLayerTask saves the data managed by an {@link org.openstreetmap.josm.gui.layer.AbstractModifiableLayer} to the
@@ -56,7 +56,7 @@ public class SaveLayerTask extends AbstractIOTask {
                 layerInfo.getLayer().onPostSaveToFile();
             }
         } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
-            Main.error(e);
+            Logging.error(e);
             setLastException(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
index a87d295..d184535 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
@@ -49,14 +49,15 @@ import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.gui.progress.SwingRenderingProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.SwingRenderingProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * Dialog that pops up when the user closes a layer with modified data.
@@ -445,7 +446,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                 setUserAction(UserAction.PROCEED);
                 closeDialog();
             } catch (UserCancelException ignore) {
-                Main.trace(ignore);
+                Logging.trace(ignore);
             }
         }
     }
@@ -574,17 +575,17 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                     // wait for the asynchronous task to complete
                     currentFuture.get();
                 } catch (CancellationException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                     model.setUploadState(layer, UploadOrSaveState.CANCELED);
                 } catch (InterruptedException | ExecutionException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     model.setUploadState(layer, UploadOrSaveState.FAILED);
                     ExceptionDialogUtil.explainException(e);
                 }
                 if (currentTask.isCanceled()) {
                     model.setUploadState(layer, UploadOrSaveState.CANCELED);
                 } else if (currentTask.isFailed()) {
-                    Main.error(currentTask.getLastException());
+                    Logging.error(currentTask.getLastException());
                     ExceptionDialogUtil.explainException(currentTask.getLastException());
                     model.setUploadState(layer, UploadOrSaveState.FAILED);
                 } else {
@@ -615,10 +616,10 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                     //
                     currentFuture.get();
                 } catch (CancellationException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                     model.setSaveState(layerInfo.getLayer(), UploadOrSaveState.CANCELED);
                 } catch (InterruptedException | ExecutionException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     model.setSaveState(layerInfo.getLayer(), UploadOrSaveState.FAILED);
                     ExceptionDialogUtil.explainException(e);
                 }
@@ -626,7 +627,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                     model.setSaveState(layerInfo.getLayer(), UploadOrSaveState.CANCELED);
                 } else if (currentTask.isFailed()) {
                     if (currentTask.getLastException() != null) {
-                        Main.error(currentTask.getLastException());
+                        Logging.error(currentTask.getLastException());
                         ExceptionDialogUtil.explainException(currentTask.getLastException());
                     }
                     model.setSaveState(layerInfo.getLayer(), UploadOrSaveState.FAILED);
@@ -641,7 +642,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
             int numProblems = model.getNumCancel() + model.getNumFailed();
             if (numProblems == 0)
                 return;
-            Main.warn(numProblems + " problems occured during upload/save");
+            Logging.warn(numProblems + " problems occured during upload/save");
             String msg = trn(
                     "<html>An upload and/or save operation of one layer with modifications<br>"
                     + "was canceled or has failed.</html>",
diff --git a/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java b/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
index 4fb1a50..c8e2b86 100644
--- a/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
@@ -11,8 +11,8 @@ import javax.swing.event.ChangeListener;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
 import org.openstreetmap.josm.gui.tagging.TagModel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -98,7 +98,7 @@ public class TagSettingsPanel extends JPanel implements TableModelListener {
      * Initializes the panel for user input
      */
     public void startUserInput() {
-        pnlTagEditor.initAutoCompletion(Main.getLayerManager().getEditLayer());
+        pnlTagEditor.initAutoCompletion(MainApplication.getLayerManager().getEditLayer());
     }
 
     /* -------------------------------------------------------------------------- */
diff --git a/src/org/openstreetmap/josm/gui/io/UploadDialog.java b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
index 4062b87..d8a0508 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
@@ -54,7 +54,10 @@ import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 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.util.WindowGeometry;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.io.UploadStrategy;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -62,7 +65,6 @@ import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.MultiLineFlowLayout;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This is a dialog for entering upload options like the parameters for
diff --git a/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java b/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java
index 4756059..56b2b30 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java
@@ -8,14 +8,13 @@ import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -23,7 +22,9 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiPrimitiveGoneException;
 import org.openstreetmap.josm.io.OsmServerWriter;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * UploadLayerTask uploads the data managed by an {@link OsmDataLayer} asynchronously.
@@ -90,7 +91,7 @@ public class UploadLayerTask extends AbstractIOTask {
         if (p == null) throw e;
         if (p.isDeleted()) {
             // we tried to delete an already deleted primitive.
-            Main.warn(tr("Object ''{0}'' is already deleted on the server. Skipping this object and retrying to upload.",
+            Logging.warn(tr("Object ''{0}'' is already deleted on the server. Skipping this object and retrying to upload.",
                     p.getDisplayName(DefaultNameFormatter.getInstance())));
             processedPrimitives.addAll(writer.getProcessedPrimitives());
             processedPrimitives.add(p);
@@ -133,7 +134,7 @@ public class UploadLayerTask extends AbstractIOTask {
             }
         } catch (OsmTransferException sxe) {
             if (isCanceled()) {
-                Main.info("Ignoring exception caught because upload is canceled. Exception is: " + sxe);
+                Logging.info("Ignoring exception caught because upload is canceled. Exception is: " + sxe);
                 return;
             }
             setLastException(sxe);
diff --git a/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java b/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
index 25f9846..4ec0977 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
@@ -18,6 +18,7 @@ import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.io.Capabilities;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
diff --git a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
index bb1bd8f..3f9100d 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
@@ -17,12 +17,12 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 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.Way;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
 import org.openstreetmap.josm.gui.Notification;
@@ -30,13 +30,16 @@ 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.MaxChangesetSizeExceededPolicy;
 import org.openstreetmap.josm.io.MessageNotifier;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiPrimitiveGoneException;
 import org.openstreetmap.josm.io.OsmServerWriter;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The task for uploading a collection of primitives.
@@ -199,7 +202,7 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
                 msg = tr("Object ''{0}'' is already deleted. Skipping object in upload.", displayName);
             }
             monitor.appendLogMessage(msg);
-            Main.warn(msg);
+            Logging.warn(msg);
             processedPrimitives.addAll(writer.getProcessedPrimitives());
             processedPrimitives.add(p);
             toUpload.removeProcessed(processedPrimitives);
@@ -223,11 +226,11 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
         try {
             SwingUtilities.invokeAndWait(r);
         } catch (InterruptedException e) {
-            Main.trace(e);
+            Logging.trace(e);
             lastException = e;
             Thread.currentThread().interrupt();
         } catch (InvocationTargetException e) {
-            Main.trace(e);
+            Logging.trace(e);
             lastException = new OsmTransferException(e.getCause());
         }
     }
@@ -248,7 +251,7 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
                     // if we get here we've successfully uploaded the data. Exit the loop.
                     break;
                 } catch (OsmTransferCanceledException e) {
-                    Main.error(e);
+                    Logging.error(e);
                     uploadCanceled = true;
                     break uploadloop;
                 } catch (OsmApiPrimitiveGoneException e) {
@@ -291,7 +294,7 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
             closeChangesetIfRequired();
         } catch (OsmTransferException e) {
             if (uploadCanceled) {
-                Main.info(tr("Ignoring caught exception because upload is canceled. Exception is: {0}", e.toString()));
+                Logging.info(tr("Ignoring caught exception because upload is canceled. Exception is: {0}", e.toString()));
             } else {
                 lastException = e;
             }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
index 8ef6136..051e187 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
@@ -31,17 +31,17 @@ import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.SideButton;
 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.util.WindowGeometry;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This dialog can be used to select individual object for uploading.
diff --git a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
index 4b028d6..12700b4 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
@@ -34,7 +34,11 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.Capabilities;
+import org.openstreetmap.josm.io.MaxChangesetSizeExceededPolicy;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.io.UploadStrategy;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * UploadStrategySelectionPanel is a panel for selecting an upload strategy.
@@ -335,7 +339,7 @@ public class UploadStrategySelectionPanel extends JPanel implements PropertyChan
             Main.pref.putInteger("osm-server.upload-strategy.chunk-size", chunkSize);
         } catch (NumberFormatException e) {
             // don't save invalid value to preferences
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/AllFormatsImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/AllFormatsImporter.java
similarity index 96%
rename from src/org/openstreetmap/josm/io/AllFormatsImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/AllFormatsImporter.java
index 1bf9c03..7cb7320 100644
--- a/src/org/openstreetmap/josm/io/AllFormatsImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/AllFormatsImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
diff --git a/src/org/openstreetmap/josm/io/FileExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/FileExporter.java
similarity index 98%
rename from src/org/openstreetmap/josm/io/FileExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/FileExporter.java
index 8b965c1..7273691 100644
--- a/src/org/openstreetmap/josm/io/FileExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/FileExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
diff --git a/src/org/openstreetmap/josm/io/FileImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java
similarity index 93%
rename from src/org/openstreetmap/josm/io/FileImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java
index 9dc8dfa..3500bcd 100644
--- a/src/org/openstreetmap/josm/io/FileImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/FileImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -15,6 +15,9 @@ import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.ImportCancelException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
@@ -88,7 +91,7 @@ public abstract class FileImporter implements Comparable<FileImporter> {
      */
     public boolean importDataHandleExceptions(File f, ProgressMonitor progressMonitor) {
         try {
-            Main.info("Open file: " + f.getAbsolutePath() + " (" + f.length() + " bytes)");
+            Logging.info("Open file: " + f.getAbsolutePath() + " (" + f.length() + " bytes)");
             importData(f, progressMonitor);
             return true;
         } catch (IllegalDataException e) {
@@ -109,7 +112,7 @@ public abstract class FileImporter implements Comparable<FileImporter> {
     }
 
     private static void displayError(File f, Exception e) {
-        Main.error(e);
+        Logging.error(e);
         HelpAwareOptionPane.showMessageDialogInEDT(
                 Main.parent,
                 tr("<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>",
@@ -136,11 +139,11 @@ public abstract class FileImporter implements Comparable<FileImporter> {
      */
     public boolean importDataHandleExceptions(List<File> files, ProgressMonitor progressMonitor) {
         try {
-            Main.info("Open "+files.size()+" files");
+            Logging.info("Open "+files.size()+" files");
             importData(files, progressMonitor);
             return true;
         } catch (IOException | IllegalDataException e) {
-            Main.error(e);
+            Logging.error(e);
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
                     tr("<html>Could not read files.<br>Error is:<br>{0}</html>", Utils.escapeReservedCharactersHTML(e.getMessage())),
diff --git a/src/org/openstreetmap/josm/io/GeoJSONExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java
similarity index 93%
rename from src/org/openstreetmap/josm/io/GeoJSONExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java
index eadabac..00ffbc5 100644
--- a/src/org/openstreetmap/josm/io/GeoJSONExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/GeoJSONExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -12,6 +12,7 @@ import java.nio.file.Files;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.GeoJSONWriter;
 
 /**
  * Exporter to write map data to a GeoJSON file.
diff --git a/src/org/openstreetmap/josm/io/GpxExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java
similarity index 97%
rename from src/org/openstreetmap/josm/io/GpxExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java
index e62886f..9bd65bb 100644
--- a/src/org/openstreetmap/josm/io/GpxExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/GpxExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -27,13 +27,17 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.io.Compression;
+import org.openstreetmap.josm.io.GpxWriter;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Exports data to a .gpx file. Data may be native GPX or OSM data which will be converted.
@@ -170,7 +174,7 @@ public class GpxExporter extends FileExporter implements GpxConstants {
         } else if (layer instanceof GpxLayer) {
             gpxData = ((GpxLayer) layer).data;
         } else {
-            gpxData = OsmDataLayer.toGpxData(Main.getLayerManager().getEditDataSet(), file);
+            gpxData = OsmDataLayer.toGpxData(MainApplication.getLayerManager().getEditDataSet(), file);
         }
 
         // add author and copyright details to the gpx data
@@ -204,7 +208,7 @@ public class GpxExporter extends FileExporter implements GpxConstants {
             new GpxWriter(fo).write(gpxData);
             fo.flush();
         } catch (IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
             JOptionPane.showMessageDialog(Main.parent, tr("Error while exporting {0}:\n{1}", fn, ex.getMessage()),
                     tr("Error"), JOptionPane.ERROR_MESSAGE);
         }
diff --git a/src/org/openstreetmap/josm/io/GpxImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/GpxImporter.java
similarity index 94%
rename from src/org/openstreetmap/josm/io/GpxImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/GpxImporter.java
index 3b1cf56..76d11b4 100644
--- a/src/org/openstreetmap/josm/io/GpxImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/GpxImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -12,10 +12,14 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.io.Compression;
+import org.openstreetmap.josm.io.GpxReader;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -104,7 +108,7 @@ public class GpxImporter extends FileImporter {
             r.getGpxData().storageFile = file;
             addLayers(loadLayers(r.getGpxData(), parsedProperly, fileName, tr("Markers from {0}", fileName)));
         } catch (SAXException e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(tr("Parsing data for layer ''{0}'' failed", fileName), e);
         }
     }
@@ -118,10 +122,10 @@ public class GpxImporter extends FileImporter {
         // FIXME: remove UI stuff from the IO subsystem
         GuiHelper.runInEDT(() -> {
             if (data.markerLayer != null) {
-                Main.getLayerManager().addLayer(data.markerLayer);
+                MainApplication.getLayerManager().addLayer(data.markerLayer);
             }
             if (data.gpxLayer != null) {
-                Main.getLayerManager().addLayer(data.gpxLayer);
+                MainApplication.getLayerManager().addLayer(data.gpxLayer);
             }
             data.postLayerTask.run();
         });
@@ -183,7 +187,7 @@ public class GpxImporter extends FileImporter {
             r.getGpxData().storageFile = associatedFile;
             return loadLayers(r.getGpxData(), parsedProperly, gpxLayerName, markerLayerName);
         } catch (SAXException e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(tr("Parsing data for layer ''{0}'' failed", gpxLayerName), e);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/JpgImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/JpgImporter.java
similarity index 97%
rename from src/org/openstreetmap/josm/io/JpgImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/JpgImporter.java
index 753781d..8d4f0dc 100644
--- a/src/org/openstreetmap/josm/io/JpgImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/JpgImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -15,6 +15,7 @@ import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.IllegalDataException;
 
 /**
  * File importer allowing to import geottaged images (*.jpg files).
diff --git a/src/org/openstreetmap/josm/io/NMEAImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java
similarity index 91%
rename from src/org/openstreetmap/josm/io/NMEAImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java
index 237a894..f9a9c77 100644
--- a/src/org/openstreetmap/josm/io/NMEAImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/NMEAImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -13,12 +13,14 @@ import javax.swing.SwingUtilities;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter.GpxImporterData;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.io.GpxImporter.GpxImporterData;
+import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.io.nmea.NmeaReader;
 
 /**
@@ -51,11 +53,11 @@ public class NMEAImporter extends FileImporter {
                 final File fileFinal = file;
 
                 GuiHelper.runInEDT(() -> {
-                    Main.getLayerManager().addLayer(gpxLayer);
+                    MainApplication.getLayerManager().addLayer(gpxLayer);
                     if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
                         MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
                         if (!ml.data.isEmpty()) {
-                            Main.getLayerManager().addLayer(ml);
+                            MainApplication.getLayerManager().addLayer(ml);
                         }
                     }
                 });
diff --git a/src/org/openstreetmap/josm/io/NoteExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/NoteExporter.java
similarity index 87%
rename from src/org/openstreetmap/josm/io/NoteExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/NoteExporter.java
index 381db47..e81de1b 100644
--- a/src/org/openstreetmap/josm/io/NoteExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/NoteExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -8,10 +8,11 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
+import org.openstreetmap.josm.io.NoteWriter;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Exporter to write note data to an XML file
@@ -36,7 +37,7 @@ public class NoteExporter extends FileExporter {
 
     @Override
     public void exportData(File file, Layer layer) throws IOException {
-        Main.info("exporting notes to file: " + file);
+        Logging.info("exporting notes to file: " + file);
         if (layer instanceof NoteLayer) {
             try (OutputStream os = new FileOutputStream(file);
                  NoteWriter writer = new NoteWriter(os)) {
diff --git a/src/org/openstreetmap/josm/io/NoteImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/NoteImporter.java
similarity index 76%
rename from src/org/openstreetmap/josm/io/NoteImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/NoteImporter.java
index af84702..317849f 100644
--- a/src/org/openstreetmap/josm/io/NoteImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/NoteImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -8,11 +8,14 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.notes.Note;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.Compression;
+import org.openstreetmap.josm.io.NoteReader;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -31,17 +34,17 @@ public class NoteImporter extends FileImporter {
 
     @Override
     public void importData(final File file, ProgressMonitor progressMonitor) throws IOException {
-        if (Main.isDebugEnabled()) {
-            Main.debug("importing notes file " + file.getAbsolutePath());
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("importing notes file {0}", file.getAbsolutePath());
         }
         try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
             final NoteLayer layer = loadLayer(is, file, file.getName(), progressMonitor);
-            if (!Main.getLayerManager().containsLayer(layer)) {
-                Main.getLayerManager().addLayer(layer);
+            if (!MainApplication.getLayerManager().containsLayer(layer)) {
+                MainApplication.getLayerManager().addLayer(layer);
             }
         } catch (SAXException e) {
-            Main.error("error opening up notes file");
-            Main.error(e, true);
+            Logging.error("error opening up notes file");
+            Logging.error(e);
             throw new IOException(e.getMessage(), e);
         }
     }
@@ -61,8 +64,8 @@ public class NoteImporter extends FileImporter {
             throws SAXException, IOException {
         final List<Note> fileNotes = new NoteReader(in).parse();
         List<NoteLayer> noteLayers = null;
-        if (Main.map != null) {
-            noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class);
+        if (MainApplication.getMap() != null) {
+            noteLayers = MainApplication.getLayerManager().getLayersOfType(NoteLayer.class);
         }
         final NoteLayer layer;
         if (noteLayers != null && !noteLayers.isEmpty()) {
diff --git a/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java b/src/org/openstreetmap/josm/gui/io/importexport/OsmBzip2Exporter.java
similarity index 91%
rename from src/org/openstreetmap/josm/io/OsmBzip2Exporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/OsmBzip2Exporter.java
index 38a6e1a..23c93d9 100644
--- a/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/OsmBzip2Exporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
diff --git a/src/org/openstreetmap/josm/io/OsmChangeImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java
similarity index 86%
rename from src/org/openstreetmap/josm/io/OsmChangeImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java
index 9f76437..d8229f1 100644
--- a/src/org/openstreetmap/josm/io/OsmChangeImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/OsmChangeImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -13,9 +13,14 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 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.Compression;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.OsmChangeReader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * File importer that reads OSM change files (*.osc).
@@ -42,7 +47,7 @@ public class OsmChangeImporter extends FileImporter {
         try {
             importData(Compression.getUncompressedFileInputStream(file), file, progressMonitor);
         } catch (FileNotFoundException e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(tr("File ''{0}'' does not exist.", file.getName()), e);
         }
     }
@@ -64,7 +69,7 @@ public class OsmChangeImporter extends FileImporter {
                         tr("Open OsmChange file"),
                         JOptionPane.INFORMATION_MESSAGE);
             }
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             layer.onPostLoadFromFile();
         });
     }
diff --git a/src/org/openstreetmap/josm/io/OsmExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java
similarity index 94%
rename from src/org/openstreetmap/josm/io/OsmExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java
index 6b76585..55d10d8 100644
--- a/src/org/openstreetmap/josm/io/OsmExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/OsmExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -18,6 +18,10 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.Compression;
+import org.openstreetmap.josm.io.OsmWriter;
+import org.openstreetmap.josm.io.OsmWriterFactory;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -90,7 +94,7 @@ public class OsmExporter extends FileExporter {
             }
             layer.onPostSaveToFile();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             JOptionPane.showMessageDialog(
                     Main.parent,
                     tr("<html>An error occurred while saving.<br>Error is:<br>{0}</html>",
@@ -105,7 +109,7 @@ public class OsmExporter extends FileExporter {
                     Utils.copyFile(tmpFile, file);
                 }
             } catch (IOException e2) {
-                Main.error(e2);
+                Logging.error(e2);
                 JOptionPane.showMessageDialog(
                         Main.parent,
                         tr("<html>An error occurred while restoring backup file.<br>Error is:<br>{0}</html>",
diff --git a/src/org/openstreetmap/josm/io/OsmGzipExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/OsmGzipExporter.java
similarity index 91%
rename from src/org/openstreetmap/josm/io/OsmGzipExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/OsmGzipExporter.java
index a2eea57..fad9d86 100644
--- a/src/org/openstreetmap/josm/io/OsmGzipExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/OsmGzipExporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
diff --git a/src/org/openstreetmap/josm/io/OsmImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java
similarity index 93%
rename from src/org/openstreetmap/josm/io/OsmImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java
index a6dc3eb..b65703a 100644
--- a/src/org/openstreetmap/josm/io/OsmImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/OsmImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -14,13 +14,17 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 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.Compression;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
- * File importer that reads *.osm data files. (main storage format for OSM data
- * in JOSM)
+ * File importer that reads *.osm data files. (main storage format for OSM data in JOSM)
  */
 public class OsmImporter extends FileImporter {
 
@@ -78,7 +82,7 @@ public class OsmImporter extends FileImporter {
         try (InputStream in = Compression.getUncompressedFileInputStream(file)) {
             importData(in, file, progressMonitor);
         } catch (FileNotFoundException e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(tr("File ''{0}'' does not exist.", file.getName()), e);
         }
     }
@@ -97,7 +101,7 @@ public class OsmImporter extends FileImporter {
         // FIXME: remove UI stuff from IO subsystem
         GuiHelper.runInEDT(() -> {
             OsmDataLayer layer = data.getLayer();
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             data.getPostLayerTask().run();
             data.getLayer().onPostLoadFromFile();
         });
diff --git a/src/org/openstreetmap/josm/gui/io/importexport/ValidatorErrorExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/ValidatorErrorExporter.java
new file mode 100644
index 0000000..c2cbd89
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/io/importexport/ValidatorErrorExporter.java
@@ -0,0 +1,52 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.io.importexport;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.ValidatorLayer;
+import org.openstreetmap.josm.io.ValidatorErrorWriter;
+import org.openstreetmap.josm.tools.Logging;
+
+/**
+ * Exporter to write validator errors to an XML file.
+ * @since 12667
+ */
+public class ValidatorErrorExporter extends FileExporter {
+
+    /** File extension filter for .xml files */
+    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
+            "xml", "xml", tr("Validation Error Files") + " (*.xml)");
+
+    /** Create a new validator error exporter with the default .xml file filter */
+    public ValidatorErrorExporter() {
+        super(FILE_FILTER);
+    }
+
+    @Override
+    public boolean acceptFile(File pathname, Layer layer) {
+        if (!(layer instanceof ValidatorLayer))
+            return false;
+        return super.acceptFile(pathname, layer);
+    }
+
+    @Override
+    public void exportData(File file, Layer layer) throws IOException {
+        OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
+        if (layer instanceof ValidatorLayer && editLayer != null) {
+            Logging.info("exporting validation errors to file: " + file);
+            try (OutputStream os = new FileOutputStream(file);
+                 ValidatorErrorWriter writer = new ValidatorErrorWriter(os)) {
+                writer.write(editLayer.validationErrors);
+            }
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/io/WMSLayerExporter.java b/src/org/openstreetmap/josm/gui/io/importexport/WMSLayerExporter.java
similarity index 91%
rename from src/org/openstreetmap/josm/io/WMSLayerExporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/WMSLayerExporter.java
index f1ca0cb..4e2a945 100644
--- a/src/org/openstreetmap/josm/io/WMSLayerExporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/WMSLayerExporter.java
@@ -1,14 +1,14 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -39,7 +39,7 @@ public class WMSLayerExporter extends FileExporter {
         if (layer instanceof AbstractTileSourceLayer) {
             try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
                 oos.writeInt(CURRENT_FILE_VERSION); // file version
-                oos.writeObject(Main.map.mapView.getCenter());
+                oos.writeObject(MainApplication.getMap().mapView.getCenter());
                 ImageryPreferenceEntry entry = new ImageryPreferenceEntry(((AbstractTileSourceLayer) layer).getInfo());
                 oos.writeObject(Preferences.serializeStruct(entry, ImageryPreferenceEntry.class));
             }
diff --git a/src/org/openstreetmap/josm/io/WMSLayerImporter.java b/src/org/openstreetmap/josm/gui/io/importexport/WMSLayerImporter.java
similarity index 92%
rename from src/org/openstreetmap/josm/io/WMSLayerImporter.java
rename to src/org/openstreetmap/josm/gui/io/importexport/WMSLayerImporter.java
index 9a53214..65aa375 100644
--- a/src/org/openstreetmap/josm/io/WMSLayerImporter.java
+++ b/src/org/openstreetmap/josm/gui/io/importexport/WMSLayerImporter.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -10,15 +10,16 @@ import java.io.InvalidClassException;
 import java.io.ObjectInputStream;
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -85,9 +86,9 @@ public class WMSLayerImporter extends FileImporter {
 
         // FIXME: remove UI stuff from IO subsystem
         GuiHelper.runInEDT(() -> {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             if (zoomTo != null) {
-                Main.map.mapView.zoomTo(zoomTo);
+                MainApplication.getMap().mapView.zoomTo(zoomTo);
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/io/importexport/package-info.java b/src/org/openstreetmap/josm/gui/io/importexport/package-info.java
new file mode 100644
index 0000000..dcbbc0b
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/io/importexport/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides GUI classes for handling file import/export operations.
+ */
+package org.openstreetmap.josm.gui.io.importexport;
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
index c082ce8..04a9d2b 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
@@ -9,13 +9,13 @@ import org.apache.commons.jcs.access.CacheAccess;
 import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.cache.JCSCacheManager;
 import org.openstreetmap.josm.data.imagery.CachedTileLoaderFactory;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.TileLoaderFactory;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  *
@@ -90,7 +90,7 @@ public abstract class AbstractCachedTileSourceLayer<T extends AbstractTMSTileSou
                     CachedTileLoaderFactory.PROP_TILECACHE_DIR.get());
             return cache;
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
             return null;
         }
     }
@@ -130,7 +130,7 @@ public abstract class AbstractCachedTileSourceLayer<T extends AbstractTMSTileSou
                         MAX_DISK_CACHE_SIZE.get() * 1024, // MAX_DISK_CACHE_SIZE is in MB, needs to by in sync with getDiskCacheSize
                         CachedTileLoaderFactory.PROP_TILECACHE_DIR.get());
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 return null;
             }
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
index a3c9c2f..c864bb5 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
@@ -79,6 +79,7 @@ import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.CoordinateConversion;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
@@ -88,10 +89,12 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.io.importexport.WMSLayerImporter;
 import org.openstreetmap.josm.gui.layer.imagery.AutoLoadTilesAction;
 import org.openstreetmap.josm.gui.layer.imagery.AutoZoomAction;
 import org.openstreetmap.josm.gui.layer.imagery.DecreaseZoomAction;
@@ -112,8 +115,8 @@ import org.openstreetmap.josm.gui.layer.imagery.ZoomToBestAction;
 import org.openstreetmap.josm.gui.layer.imagery.ZoomToNativeLevelAction;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.io.WMSLayerImporter;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MemoryManager;
 import org.openstreetmap.josm.tools.MemoryManager.MemoryHandle;
 import org.openstreetmap.josm.tools.MemoryManager.NotEnoughMemoryException;
@@ -152,7 +155,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
 
     //public static final BooleanProperty PROP_DRAW_DEBUG = new BooleanProperty(PREFERENCE_PREFIX + ".draw_debug", false);
     /** Zoomlevel at which tiles is currently downloaded. Initial zoom lvl is set to bestZoom */
-    public int currentZoomLevel;
+    private int currentZoomLevel;
 
     private final AttributionSupport attribution = new AttributionSupport();
     private final TileHolder clickedTileHolder = new TileHolder();
@@ -259,7 +262,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     }
 
     protected void initTileSource(T tileSource) {
-        coordinateConverter = new TileCoordinateConverter(Main.map.mapView, tileSource, getDisplaySettings());
+        coordinateConverter = new TileCoordinateConverter(MainApplication.getMap().mapView, tileSource, getDisplaySettings());
         attribution.initialize(tileSource);
 
         currentZoomLevel = getBestZoom();
@@ -274,9 +277,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
             }
         } catch (MalformedURLException e) {
             // ignore, assume that this is not a file
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Logging.log(Logging.LEVEL_DEBUG, e);
         }
 
         if (tileLoader == null)
@@ -293,9 +294,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
         }
         tile.setLoaded(success);
         invalidateLater();
-        if (Main.isDebugEnabled()) {
-            Main.debug("tileLoadingFinished() tile: " + tile + " success: " + success);
-        }
+        Logging.debug("tileLoadingFinished() tile: {0} success: {1}", tile, success);
     }
 
     /**
@@ -436,7 +435,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                     url = clickedTile.getUrl();
                 } catch (IOException e) {
                     // silence exceptions
-                    Main.trace(e);
+                    Logging.trace(e);
                 }
 
                 List<List<String>> content = new ArrayList<>();
@@ -594,7 +593,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
         int ret = (int) Math.ceil(
                 Math.pow(2d, ZOOM_OFFSET.get()) * visibileTiles // use offset to decide, how many tiles are visible
                 * 4);
-        Main.info("AbstractTileSourceLayer: estimated visible tiles: {0}, estimated cache size: {1}", visibileTiles, ret);
+        Logging.info("AbstractTileSourceLayer: estimated visible tiles: {0}, estimated cache size: {1}", visibileTiles, ret);
         return ret;
     }
 
@@ -701,9 +700,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     }
 
     private void zoomChanged(boolean invalidate) {
-        if (Main.isDebugEnabled()) {
-            Main.debug("zoomChanged(): " + currentZoomLevel);
-        }
+        Logging.debug("zoomChanged(): {0}", currentZoomLevel);
         if (tileLoader instanceof TMSCachedTileLoader) {
             ((TMSCachedTileLoader) tileLoader).cancelOutstandingTasks();
         }
@@ -732,9 +729,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
      */
     public boolean zoomIncreaseAllowed() {
         boolean zia = currentZoomLevel < this.getMaxZoomLvl();
-        if (Main.isDebugEnabled()) {
-            Main.debug("zoomIncreaseAllowed(): " + zia + ' ' + currentZoomLevel + " vs. " + this.getMaxZoomLvl());
-        }
+        Logging.debug("zoomIncreaseAllowed(): {0} {1} vs. {2}", zia, currentZoomLevel, this.getMaxZoomLvl());
         return zia;
     }
 
@@ -746,12 +741,10 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     public boolean increaseZoomLevel() {
         if (zoomIncreaseAllowed()) {
             currentZoomLevel++;
-            if (Main.isDebugEnabled()) {
-                Main.debug("increasing zoom level to: " + currentZoomLevel);
-            }
+            Logging.debug("increasing zoom level to: {0}", currentZoomLevel);
             zoomChanged();
         } else {
-            Main.warn("Current zoom level ("+currentZoomLevel+") could not be increased. "+
+            Logging.warn("Current zoom level ("+currentZoomLevel+") could not be increased. "+
                     "Max.zZoom Level "+this.getMaxZoomLvl()+" reached.");
             return false;
         }
@@ -759,6 +752,15 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     }
 
     /**
+     * Get the current zoom level of the layer
+     * @return the current zoom level
+     * @since 12603
+     */
+    public int getZoomLevel() {
+        return currentZoomLevel;
+    }
+
+    /**
      * Sets the zoom level of the layer
      * @param zoom zoom level
      * @return true, when zoom has changed to desired value, false if it was outside supported zoom levels
@@ -783,9 +785,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
      */
     public boolean zoomDecreaseAllowed() {
         boolean zda = currentZoomLevel > this.getMinZoomLvl();
-        if (Main.isDebugEnabled()) {
-            Main.debug("zoomDecreaseAllowed(): " + zda + ' ' + currentZoomLevel + " vs. " + this.getMinZoomLvl());
-        }
+        Logging.debug("zoomDecreaseAllowed(): {0} {1} vs. {2}", zda, currentZoomLevel, this.getMinZoomLvl());
         return zda;
     }
 
@@ -796,9 +796,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
      */
     public boolean decreaseZoomLevel() {
         if (zoomDecreaseAllowed()) {
-            if (Main.isDebugEnabled()) {
-                Main.debug("decreasing zoom level to: " + currentZoomLevel);
-            }
+            Logging.debug("decreasing zoom level to: {0}", currentZoomLevel);
             currentZoomLevel--;
             zoomChanged();
         } else {
@@ -855,7 +853,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     }
 
     private TileSet getVisibleTileSet() {
-        ProjectionBounds bounds = Main.map.mapView.getState().getViewArea().getProjectionBounds();
+        ProjectionBounds bounds = MainApplication.getMap().mapView.getState().getViewArea().getProjectionBounds();
         return getTileSet(bounds, currentZoomLevel);
     }
 
@@ -869,7 +867,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
 
         // if there is more than 18 tiles on screen in any direction, do not load all tiles!
         if (ts.tooLarge()) {
-            Main.warn("Not downloading all tiles because there is more than 18 tiles on an axis!");
+            Logging.warn("Not downloading all tiles because there is more than 18 tiles on an axis!");
             return;
         }
         ts.loadAllTiles(force);
@@ -890,9 +888,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     @Override
     public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
         boolean done = (infoflags & (ERROR | FRAMEBITS | ALLBITS)) != 0;
-        if (Main.isDebugEnabled()) {
-            Main.debug("imageUpdate() done: " + done + " calling repaint");
-        }
+        Logging.debug("imageUpdate() done: {0} calling repaint", done);
 
         if (done) {
             invalidate();
@@ -992,7 +988,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                 //cannot paint in parallel
                 drawImageInside(g, img, anchorImage, anchorScreen, null);
             }
-            if (tile instanceof ReprojectionTile && ((ReprojectionTile) tile).needsUpdate(Main.map.mapView.getScale())) {
+            MapView mapView = MainApplication.getMap().mapView;
+            if (tile instanceof ReprojectionTile && ((ReprojectionTile) tile).needsUpdate(mapView.getScale())) {
                 // This means we have a reprojected tile in memory cache, but not at
                 // current scale. Generally, the positioning of the tile will still
                 // be correct, but for best image quality, the tile should be
@@ -1126,7 +1123,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
             //texty += 1 + fontHeight;
         }
 
-        if (Main.isDebugEnabled()) {
+        if (Logging.isDebugEnabled()) {
             // draw tile outline in semi-transparent red
             g.setColor(new Color(255, 0, 0, 50));
             g.draw(coordinateConverter.getTileShapeScreen(tile));
@@ -1138,7 +1135,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
     }
 
     private ICoordinate getShiftedCoord(EastNorth en) {
-        return getShiftedLatLon(en).toCoordinate();
+        return CoordinateConversion.llToCoor(getShiftedLatLon(en));
     }
 
     private final TileSet nullTileSet = new TileSet();
@@ -1287,17 +1284,17 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
         if (zoom == 0)
             return new TileSet();
         TileXY t1, t2;
+        IProjected topLeftUnshifted = coordinateConverter.shiftDisplayToServer(bounds.getMin());
+        IProjected botRightUnshifted = coordinateConverter.shiftDisplayToServer(bounds.getMax());
         if (coordinateConverter.requiresReprojection()) {
             Projection projServer = Projections.getProjectionByCode(tileSource.getServerCRS());
             ProjectionBounds projBounds = new ProjectionBounds(
-                    new EastNorth(coordinateConverter.shiftDisplayToServer(bounds.getMin())),
-                    new EastNorth(coordinateConverter.shiftDisplayToServer(bounds.getMax())));
+                    CoordinateConversion.projToEn(topLeftUnshifted),
+                    CoordinateConversion.projToEn(botRightUnshifted));
             ProjectionBounds bbox = projServer.getEastNorthBoundsBox(projBounds, Main.getProjection());
-            t1 = tileSource.projectedToTileXY(bbox.getMin().toProjected(), zoom);
-            t2 = tileSource.projectedToTileXY(bbox.getMax().toProjected(), zoom);
+            t1 = tileSource.projectedToTileXY(CoordinateConversion.enToProj(bbox.getMin()), zoom);
+            t2 = tileSource.projectedToTileXY(CoordinateConversion.enToProj(bbox.getMax()), zoom);
         } else {
-            IProjected topLeftUnshifted = coordinateConverter.shiftDisplayToServer(bounds.getMin());
-            IProjected botRightUnshifted = coordinateConverter.shiftDisplayToServer(bounds.getMax());
             t1 = tileSource.projectedToTileXY(topLeftUnshifted, zoom);
             t2 = tileSource.projectedToTileXY(botRightUnshifted, zoom);
         }
@@ -1485,8 +1482,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
             }
             missedTiles = newlyMissedTiles;
         }
-        if (Main.isDebugEnabled() && !missedTiles.isEmpty()) {
-            Main.debug("still missed "+missedTiles.size()+" in the end");
+        if (Logging.isDebugEnabled() && !missedTiles.isEmpty()) {
+            Logging.debug("still missed {0} in the end", missedTiles.size());
         }
         g.setColor(Color.red);
         g.setFont(InfoFont);
@@ -1513,7 +1510,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
         if (noTilesAtZoom) {
             myDrawString(g, tr("No tiles at this zoom level"), 120, 120);
         }
-        if (Main.isDebugEnabled()) {
+        if (Logging.isDebugEnabled()) {
             myDrawString(g, tr("Current zoom: {0}", currentZoomLevel), 50, 140);
             myDrawString(g, tr("Display zoom: {0}", displayZoomLevel), 50, 155);
             myDrawString(g, tr("Pixel scale: {0}", getScaleFactor(currentZoomLevel)), 50, 170);
@@ -1537,9 +1534,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
      * @return Tile at pixel position
      */
     private Tile getTileForPixelpos(int px, int py) {
-        if (Main.isDebugEnabled()) {
-            Main.debug("getTileForPixelpos("+px+", "+py+')');
-        }
+        Logging.debug("getTileForPixelpos({0}, {1})", px, py);
         TileXY xy = coordinateConverter.getTileforPixel(px, py, currentZoomLevel);
         return getTile(xy.getXIndex(), xy.getYIndex(), currentZoomLevel);
     }
@@ -1719,7 +1714,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                 this.progressMonitor.worked(1);
                 this.progressMonitor.setCustomText(tr("Downloaded {0}/{1} tiles", processed, totalCount));
             } else {
-                Main.warn("Tile loading failure: " + tile + " - " + tile.getErrorMessage());
+                Logging.warn("Tile loading failure: " + tile + " - " + tile.getErrorMessage());
             }
         }
 
@@ -1750,7 +1745,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                 (o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getKey(), o2.getKey()));
         for (LatLon point: points) {
             TileXY minTile = tileSource.latLonToTileXY(point.lat() - bufferY, point.lon() - bufferX, currentZoomLevel);
-            TileXY curTile = tileSource.latLonToTileXY(point.toCoordinate(), currentZoomLevel);
+            TileXY curTile = tileSource.latLonToTileXY(CoordinateConversion.llToCoor(point), currentZoomLevel);
             TileXY maxTile = tileSource.latLonToTileXY(point.lat() + bufferY, point.lon() + bufferX, currentZoomLevel);
 
             // take at least one tile of buffer
@@ -1815,7 +1810,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeLi
                     try {
                         memory = manager.allocateMemory("tile source layer", getEstimatedCacheSize(), Object::new);
                     } catch (NotEnoughMemoryException e) {
-                        Main.warn("Could not allocate tile source memory", e);
+                        Logging.warn("Could not allocate tile source memory", e);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java b/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
index a8ebf63..55b311a 100644
--- a/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
+++ b/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
@@ -14,9 +14,10 @@ import javax.swing.border.CompoundBorder;
 import javax.swing.border.EmptyBorder;
 import javax.swing.border.EtchedBorder;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
@@ -53,8 +54,8 @@ public class AlignImageryPanel extends JPanel {
         closeButton.setBorderPainted(false);
         closeButton.setToolTipText(tr("Hide this message and never show it again"));
         closeButton.addActionListener(e -> {
-            if (Main.isDisplayingMapView()) {
-                Main.map.removeTopPanel(AlignImageryPanel.class);
+            if (MainApplication.isDisplayingMapView()) {
+                MainApplication.getMap().removeTopPanel(AlignImageryPanel.class);
                 if (doNotShowAgain.isSelected()) {
                     showAgain.put(Boolean.FALSE);
                 }
@@ -82,10 +83,11 @@ public class AlignImageryPanel extends JPanel {
      */
     public static void addNagPanelIfNeeded(ImageryInfo infoToAdd) {
         BooleanProperty showAgain = new BooleanProperty("message.imagery.nagPanel." + infoToAdd.getUrl(), true);
-        if (Main.isDisplayingMapView() && showAgain.get() && !infoToAdd.isGeoreferenceValid()
-                && Main.map.getTopPanel(AlignImageryPanel.class) == null) {
+        MapFrame map = MainApplication.getMap();
+        if (MainApplication.isDisplayingMapView() && showAgain.get() && !infoToAdd.isGeoreferenceValid()
+                && map.getTopPanel(AlignImageryPanel.class) == null) {
             double w = GuiHelper.getScreenSize().getWidth();
-            Main.map.addTopPanel(new AlignImageryPanel(w > 1300, showAgain, infoToAdd));
+            map.addTopPanel(new AlignImageryPanel(w > 1300, showAgain, infoToAdd));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/data/AutosaveTask.java b/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
similarity index 92%
rename from src/org/openstreetmap/josm/data/AutosaveTask.java
rename to src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
index 2894e05..cdfe375 100644
--- a/src/org/openstreetmap/josm/data/AutosaveTask.java
+++ b/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data;
+package org.openstreetmap.josm.gui.layer;
 
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
@@ -36,15 +36,16 @@ import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter.Listener;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.io.importexport.OsmExporter;
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
 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.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.io.OsmExporter;
-import org.openstreetmap.josm.io.OsmImporter;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -133,11 +134,11 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
         if (PROP_INTERVAL.get() > 0) {
 
             if (!autosaveDir.exists() && !autosaveDir.mkdirs()) {
-                Main.warn(tr("Unable to create directory {0}, autosave will be disabled", autosaveDir.getAbsolutePath()));
+                Logging.warn(tr("Unable to create directory {0}, autosave will be disabled", autosaveDir.getAbsolutePath()));
                 return;
             }
             if (!deletedLayersDir.exists() && !deletedLayersDir.mkdirs()) {
-                Main.warn(tr("Unable to create directory {0}, autosave will be disabled", deletedLayersDir.getAbsolutePath()));
+                Logging.warn(tr("Unable to create directory {0}, autosave will be disabled", deletedLayersDir.getAbsolutePath()));
                 return;
             }
 
@@ -149,7 +150,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
             }
 
             new Timer(true).schedule(this, TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toMillis(PROP_INTERVAL.get()));
-            Main.getLayerManager().addAndFireLayerChangeListener(this);
+            MainApplication.getLayerManager().addAndFireLayerChangeListener(this);
         }
     }
 
@@ -199,10 +200,10 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                     createNewPidFile(autosaveDir, filename);
                     return result;
                 } else {
-                    Main.warn(tr("Unable to create file {0}, other filename will be used", result.getAbsolutePath()));
+                    Logging.warn(tr("Unable to create file {0}, other filename will be used", result.getAbsolutePath()));
                 }
             } catch (IOException e) {
-                Main.error(e, tr("IOError while creating file, autosave will be skipped: {0}", e.getMessage()));
+                Logging.log(Logging.LEVEL_ERROR, tr("IOError while creating file, autosave will be skipped: {0}", e.getMessage()), e);
                 return null;
             }
             index++;
@@ -214,7 +215,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
         try (PrintStream ps = new PrintStream(pidFile, "UTF-8")) {
             ps.println(ManagementFactory.getRuntimeMXBean().getName());
         } catch (IOException | SecurityException t) {
-            Main.error(t);
+            Logging.error(t);
         }
     }
 
@@ -251,8 +252,8 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                 }
             } catch (RuntimeException t) { // NOPMD
                 // Don't let exception stop time thread
-                Main.error("Autosave failed:");
-                Main.error(t);
+                Logging.error("Autosave failed:");
+                Logging.error(t);
             }
         }
     }
@@ -342,7 +343,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                             skipFile = jvmPerfDataFileExists(pid);
                         }
                     } catch (IOException | SecurityException t) {
-                        Main.error(t);
+                        Logging.error(t);
                     }
                 }
                 if (!skipFile) {
@@ -369,8 +370,8 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
     public Future<?> recoverUnsavedLayers() {
         List<File> files = getUnsavedLayersFiles();
         final OpenFileTask openFileTsk = new OpenFileTask(files, null, tr("Restoring files"));
-        final Future<?> openFilesFuture = Main.worker.submit(openFileTsk);
-        return Main.worker.submit(() -> {
+        final Future<?> openFilesFuture = MainApplication.worker.submit(openFileTsk);
+        return MainApplication.worker.submit(() -> {
             try {
                 // Wait for opened tasks to be generated.
                 openFilesFuture.get();
@@ -378,7 +379,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                     moveToDeletedLayersFolder(f);
                 }
             } catch (InterruptedException | ExecutionException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         });
     }
@@ -403,7 +404,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
             deletedLayers.add(backupFile);
             Utils.deleteFile(pidFile);
         } else {
-            Main.warn(String.format("Could not move autosaved file %s to %s folder", f.getName(), deletedLayersDir.getName()));
+            Logging.warn(String.format("Could not move autosaved file %s to %s folder", f.getName(), deletedLayersDir.getName()));
             // we cannot move to deleted folder, so just try to delete it directly
             if (Utils.deleteFile(f, marktr("Unable to delete backup file {0}"))) {
                 Utils.deleteFile(pidFile, marktr("Unable to delete PID file {0}"));
diff --git a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
index 09f01d8..f19d2ce 100644
--- a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
@@ -30,6 +30,7 @@ import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
 import org.openstreetmap.josm.gui.layer.gpx.ChooseTrackVisibilityAction;
 import org.openstreetmap.josm.gui.layer.gpx.ConvertToDataLayerAction;
 import org.openstreetmap.josm.gui.layer.gpx.CustomizeDrawingAction;
@@ -40,7 +41,6 @@ import org.openstreetmap.josm.gui.layer.gpx.ImportAudioAction;
 import org.openstreetmap.josm.gui.layer.gpx.ImportImagesAction;
 import org.openstreetmap.josm.gui.layer.gpx.MarkersFromNamedPointsAction;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
-import org.openstreetmap.josm.io.GpxImporter;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
diff --git a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
index 778f644..161c822 100644
--- a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
@@ -34,6 +34,8 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
@@ -80,10 +82,11 @@ public abstract class ImageryLayer extends Layer {
     }
 
     public double getPPD() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return Main.getProjection().getDefaultZoomInPPD();
-        ProjectionBounds bounds = Main.map.mapView.getProjectionBounds();
-        return Main.map.mapView.getWidth() / (bounds.maxEast - bounds.minEast);
+        MapView mapView = MainApplication.getMap().mapView;
+        ProjectionBounds bounds = mapView.getProjectionBounds();
+        return mapView.getWidth() / (bounds.maxEast - bounds.minEast);
     }
 
     /**
@@ -204,8 +207,8 @@ public abstract class ImageryLayer extends Layer {
         @Override
         public void actionPerformed(ActionEvent ev) {
             setOffset(b);
-            Main.main.menu.imageryMenu.refreshOffsetMenu();
-            Main.map.repaint();
+            MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
+            MainApplication.getMap().repaint();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/LayerManager.java b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
index aa6e271..912fc45 100644
--- a/src/org/openstreetmap/josm/gui/layer/LayerManager.java
+++ b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
@@ -11,7 +11,7 @@ import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Consumer;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
@@ -231,7 +231,7 @@ public class LayerManager {
         checkPosition(position);
         insertLayerAt(layer, position);
         fireLayerAdded(layer, initialZoom);
-        if (Main.map != null) {
+        if (MainApplication.getMap() != null) {
             layer.hookUpMapView(); // needs to be after fireLayerAdded
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
index 1fd8fa0..15586a8 100644
--- a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
@@ -31,18 +31,20 @@ import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.data.osm.NoteData.NoteDataUpdateListener;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.io.AbstractIOTask;
 import org.openstreetmap.josm.gui.io.UploadNoteLayerTask;
+import org.openstreetmap.josm.gui.io.importexport.NoteExporter;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.io.NoteExporter;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.XmlWriter;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -71,12 +73,12 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener,
 
     @Override
     public void hookUpMapView() {
-        Main.map.mapView.addMouseListener(this);
+        MainApplication.getMap().mapView.addMouseListener(this);
     }
 
     @Override
     public synchronized void destroy() {
-        Main.map.mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseListener(this);
         noteData.removeNoteDataUpdateListener(this);
         super.destroy();
     }
@@ -132,7 +134,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener,
             }
             int width = icon.getIconWidth();
             int height = icon.getIconHeight();
-            g.drawImage(icon.getImage(), p.x - (width / 2), p.y - height, Main.map.mapView);
+            g.drawImage(icon.getImage(), p.x - (width / 2), p.y - height, MainApplication.getMap().mapView);
         }
         if (noteData.getSelectedNote() != null) {
             StringBuilder sb = new StringBuilder("<html>");
@@ -182,7 +184,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener,
                     } catch (IllegalArgumentException e) {
                         // See #11123 - https://bugs.openjdk.java.net/browse/JDK-6719550
                         // Ignore the exception, as Netbeans does: http://hg.netbeans.org/main-silver/rev/c96f4d5fbd20
-                        Main.error(e, false);
+                        Logging.log(Logging.LEVEL_ERROR, e);
                     }
                 }
             }
@@ -258,7 +260,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener,
         final int iconHeight = ImageProvider.ImageSizes.SMALLICON.getAdjustedHeight();
         Note closestNote = null;
         for (Note note : noteData.getNotes()) {
-            Point notePoint = Main.map.mapView.getPoint(note.getLatLon());
+            Point notePoint = MainApplication.getMap().mapView.getPoint(note.getLatLon());
             //move the note point to the center of the icon where users are most likely to click when selecting
             notePoint.setLocation(notePoint.getX(), notePoint.getY() - iconHeight / 2);
             double dist = clickPoint.distanceSq(notePoint);
@@ -272,7 +274,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener,
 
     @Override
     public File createAndOpenSaveFileChooser() {
-        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save GPX file"), NoteExporter.FILE_FILTER);
+        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save Note file"), NoteExporter.FILE_FILTER);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index bfd92da..1591e70 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -86,6 +86,8 @@ import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -94,19 +96,20 @@ import org.openstreetmap.josm.gui.io.AbstractIOTask;
 import org.openstreetmap.josm.gui.io.AbstractUploadDialog;
 import org.openstreetmap.josm.gui.io.UploadDialog;
 import org.openstreetmap.josm.gui.io.UploadLayerTask;
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.FileChooserManager;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
-import org.openstreetmap.josm.io.OsmImporter;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -174,8 +177,9 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
      */
     public void setRecentRelation(Relation relation) {
         recentRelations.put(relation, null);
-        if (Main.map != null && Main.map.relationListDialog != null) {
-            Main.map.relationListDialog.enableRecentRelations();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.relationListDialog != null) {
+            map.relationListDialog.enableRecentRelations();
         }
     }
 
@@ -186,8 +190,9 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
      */
     public void removeRecentRelation(Relation relation) {
         recentRelations.remove(relation);
-        if (Main.map != null && Main.map.relationListDialog != null) {
-            Main.map.relationListDialog.enableRecentRelations();
+        MapFrame map = MainApplication.getMap();
+        if (map != null && map.relationListDialog != null) {
+            map.relationListDialog.enableRecentRelations();
         }
     }
 
@@ -345,11 +350,6 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
     public final DataSet data;
 
     /**
-     * the collection of conflicts detected in this layer
-     */
-    private final ConflictCollection conflicts;
-
-    /**
      * a texture for non-downloaded area
      */
     private static volatile BufferedImage hatched;
@@ -401,7 +401,6 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
         CheckParameterUtil.ensureParameterNotNull(data, "data");
         this.data = data;
         this.setAssociatedFile(associatedFile);
-        conflicts = new ConflictCollection();
         data.addDataSetListener(new DataSetListenerAdapter(this));
         data.addDataSetListener(MultipolygonCache.getInstance());
         data.addHighlightUpdateListener(this);
@@ -476,7 +475,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
 
         Rendering painter = MapRendererFactory.getInstance().createActiveRenderer(g, mv, inactive);
         painter.render(data, virtual, box);
-        Main.map.conflictDialog.paintConflicts(g, mv);
+        MainApplication.getMap().conflictDialog.paintConflicts(g, mv);
     }
 
     @Override public String getToolTipText() {
@@ -534,7 +533,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
         try {
             visitor.merge(progressMonitor);
         } catch (DataIntegrityProblemException e) {
-            Main.error(e);
+            Logging.error(e);
             JOptionPane.showMessageDialog(
                     Main.parent,
                     e.getHtmlMessage() != null ? e.getHtmlMessage() : e.getMessage(),
@@ -561,16 +560,17 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
 
         int numNewConflicts = 0;
         for (Conflict<?> c : visitor.getConflicts()) {
-            if (!conflicts.hasConflict(c)) {
+            if (!data.getConflicts().hasConflict(c)) {
                 numNewConflicts++;
-                conflicts.add(c);
+                data.getConflicts().add(c);
             }
         }
         // repaint to make sure new data is displayed properly.
         invalidate();
         // warn about new conflicts
-        if (numNewConflicts > 0 && Main.map != null && Main.map.conflictDialog != null) {
-            Main.map.conflictDialog.warnNumNewConflicts(numNewConflicts);
+        MapFrame map = MainApplication.getMap();
+        if (numNewConflicts > 0 && map != null && map.conflictDialog != null) {
+            map.conflictDialog.warnNumNewConflicts(numNewConflicts);
         }
     }
 
@@ -602,7 +602,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
         if (processed == null || processed.isEmpty())
             return;
 
-        Main.main.undoRedo.clean(this);
+        MainApplication.undoRedo.clean(this);
 
         // if uploaded, clean the modified flags as well
         data.cleanupDeletedPrimitives();
@@ -815,7 +815,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
                         break;
                     }
                 } catch (NumberFormatException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                 }
             }
         }
@@ -835,7 +835,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
                         break;
                     }
                 } catch (NumberFormatException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                 }
             }
         }
@@ -882,11 +882,11 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
                 String filename = getAssociatedFile().getName().replaceAll(Pattern.quote(".gpx.osm") + '$', "") + ".gpx";
                 gpxLayer.setAssociatedFile(new File(getAssociatedFile().getParentFile(), filename));
             }
-            Main.getLayerManager().addLayer(gpxLayer);
+            MainApplication.getLayerManager().addLayer(gpxLayer);
             if (Main.pref.getBoolean("marker.makeautomarkers", true) && !gpxData.waypoints.isEmpty()) {
-                Main.getLayerManager().addLayer(new MarkerLayer(gpxData, tr("Converted from: {0}", getName()), null, gpxLayer));
+                MainApplication.getLayerManager().addLayer(new MarkerLayer(gpxData, tr("Converted from: {0}", getName()), null, gpxLayer));
             }
-            Main.getLayerManager().removeLayer(OsmDataLayer.this);
+            MainApplication.getLayerManager().removeLayer(OsmDataLayer.this);
         }
     }
 
@@ -917,7 +917,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, D
      * @return the set of conflicts currently managed in this layer
      */
     public ConflictCollection getConflicts() {
-        return conflicts;
+        return data.getConflicts();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
index 1595f8a..73e6077 100644
--- a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
@@ -12,7 +12,6 @@ import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.ScanexTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.TMSTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.TemplatedTMSTileSource;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.imagery.CachedAttributionBingAerialTileSource;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
@@ -20,6 +19,7 @@ import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Class that displays a slippy map layer.
@@ -70,7 +70,7 @@ public class TMSLayer extends AbstractCachedTileSourceLayer<TMSTileSource> imple
     @Override
     protected TMSTileSource getTileSource() {
         return getTileSourceStatic(info, () -> {
-            Main.debug("Attribution loaded, running loadAllErrorTiles");
+            Logging.debug("Attribution loaded, running loadAllErrorTiles");
             this.loadAllErrorTiles(false);
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java b/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
index 682e27c..bb42536 100644
--- a/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.gui.layer;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Graphics2D;
+import java.io.File;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
@@ -13,17 +14,19 @@ import javax.swing.Icon;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.TreeNode;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.RenameLayerAction;
+import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.PaintVisitor;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.io.importexport.ValidatorErrorExporter;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
@@ -47,8 +50,8 @@ public class ValidatorLayer extends Layer implements LayerChangeListener {
      */
     public ValidatorLayer() {
         super(tr("Validation errors"));
-        Main.getLayerManager().addLayerChangeListener(this);
-        Main.map.validatorDialog.tree.addInvalidationListener(invalidator);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getMap().validatorDialog.tree.addInvalidationListener(invalidator);
     }
 
     /**
@@ -67,7 +70,7 @@ public class ValidatorLayer extends Layer implements LayerChangeListener {
     @SuppressWarnings("unchecked")
     @Override
     public void paint(final Graphics2D g, final MapView mv, Bounds bounds) {
-        DefaultMutableTreeNode root = Main.map.validatorDialog.tree.getRoot();
+        DefaultMutableTreeNode root = MainApplication.getMap().validatorDialog.tree.getRoot();
         if (root == null || root.getChildCount() == 0)
             return;
 
@@ -93,7 +96,7 @@ public class ValidatorLayer extends Layer implements LayerChangeListener {
     @Override
     public String getToolTipText() {
         MultiMap<Severity, TestError> errorTree = new MultiMap<>();
-        List<TestError> errors = Main.map.validatorDialog.tree.getErrors();
+        List<TestError> errors = MainApplication.getMap().validatorDialog.tree.getErrors();
         for (TestError e : errors) {
             errorTree.put(e.getSeverity(), e);
         }
@@ -139,7 +142,14 @@ public class ValidatorLayer extends Layer implements LayerChangeListener {
                 SeparatorLayerAction.INSTANCE,
                 new RenameLayerAction(null, this),
                 SeparatorLayerAction.INSTANCE,
-                new LayerListPopup.InfoAction(this) };
+                new LayerListPopup.InfoAction(this),
+                new LayerSaveAsAction(this)
+                };
+    }
+
+    @Override
+    public File createAndOpenSaveFileChooser() {
+        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save Validation errors file"), ValidatorErrorExporter.FILE_FILTER);
     }
 
     @Override
@@ -172,8 +182,8 @@ public class ValidatorLayer extends Layer implements LayerChangeListener {
 
     @Override
     public synchronized void destroy() {
-        Main.map.validatorDialog.tree.removeInvalidationListener(invalidator);
-        Main.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getMap().validatorDialog.tree.removeInvalidationListener(invalidator);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
index 6a7f476..0cc498f 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -131,13 +132,13 @@ public class WMSLayer extends AbstractCachedTileSourceLayer<AbstractWMSTileSourc
             for (String code : serverProjections) {
                 Projection proj = Projections.getProjectionByCode(code);
                 if (proj != null) {
-                    Main.info(tr("Reprojecting layer {0} from {1} to {2}. For best image quality and performance,"
+                    Logging.info(tr("Reprojecting layer {0} from {1} to {2}. For best image quality and performance,"
                             + " switch to one of the supported projections: {3}",
                             getName(), proj.toCode(), Main.getProjection().toCode(), Utils.join(", ", getNativeProjections())));
                     return proj;
                 }
             }
-            Main.warn(tr("Unable to find supported projection for layer {0}. Using {1}.", getName(), requested.toCode()));
+            Logging.warn(tr("Unable to find supported projection for layer {0}. Using {1}.", getName(), requested.toCode()));
             return requested;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
index ab9895f..8e3663b 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
@@ -13,7 +13,9 @@ import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.WMSCachedTileLoader;
 import org.openstreetmap.josm.data.imagery.WMTSTileSource;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -62,20 +64,20 @@ public class WMTSLayer extends AbstractCachedTileSourceLayer<WMTSTileSource> imp
             }
             return null;
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
             throw new IllegalArgumentException(e);
         }
     }
 
     @Override
     public int getBestZoom() {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return 0;
         ScaleList scaleList = getNativeScales();
         if (scaleList == null) {
             return getMaxZoomLvl();
         }
-        double displayScale = Main.map.mapView.getScale();
+        double displayScale = MainApplication.getMap().mapView.getScale();
         if (coordinateConverter.requiresReprojection()) {
             displayScale *= Main.getProjection().getMetersPerUnit();
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
index 006e3f4..3c40425 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
@@ -70,17 +70,19 @@ import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.GpxReader;
-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.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
@@ -179,7 +181,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 // Search whether an other layer has yet defined some bounding box.
                 // If none, we'll zoom to the bounding box of the layer with the photos.
                 boolean boundingBoxedLayerFound = false;
-                for (Layer l: Main.getLayerManager().getLayers()) {
+                for (Layer l: MainApplication.getLayerManager().getLayers()) {
                     if (l != yLayer) {
                         BoundingXYVisitor bbox = new BoundingXYVisitor();
                         l.visitBoundingBox(bbox);
@@ -192,7 +194,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 if (!boundingBoxedLayerFound) {
                     BoundingXYVisitor bbox = new BoundingXYVisitor();
                     yLayer.visitBoundingBox(bbox);
-                    Main.map.mapView.zoomTo(bbox);
+                    MainApplication.getMap().mapView.zoomTo(bbox);
                 }
 
                 if (yLayer.data != null) {
@@ -290,7 +292,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                     data.storageFile = sel;
 
                 } catch (SAXException ex) {
-                    Main.error(ex);
+                    Logging.error(ex);
                     JOptionPane.showMessageDialog(
                             Main.parent,
                             tr("Error while parsing {0}", sel.getName())+": "+ex.getMessage(),
@@ -299,7 +301,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                     );
                     return;
                 } catch (IOException ex) {
-                    Main.error(ex);
+                    Logging.error(ex);
                     JOptionPane.showMessageDialog(
                             Main.parent,
                             tr("Could not read \"{0}\"", sel.getName())+'\n'+ex.getMessage(),
@@ -541,7 +543,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
     @Override
     public void actionPerformed(ActionEvent ae) {
         // Construct the list of loaded GPX tracks
-        Collection<Layer> layerLst = Main.getLayerManager().getLayers();
+        Collection<Layer> layerLst = MainApplication.getLayerManager().getLayers();
         GpxDataWrapper defaultItem = null;
         for (Layer cur : layerLst) {
             if (cur instanceof GpxLayer) {
@@ -933,7 +935,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 final long deciSeconds = timezoneOffsetPair.b.getMilliseconds() / 100;
                 sldSeconds.setValue((int) (deciSeconds % 60));
             } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 JOptionPane.showMessageDialog(Main.parent,
                         tr("An error occurred while trying to match the photos to the GPX track."
                                 +" You can adjust the sliders to manually match the photos."),
@@ -1013,13 +1015,13 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 timezone = r.a;
                 delta = r.b;
             } catch (IndexOutOfBoundsException ex) {
-                Main.debug(ex);
+                Logging.debug(ex);
                 JOptionPane.showMessageDialog(Main.parent,
                         tr("The selected photos do not contain time information."),
                         tr("Photos do not contain time information"), JOptionPane.WARNING_MESSAGE);
                 return;
             } catch (NoGpxTimestamps ex) {
-                Main.debug(ex);
+                Logging.debug(ex);
                 JOptionPane.showMessageDialog(Main.parent,
                         tr("The selected GPX track does not contain timestamps. Please select another one."),
                         tr("GPX Track has no time information"), JOptionPane.WARNING_MESSAGE);
@@ -1132,7 +1134,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
             try {
                 return Double.valueOf(value);
             } catch (NumberFormatException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return null;
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
index 5ffd7a4..520c15f 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
@@ -46,6 +46,7 @@ import org.openstreetmap.josm.actions.mapmode.SelectAction;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
 import org.openstreetmap.josm.gui.MapView;
@@ -54,6 +55,7 @@ import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToMarkerLayer;
@@ -65,8 +67,8 @@ 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.gui.util.GuiHelper;
-import org.openstreetmap.josm.io.JpgImporter;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -194,7 +196,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
             try {
                 addRecursiveFiles(files, selection);
             } catch (IllegalStateException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 rememberError(e.getMessage());
             }
 
@@ -240,7 +242,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
                     try {
                         canonical = f.getCanonicalPath();
                     } catch (IOException e) {
-                        Main.error(e);
+                        Logging.error(e);
                         rememberError(tr("Unable to get canonical path for directory {0}\n",
                                 f.getAbsolutePath()));
                     }
@@ -291,7 +293,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
                         );
             }
             if (layer != null) {
-                Main.getLayerManager().addLayer(layer);
+                MainApplication.getLayerManager().addLayer(layer);
 
                 if (!canceled && layer.data != null && !layer.data.isEmpty()) {
                     boolean noGeotagFound = true;
@@ -313,7 +315,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
     }
 
     public static void create(Collection<File> files, GpxLayer gpxLayer) {
-        Main.worker.execute(new Loader(files, gpxLayer));
+        MainApplication.worker.execute(new Loader(files, gpxLayer));
     }
 
     @Override
@@ -456,7 +458,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
     }
 
     private static Dimension scaledDimension(Image thumb) {
-        final double d = Main.map.mapView.getDist100Pixel();
+        final double d = MainApplication.getMap().mapView.getDist100Pixel();
         final double size = 10 /*meter*/;     /* size of the photo on the map */
         double s = size * 100 /*px*/ / d;
 
@@ -734,7 +736,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
                 }
 
                 if (Utils.deleteFile(toDelete.getFile())) {
-                    Main.info("File "+toDelete.getFile()+" deleted. ");
+                    Logging.info("File "+toDelete.getFile()+" deleted. ");
                 } else {
                     JOptionPane.showMessageDialog(
                             Main.parent,
@@ -776,7 +778,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
         if (idx >= 0 && data != null && idx < data.size()) {
             ImageEntry img = data.get(idx);
             if (img.getPos() != null) {
-                Point imgCenter = Main.map.mapView.getPoint(img.getPos());
+                Point imgCenter = MainApplication.getMap().mapView.getPoint(img.getPos());
                 Rectangle imgRect;
                 if (useThumbs && img.hasThumbnail()) {
                     Dimension imgDim = scaledDimension(img.getThumbnail());
@@ -885,7 +887,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
      */
     private void clearOtherCurrentPhotos() {
         for (GeoImageLayer layer:
-                 Main.getLayerManager().getLayersOfType(GeoImageLayer.class)) {
+                 MainApplication.getLayerManager().getLayersOfType(GeoImageLayer.class)) {
             if (layer != this) {
                 layer.clearCurrentPhoto(false);
             }
@@ -930,7 +932,8 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
     public void hookUpMapView() {
         mouseAdapter = new MouseAdapter() {
             private boolean isMapModeOk() {
-                return Main.map.mapMode == null || isSupportedMapMode(Main.map.mapMode);
+                MapMode mapMode = MainApplication.getMap().mapMode;
+                return mapMode == null || isSupportedMapMode(mapMode);
             }
 
             @Override
@@ -975,26 +978,27 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
         };
 
         mapModeListener = (oldMapMode, newMapMode) -> {
+            MapView mapView = MainApplication.getMap().mapView;
             if (newMapMode == null || isSupportedMapMode(newMapMode)) {
-                Main.map.mapView.addMouseListener(mouseAdapter);
-                Main.map.mapView.addMouseMotionListener(mouseMotionAdapter);
+                mapView.addMouseListener(mouseAdapter);
+                mapView.addMouseMotionListener(mouseMotionAdapter);
             } else {
-                Main.map.mapView.removeMouseListener(mouseAdapter);
-                Main.map.mapView.removeMouseMotionListener(mouseMotionAdapter);
+                mapView.removeMouseListener(mouseAdapter);
+                mapView.removeMouseMotionListener(mouseMotionAdapter);
             }
         };
 
         MapFrame.addMapModeChangeListener(mapModeListener);
-        mapModeListener.mapModeChange(null, Main.map.mapMode);
+        mapModeListener.mapModeChange(null, MainApplication.getMap().mapMode);
 
-        Main.getLayerManager().addActiveLayerChangeListener(e -> {
-            if (Main.getLayerManager().getActiveLayer() == this) {
+        MainApplication.getLayerManager().addActiveLayerChangeListener(e -> {
+            if (MainApplication.getLayerManager().getActiveLayer() == this) {
                 // only in select mode it is possible to click the images
-                Main.map.selectSelectTool(false);
+                MainApplication.getMap().selectSelectTool(false);
             }
         });
 
-        Main.getLayerManager().addLayerChangeListener(new LayerChangeListener() {
+        MainApplication.getLayerManager().addLayerChangeListener(new LayerChangeListener() {
             @Override
             public void layerAdded(LayerAddEvent e) {
                 // Do nothing
@@ -1004,8 +1008,9 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
             public void layerRemoving(LayerRemoveEvent e) {
                 if (e.getRemovedLayer() == GeoImageLayer.this) {
                     stopLoadThumbs();
-                    Main.map.mapView.removeMouseListener(mouseAdapter);
-                    Main.map.mapView.removeMouseMotionListener(mouseMotionAdapter);
+                    MapView mapView = MainApplication.getMap().mapView;
+                    mapView.removeMouseListener(mouseAdapter);
+                    mapView.removeMouseMotionListener(mouseMotionAdapter);
                     MapFrame.removeMapModeChangeListener(mapModeListener);
                     currentPhoto = -1;
                     if (data != null) {
@@ -1013,7 +1018,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
                     }
                     data = null;
                     // stop listening to layer change events
-                    Main.getLayerManager().removeLayerChangeListener(this);
+                    MainApplication.getLayerManager().removeLayerChangeListener(this);
                 }
             }
 
@@ -1023,9 +1028,10 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
             }
         });
 
-        if (Main.map.getToggleDialog(ImageViewerDialog.class) == null) {
+        MapFrame map = MainApplication.getMap();
+        if (map.getToggleDialog(ImageViewerDialog.class) == null) {
             ImageViewerDialog.newInstance();
-            Main.map.addToggleDialog(ImageViewerDialog.getInstance());
+            map.addToggleDialog(ImageViewerDialog.getInstance());
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
index 2de738f..322cfc6 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
@@ -27,6 +27,7 @@ import javax.swing.JComponent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.ExifReader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * GUI component to display an image (photograph).
@@ -85,7 +86,7 @@ public class ImageDisplay extends JComponent {
                 try {
                     Thread.sleep(5);
                 } catch (InterruptedException e) {
-                    Main.warn("InterruptedException in "+getClass().getSimpleName()+" while loading image "+file.getPath());
+                    Logging.warn("InterruptedException in "+getClass().getSimpleName()+" while loading image "+file.getPath());
                     Thread.currentThread().interrupt();
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
index a7bb22b..2fa6126 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
@@ -7,11 +7,11 @@ import java.io.IOException;
 import java.util.Collections;
 import java.util.Date;
 
-import org.openstreetmap.josm.Main;
 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 org.openstreetmap.josm.tools.Logging;
 
 import com.drew.imaging.jpeg.JpegMetadataReader;
 import com.drew.lang.CompoundException;
@@ -439,7 +439,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
         try {
             metadata = JpegMetadataReader.readMetadata(file);
         } catch (CompoundException | IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
             setExifTime(null);
             setExifCoor(null);
             setPos(null);
@@ -451,7 +451,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
         try {
             setExifTime(ExifReader.readTime(metadata));
         } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
             setExifTime(null);
         }
 
@@ -464,7 +464,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
                 setExifOrientation(orientation);
             }
         } catch (MetadataException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
         }
 
         if (dirGps == null) {
@@ -488,7 +488,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
             setExifCoor(latlon);
             setPos(getExifCoor());
         } catch (MetadataException | IndexOutOfBoundsException ex) { // (other exceptions, e.g. #5271)
-            Main.error("Error reading EXIF from file: " + ex);
+            Logging.error("Error reading EXIF from file: " + ex);
             setExifCoor(null);
             setPos(null);
         }
@@ -499,7 +499,7 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
                 setExifImgDir(direction);
             }
         } catch (IndexOutOfBoundsException ex) { // (other exceptions, e.g. #5271)
-            Main.debug(ex);
+            Logging.debug(ex);
         }
 
         final Date gpsDate = dirGps.getGpsDate();
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
index b339dcc..df2aa51 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
@@ -21,7 +21,7 @@ import javax.swing.JComponent;
 import javax.swing.JPanel;
 import javax.swing.JToggleButton;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.DialogsPanel.Action;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -82,8 +82,8 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         super(tr("Geotagged Images"), "geoimage", tr("Display geotagged images"), Shortcut.registerShortcut("tools:geotagged",
         tr("Tool: {0}", tr("Display geotagged images")), KeyEvent.VK_Y, Shortcut.DIRECT), 200);
         build();
-        Main.getLayerManager().addActiveLayerChangeListener(this);
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
     private void build() {
@@ -99,7 +99,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         Shortcut scPrev = Shortcut.registerShortcut(
                 "geoimage:previous", tr("Geoimage: {0}", tr("Show previous Image")), KeyEvent.VK_PAGE_UP, Shortcut.DIRECT);
         final String previousImage = "Previous Image";
-        Main.registerActionShortcut(prevAction, scPrev);
+        MainApplication.registerActionShortcut(prevAction, scPrev);
         btnPrevious.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scPrev.getKeyStroke(), previousImage);
         btnPrevious.getActionMap().put(previousImage, prevAction);
         btnPrevious.setEnabled(false);
@@ -110,7 +110,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         btnDelete.setPreferredSize(buttonDim);
         Shortcut scDelete = Shortcut.registerShortcut(
                 "geoimage:deleteimagefromlayer", tr("Geoimage: {0}", tr("Remove photo from layer")), KeyEvent.VK_DELETE, Shortcut.SHIFT);
-        Main.registerActionShortcut(delAction, scDelete);
+        MainApplication.registerActionShortcut(delAction, scDelete);
         btnDelete.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scDelete.getKeyStroke(), removePhoto);
         btnDelete.getActionMap().put(removePhoto, delAction);
 
@@ -121,7 +121,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         Shortcut scDeleteFromDisk = Shortcut.registerShortcut(
                 "geoimage:deletefilefromdisk", tr("Geoimage: {0}", tr("Delete File from disk")), KeyEvent.VK_DELETE, Shortcut.CTRL_SHIFT);
         final String deleteImage = "Delete image file from disk";
-        Main.registerActionShortcut(delFromDiskAction, scDeleteFromDisk);
+        MainApplication.registerActionShortcut(delFromDiskAction, scDeleteFromDisk);
         btnDeleteFromDisk.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scDeleteFromDisk.getKeyStroke(), deleteImage);
         btnDeleteFromDisk.getActionMap().put(deleteImage, delFromDiskAction);
 
@@ -131,7 +131,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         Shortcut scCopyPath = Shortcut.registerShortcut(
                 "geoimage:copypath", tr("Geoimage: {0}", tr("Copy image path")), KeyEvent.VK_C, Shortcut.ALT_CTRL_SHIFT);
         final String copyImage = "Copy image path";
-        Main.registerActionShortcut(copyPathAction, scCopyPath);
+        MainApplication.registerActionShortcut(copyPathAction, scCopyPath);
         btnCopyPath.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scCopyPath.getKeyStroke(), copyImage);
         btnCopyPath.getActionMap().put(copyImage, copyPathAction);
 
@@ -141,17 +141,17 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         Shortcut scNext = Shortcut.registerShortcut(
                 "geoimage:next", tr("Geoimage: {0}", tr("Show next Image")), KeyEvent.VK_PAGE_DOWN, Shortcut.DIRECT);
         final String nextImage = "Next Image";
-        Main.registerActionShortcut(nextAction, scNext);
+        MainApplication.registerActionShortcut(nextAction, scNext);
         btnNext.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scNext.getKeyStroke(), nextImage);
         btnNext.getActionMap().put(nextImage, nextAction);
         btnNext.setEnabled(false);
 
-        Main.registerActionShortcut(
+        MainApplication.registerActionShortcut(
                 new ImageAction(COMMAND_FIRST, null, null),
                 Shortcut.registerShortcut(
                         "geoimage:first", tr("Geoimage: {0}", tr("Show first Image")), KeyEvent.VK_HOME, Shortcut.DIRECT)
         );
-        Main.registerActionShortcut(
+        MainApplication.registerActionShortcut(
                 new ImageAction(COMMAND_LAST, null, null),
                 Shortcut.registerShortcut(
                         "geoimage:last", tr("Geoimage: {0}", tr("Show last Image")), KeyEvent.VK_END, Shortcut.DIRECT)
@@ -203,8 +203,8 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
 
     @Override
     public void destroy() {
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
-        Main.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
     }
 
@@ -235,7 +235,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
                 final JToggleButton button = (JToggleButton) e.getSource();
                 centerView = button.isEnabled() && button.isSelected();
                 if (centerView && currentEntry != null && currentEntry.getPos() != null) {
-                    Main.map.mapView.zoomTo(currentEntry.getPos());
+                    MainApplication.getMap().mapView.zoomTo(currentEntry.getPos());
                 }
             } else if (COMMAND_ZOOM.equals(action)) {
                 imgDisplay.zoomBestFitOrOne();
@@ -308,8 +308,8 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
 
             imageChanged = currentEntry != entry;
 
-            if (centerView && entry != null && Main.isDisplayingMapView() && entry.getPos() != null) {
-                Main.map.mapView.zoomTo(entry.getPos());
+            if (centerView && entry != null && MainApplication.isDisplayingMapView() && entry.getPos() != null) {
+                MainApplication.getMap().mapView.zoomTo(entry.getPos());
             }
 
             currentLayer = layer;
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
index 50fd974..715d9c4 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
@@ -20,11 +20,13 @@ import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.cache.JCSCacheManager;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ExifReader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Loads thumbnail previews for a list of images from a {@link GeoImageLayer}.
- * 
+ *
  * Thumbnails are loaded in the background and cached on disk for the next session.
  */
 public class ThumbsLoader implements Runnable {
@@ -68,16 +70,16 @@ public class ThumbsLoader implements Runnable {
                 cache = JCSCacheManager.getCache("geoimage-thumbnails", 0, 120,
                         Main.pref.getCacheDirectory().getPath() + File.separator + "geoimage-thumbnails");
             } catch (IOException e) {
-                Main.warn("Failed to initialize cache for geoimage-thumbnails");
-                Main.warn(e);
+                Logging.warn("Failed to initialize cache for geoimage-thumbnails");
+                Logging.warn(e);
             }
         }
     }
 
     @Override
     public void run() {
-        Main.debug("Load Thumbnails");
-        tracker = new MediaTracker(Main.map.mapView);
+        Logging.debug("Load Thumbnails");
+        tracker = new MediaTracker(MainApplication.getMap().mapView);
         for (ImageEntry entry : data) {
             if (stop) return;
 
@@ -85,7 +87,7 @@ public class ThumbsLoader implements Runnable {
             if (!entry.hasThumbnail()) {
                 entry.setThumbnail(loadThumb(entry));
 
-                if (layer != null && Main.isDisplayingMapView()) {
+                if (layer != null && MainApplication.isDisplayingMapView()) {
                     layer.updateBufferAndRepaint();
                 }
             }
@@ -103,11 +105,11 @@ public class ThumbsLoader implements Runnable {
             try {
                 BufferedImageCacheEntry cacheEntry = cache.get(cacheIdent);
                 if (cacheEntry != null && cacheEntry.getImage() != null) {
-                    Main.debug(" from cache");
+                    Logging.debug(" from cache");
                     return cacheEntry.getImage();
                 }
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
 
@@ -116,12 +118,12 @@ public class ThumbsLoader implements Runnable {
         try {
             tracker.waitForID(0);
         } catch (InterruptedException e) {
-            Main.error(" InterruptedException while loading thumb");
+            Logging.error(" InterruptedException while loading thumb");
             Thread.currentThread().interrupt();
             return null;
         }
         if (tracker.isErrorID(1) || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) {
-            Main.error(" Invalid image");
+            Logging.error(" Invalid image");
             return null;
         }
 
@@ -153,7 +155,7 @@ public class ThumbsLoader implements Runnable {
             try {
                 Thread.sleep(10);
             } catch (InterruptedException e) {
-                Main.warn("InterruptedException while drawing thumb");
+                Logging.warn("InterruptedException while drawing thumb");
                 Thread.currentThread().interrupt();
             }
         }
@@ -161,7 +163,7 @@ public class ThumbsLoader implements Runnable {
         tracker.removeImage(img);
 
         if (scaledBI.getWidth() <= 0 || scaledBI.getHeight() <= 0) {
-            Main.error(" Invalid image");
+            Logging.error(" Invalid image");
             return null;
         }
 
@@ -170,8 +172,8 @@ public class ThumbsLoader implements Runnable {
                 ImageIO.write(scaledBI, "png", output);
                 cache.put(cacheIdent, new BufferedImageCacheEntry(output.toByteArray()));
             } catch (IOException e) {
-                Main.warn("Failed to save geoimage thumb to cache");
-                Main.warn(e);
+                Logging.warn("Failed to save geoimage thumb to cache");
+                Logging.warn(e);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
index b45721f..d24d794 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
@@ -35,11 +35,12 @@ import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * allows the user to choose which of the downloaded tracks should be displayed.
@@ -278,7 +279,7 @@ public class ChooseTrackVisibilityAction extends AbstractAction {
             // cancel for unknown buttons and copy back original settings
             if (v != 1 && v != 2) {
                 layer.trackVisibility = Arrays.copyOf(trackVisibilityBackup, layer.trackVisibility.length);
-                Main.map.repaint();
+                MainApplication.getMap().repaint();
                 return;
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
index 3df1039..5a0f238 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -36,6 +37,7 @@ import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -83,7 +85,7 @@ public abstract class ConvertToDataLayerAction<T extends Layer> extends Abstract
                             try {
                                 n.setTimestamp(DateUtils.fromString(timestr));
                             } catch (UncheckedParseException e) {
-                                Main.warn(e, false);
+                                Logging.log(Logging.LEVEL_WARN, e);
                             }
                         }
                         ds.addPrimitive(n);
@@ -132,7 +134,7 @@ public abstract class ConvertToDataLayerAction<T extends Layer> extends Abstract
                                 .ifPresent(s -> node.put(osmKey, s));
                     }
                 } else {
-                    Main.warn("Invalid gpx.to-osm-mapping Einstein setting: expecting even number of entries");
+                    Logging.warn("Invalid gpx.to-osm-mapping Einstein setting: expecting even number of entries");
                 }
                 ds.addPrimitive(node);
             }
@@ -164,7 +166,7 @@ public abstract class ConvertToDataLayerAction<T extends Layer> extends Abstract
             osmLayer.setAssociatedFile(new File(layer.getAssociatedFile().getParentFile(), layer.getAssociatedFile().getName() + ".osm"));
         }
         osmLayer.setUploadDiscouraged(true);
-        Main.getLayerManager().addLayer(osmLayer);
-        Main.getLayerManager().removeLayer(layer);
+        MainApplication.getLayerManager().addLayer(osmLayer);
+        MainApplication.getLayerManager().removeLayer(layer);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
index 19533df..785f1dc 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
@@ -18,6 +18,7 @@ import javax.swing.JOptionPane;
 import javax.swing.JScrollPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
@@ -110,7 +111,7 @@ public class CustomizeDrawingAction extends AbstractAction implements LayerActio
             }
             panel.savePreferences(layer.getName(), f);
         }
-        Main.map.repaint();
+        MainApplication.getMap().repaint();
     }
 
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
index 396209d..cf6bef5 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
@@ -7,13 +7,13 @@ import java.awt.event.ActionEvent;
 import java.awt.geom.Area;
 import java.awt.geom.Rectangle2D;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DownloadAlongAction;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -196,7 +196,7 @@ public class DownloadAlongTrackAction extends DownloadAlongAction {
     public void actionPerformed(ActionEvent e) {
         PleaseWaitRunnable task = createTask();
         if (task != null) {
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
index f7f3945..0e130ca 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
@@ -20,12 +20,14 @@ import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.gui.progress.ProgressTaskIds;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -65,7 +67,7 @@ public class DownloadWmsAlongTrackAction extends AbstractAction {
                         wait(200);
                     }
                 } catch (InterruptedException ex) {
-                    Main.warn("InterruptedException in "+getClass().getSimpleName()+" while precaching WMS");
+                    Logging.warn("InterruptedException in "+getClass().getSimpleName()+" while precaching WMS");
                     Thread.currentThread().interrupt();
                 }
             }
@@ -107,13 +109,13 @@ public class DownloadWmsAlongTrackAction extends AbstractAction {
     public void actionPerformed(ActionEvent e) {
         PrecacheWmsTask task = createTask();
         if (task != null) {
-            Main.worker.execute(task);
+            MainApplication.worker.execute(task);
         }
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
     protected AbstractTileSourceLayer<? extends AbstractTMSTileSource> askedLayer() {
-        List<AbstractTileSourceLayer> targetLayers = Main.getLayerManager().getLayersOfType(AbstractTileSourceLayer.class);
+        List<AbstractTileSourceLayer> targetLayers = MainApplication.getLayerManager().getLayersOfType(AbstractTileSourceLayer.class);
         if (targetLayers.isEmpty()) {
             if (!GraphicsEnvironment.isHeadless()) {
                 warnNoImageryLayers();
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
index 6c84b33..2d8b2db 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
@@ -54,6 +54,7 @@ import org.openstreetmap.josm.gui.layer.MapViewPaintable.PaintableInvalidationLi
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.ColorScale;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -279,7 +280,7 @@ public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP
             int i = Main.pref.getInteger("draw.rawgps.colors", specName(layerName), 0);
             return ColorMode.fromIndex(i);
         } catch (IndexOutOfBoundsException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return ColorMode.NONE;
     }
@@ -471,10 +472,10 @@ public class GpxDrawHelper implements SoMChangeListener, MapViewPaintable.LayerP
         g.setComposite(oldComposite);
 
         // show some debug info
-        if (Main.isDebugEnabled() && !visibleSegments.isEmpty()) {
+        if (Logging.isDebugEnabled() && !visibleSegments.isEmpty()) {
             final long timeDiff = System.currentTimeMillis() - timeStart;
 
-            Main.debug("gpxdraw::draw takes " +
+            Logging.debug("gpxdraw::draw takes " +
                          Utils.getDurationString(timeDiff) +
                          "(" +
                          "segments= " + visibleSegments.size() +
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
index 9a2f555..5085113 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.AudioMarker;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -113,8 +114,8 @@ public class ImportAudioAction extends AbstractAction {
             for (File file : sel) {
                 importAudio(file, ml, firstStartTime, m);
             }
-            Main.getLayerManager().addLayer(ml);
-            Main.map.repaint();
+            MainApplication.getLayerManager().addLayer(ml);
+            MainApplication.getMap().repaint();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
index b4b5bd6..5d57798 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
@@ -15,11 +15,11 @@ import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.gui.widgets.FileChooserManager;
-import org.openstreetmap.josm.io.JpgImporter;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Utils;
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
index b779f0c..15aa0f0 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
@@ -8,8 +8,8 @@ import java.awt.event.ActionEvent;
 
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -38,7 +38,7 @@ public class MarkersFromNamedPointsAction extends AbstractAction {
             .forEach(namedTrackPoints.waypoints::add);
         MarkerLayer ml = new MarkerLayer(namedTrackPoints, tr("Named Trackpoints from {0}", layer.getName()), layer.getAssociatedFile(), layer);
         if (!ml.data.isEmpty()) {
-            Main.getLayerManager().addLayer(ml);
+            MainApplication.getLayerManager().addLayer(ml);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulFilter.java b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulFilter.java
index feaff66..e1f739d 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulFilter.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulFilter.java
@@ -12,7 +12,7 @@ import java.awt.image.DataBuffer;
 import java.awt.image.DataBufferByte;
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Colorful filter.
@@ -39,13 +39,13 @@ public class ColorfulFilter implements BufferedImageOp {
         DataBuffer srcBuffer = src.getRaster().getDataBuffer();
         DataBuffer destBuffer = dest.getRaster().getDataBuffer();
         if (!(srcBuffer instanceof DataBufferByte) || !(destBuffer instanceof DataBufferByte)) {
-            Main.trace("Cannot apply color filter: Images do not use DataBufferByte.");
+            Logging.trace("Cannot apply color filter: Images do not use DataBufferByte.");
             return src;
         }
 
         int type = src.getType();
         if (type != dest.getType()) {
-            Main.trace("Cannot apply color filter: Src / Dest differ in type (" + type + '/' + dest.getType() + ')');
+            Logging.trace("Cannot apply color filter: Src / Dest differ in type (" + type + '/' + dest.getType() + ')');
             return src;
         }
         int redOffset;
@@ -72,7 +72,7 @@ public class ColorfulFilter implements BufferedImageOp {
             alphaOffset = 3;
             break;
         default:
-            Main.trace("Cannot apply color filter: Source image is of wrong type (" + type + ").");
+            Logging.trace("Cannot apply color filter: Source image is of wrong type (" + type + ").");
             return src;
         }
         doFilter((DataBufferByte) srcBuffer, (DataBufferByte) destBuffer, redOffset, greenOffset, blueOffset,
@@ -85,7 +85,7 @@ public class ColorfulFilter implements BufferedImageOp {
         byte[] srcPixels = src.getData();
         byte[] destPixels = dest.getData();
         if (srcPixels.length != destPixels.length) {
-            Main.trace("Cannot apply color filter: Source/Dest lengths differ.");
+            Logging.trace("Cannot apply color filter: Source/Dest lengths differ.");
             return;
         }
         int entries = hasAlpha ? 4 : 3;
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java
index 1e1c5d7..f19eeca 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java
@@ -2,8 +2,13 @@
 package org.openstreetmap.josm.gui.layer.imagery;
 
 import java.awt.image.BufferedImage;
+import java.util.Collections;
+import java.util.Map;
 
 import org.openstreetmap.josm.gui.layer.ImageProcessor;
+import org.openstreetmap.josm.io.session.SessionAwareReadApply;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Adds or removes the colorfulness of the image.
@@ -11,9 +16,9 @@ import org.openstreetmap.josm.gui.layer.ImageProcessor;
  * @author Michael Zangl
  * @since 10547
  */
-public class ColorfulImageProcessor implements ImageProcessor {
+public class ColorfulImageProcessor implements ImageProcessor, SessionAwareReadApply {
     private ColorfulFilter op;
-    private double colorfulness = 1;
+    private double colorfulness = 1.0;
 
     /**
      * Gets the colorfulness value.
@@ -51,6 +56,26 @@ public class ColorfulImageProcessor implements ImageProcessor {
     }
 
     @Override
+    public void applyFromPropertiesMap(Map<String, String> properties) {
+        String cStr = properties.get("colorfulness");
+        if (cStr != null) {
+            try {
+                setColorfulness(Double.parseDouble(cStr));
+            } catch (NumberFormatException e) {
+                Logging.trace(e);
+            }
+        }
+    }
+
+    @Override
+    public Map<String, String> toPropertiesMap() {
+        if (Utils.equalsEpsilon(colorfulness, 1.0))
+            return Collections.emptyMap();
+        else
+            return Collections.singletonMap("colorfulness", Double.toString(colorfulness));
+    }
+
+    @Override
     public String toString() {
         return "ColorfulImageProcessor [colorfulness=" + colorfulness + ']';
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java
index 5f9947a..b8fb145 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java
@@ -5,16 +5,20 @@ import java.awt.Transparency;
 import java.awt.image.BufferedImage;
 import java.awt.image.LookupOp;
 import java.awt.image.ShortLookupTable;
+import java.util.Collections;
+import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.ImageProcessor;
+import org.openstreetmap.josm.io.session.SessionAwareReadApply;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * An image processor which adjusts the gamma value of an image.
  * @since 10547
  */
-public class GammaImageProcessor implements ImageProcessor {
-    private double gamma = 1;
+public class GammaImageProcessor implements ImageProcessor, SessionAwareReadApply {
+    private double gamma = 1.0;
     final short[] gammaChange = new short[256];
     private final LookupOp op3 = new LookupOp(
             new ShortLookupTable(0, new short[][]{gammaChange, gammaChange, gammaChange}), null);
@@ -42,7 +46,7 @@ public class GammaImageProcessor implements ImageProcessor {
 
     @Override
     public BufferedImage process(BufferedImage image) {
-        if (gamma == 1) {
+        if (gamma == 1.0) {
             return image;
         }
         try {
@@ -53,7 +57,7 @@ public class GammaImageProcessor implements ImageProcessor {
                 return op4.filter(image, null);
             }
         } catch (IllegalArgumentException ignore) {
-            Main.trace(ignore);
+            Logging.trace(ignore);
         }
         final int type = image.getTransparency() == Transparency.OPAQUE ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
         final BufferedImage to = new BufferedImage(image.getWidth(), image.getHeight(), type);
@@ -62,6 +66,26 @@ public class GammaImageProcessor implements ImageProcessor {
     }
 
     @Override
+    public void applyFromPropertiesMap(Map<String, String> properties) {
+        String cStr = properties.get("gamma");
+        if (cStr != null) {
+            try {
+                setGamma(Double.parseDouble(cStr));
+            } catch (NumberFormatException e) {
+                Logging.trace(e);
+            }
+        }
+    }
+
+    @Override
+    public Map<String, String> toPropertiesMap() {
+        if (Utils.equalsEpsilon(gamma, 1.0))
+            return Collections.emptyMap();
+        else
+            return Collections.singletonMap("gamma", Double.toString(gamma));
+    }
+
+    @Override
     public String toString() {
         return "GammaImageProcessor [gamma=" + gamma + ']';
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java b/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java
index fa17478..3d5e3dc 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ReprojectionTile.java
@@ -10,8 +10,10 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.imagery.CoordinateConversion;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageWarp;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -95,16 +97,20 @@ public class ReprojectionTile extends Tile {
         this.maxZoomReached = false;
     }
 
+    private EastNorth tileToEastNorth(int x, int y, int z) {
+        return CoordinateConversion.projToEn(source.tileXYtoProjected(x, y, z));
+    }
+
     /**
      * Transforms the given image.
      * @param imageIn tile image to reproject
      */
     protected void transform(BufferedImage imageIn) {
-        if (!Main.isDisplayingMapView()) {
+        if (!MainApplication.isDisplayingMapView()) {
             reset();
             return;
         }
-        double scaleMapView = Main.map.mapView.getScale();
+        double scaleMapView = MainApplication.getMap().mapView.getScale();
         ImageWarp.Interpolation interpolation;
         switch (Main.pref.get("imagery.warp.pixel-interpolation", "bilinear")) {
             case "nearest_neighbor":
@@ -116,8 +122,8 @@ public class ReprojectionTile extends Tile {
 
         Projection projCurrent = Main.getProjection();
         Projection projServer = Projections.getProjectionByCode(source.getServerCRS());
-        EastNorth en00Server = new EastNorth(source.tileXYtoProjected(xtile, ytile, zoom));
-        EastNorth en11Server = new EastNorth(source.tileXYtoProjected(xtile + 1, ytile + 1, zoom));
+        EastNorth en00Server = tileToEastNorth(xtile, ytile, zoom);
+        EastNorth en11Server = tileToEastNorth(xtile + 1, ytile + 1, zoom);
         ProjectionBounds pbServer = new ProjectionBounds(en00Server);
         pbServer.extend(en11Server);
         // find east-north rectangle in current projection, that will fully contain the tile
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java
index 5d2dd7a..1a89f21 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java
@@ -4,8 +4,13 @@ package org.openstreetmap.josm.gui.layer.imagery;
 import java.awt.image.BufferedImage;
 import java.awt.image.ConvolveOp;
 import java.awt.image.Kernel;
+import java.util.Collections;
+import java.util.Map;
 
 import org.openstreetmap.josm.gui.layer.ImageProcessor;
+import org.openstreetmap.josm.io.session.SessionAwareReadApply;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Sharpens or blurs the image, depending on the sharpen value.
@@ -17,8 +22,8 @@ import org.openstreetmap.josm.gui.layer.ImageProcessor;
  * @author Michael Zangl
  * @since 10547
  */
-public class SharpenImageProcessor implements ImageProcessor {
-    private float sharpenLevel = 1;
+public class SharpenImageProcessor implements ImageProcessor, SessionAwareReadApply {
+    private float sharpenLevel = 1.0f;
     private ConvolveOp op;
 
     private static final float[] KERNEL_IDENTITY = new float[] {
@@ -88,6 +93,26 @@ public class SharpenImageProcessor implements ImageProcessor {
     }
 
     @Override
+    public void applyFromPropertiesMap(Map<String, String> properties) {
+        String vStr = properties.get("sharpenlevel");
+        if (vStr != null) {
+            try {
+                setSharpenLevel(Float.parseFloat(vStr));
+            } catch (NumberFormatException e) {
+                Logging.trace(e);
+            }
+        }
+    }
+
+    @Override
+    public Map<String, String> toPropertiesMap() {
+        if (Utils.equalsEpsilon(sharpenLevel, 1.0))
+            return Collections.emptyMap();
+        else
+            return Collections.singletonMap("sharpenlevel", Float.toString(sharpenLevel));
+    }
+
+    @Override
     public String toString() {
         return "SharpenImageProcessor [sharpenLevel=" + sharpenLevel + ']';
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java b/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java
index 63c9f62..b389fb2 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java
@@ -16,6 +16,7 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.CoordinateConversion;
 import org.openstreetmap.josm.data.projection.Projecting;
 import org.openstreetmap.josm.data.projection.ShiftedProjecting;
 import org.openstreetmap.josm.gui.MapView;
@@ -45,11 +46,11 @@ public class TileCoordinateConverter {
     }
 
     private MapViewPoint pos(ICoordinate ll) {
-        return mapView.getState().getPointFor(new LatLon(ll)).add(settings.getDisplacement());
+        return mapView.getState().getPointFor(CoordinateConversion.coorToLL(ll)).add(settings.getDisplacement());
     }
 
     private MapViewPoint pos(IProjected p) {
-        return mapView.getState().getPointFor(new EastNorth(p)).add(settings.getDisplacement());
+        return mapView.getState().getPointFor(CoordinateConversion.projToEn(p)).add(settings.getDisplacement());
     }
 
     /**
@@ -59,7 +60,7 @@ public class TileCoordinateConverter {
      * @return IProjected coordinate as it would e.g. be sent to a WMS server
      */
     public IProjected shiftDisplayToServer(EastNorth en) {
-        return en.subtract(settings.getDisplacement()).toProjected();
+        return CoordinateConversion.enToProj(en.subtract(settings.getDisplacement()));
     }
 
     /**
@@ -101,7 +102,7 @@ public class TileCoordinateConverter {
     public TileXY getTileforPixel(int sx, int sy, int zoom) {
         if (requiresReprojection()) {
             LatLon ll = getProjecting().eastNorth2latlonClamped(mapView.getEastNorth(sx, sy));
-            return tileSource.latLonToTileXY(ll.toCoordinate(), zoom);
+            return tileSource.latLonToTileXY(CoordinateConversion.llToCoor(ll), zoom);
         } else {
             IProjected p = shiftDisplayToServer(mapView.getEastNorth(sx, sy));
             return tileSource.projectedToTileXY(p, zoom);
@@ -164,13 +165,13 @@ public class TileCoordinateConverter {
         if (requiresReprojection()) {
             LatLon topLeft = mapView.getLatLon(0, 0);
             LatLon botRight = mapView.getLatLon(mapView.getWidth(), mapView.getHeight());
-            t1 = tileSource.latLonToTileXY(topLeft.toCoordinate(), zoom);
-            t2 = tileSource.latLonToTileXY(botRight.toCoordinate(), zoom);
+            t1 = tileSource.latLonToTileXY(CoordinateConversion.llToCoor(topLeft), zoom);
+            t2 = tileSource.latLonToTileXY(CoordinateConversion.llToCoor(botRight), zoom);
         } else {
             EastNorth topLeftEN = mapView.getEastNorth(0, 0);
             EastNorth botRightEN = mapView.getEastNorth(mapView.getWidth(), mapView.getHeight());
-            t1 = tileSource.projectedToTileXY(topLeftEN.toProjected(), zoom);
-            t2 = tileSource.projectedToTileXY(botRightEN.toProjected(), zoom);
+            t1 = tileSource.projectedToTileXY(CoordinateConversion.enToProj(topLeftEN), zoom);
+            t2 = tileSource.projectedToTileXY(CoordinateConversion.enToProj(botRightEN), zoom);
         }
         int screenPixels = mapView.getWidth()*mapView.getHeight();
         double tilePixels = Math.abs((t2.getY()-t1.getY())*(t2.getX()-t1.getX())*tileSource.getTileSize()*tileSource.getTileSize());
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
index be27608..774fedc 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.layer.imagery;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -10,6 +11,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
+import org.openstreetmap.josm.io.session.SessionAwareReadApply;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
@@ -21,7 +23,7 @@ import org.openstreetmap.josm.tools.bugreport.BugReport;
  * @author michael
  * @since 10568
  */
-public class TileSourceDisplaySettings {
+public class TileSourceDisplaySettings implements SessionAwareReadApply {
     /**
      * A string returned by {@link DisplaySettingsChangeEvent#getChangedSetting()} if auto load was changed.
      * @see TileSourceDisplaySettings#isAutoLoad()
@@ -248,24 +250,27 @@ public class TileSourceDisplaySettings {
     /**
      * Stores the current settings object to the given hashmap.
      * The offset data is not stored and needs to be handled separately.
-     * @param data The map to store the settings to.
-     * @see #loadFrom(Map)
+     * @see #applyFromPropertiesMap(Map)
      * @see OffsetBookmark#toPropertiesMap()
      */
-    public void storeTo(Map<String, String> data) {
+    @Override
+    public Map<String, String> toPropertiesMap() {
+        Map<String, String> data = new HashMap<>();
         data.put(AUTO_LOAD, Boolean.toString(autoLoad));
         data.put(AUTO_ZOOM, Boolean.toString(autoZoom));
         data.put(SHOW_ERRORS, Boolean.toString(showErrors));
+        return data;
     }
 
     /**
      * Load the settings from the given data instance.
      * The offset data is not loaded and needs to be handled separately.
      * @param data The data
-     * @see #storeTo(Map)
+     * @see #toPropertiesMap()
      * @see OffsetBookmark#fromPropertiesMap(java.util.Map)
      */
-    public void loadFrom(Map<String, String> data) {
+    @Override
+    public void applyFromPropertiesMap(Map<String, String> data) {
         try {
             String doAutoLoad = data.get(AUTO_LOAD);
             if (doAutoLoad != null) {
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToBestAction.java b/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToBestAction.java
index 3c56643..30c51af 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToBestAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToBestAction.java
@@ -24,7 +24,7 @@ public class ZoomToBestAction extends AbstractAction {
     public ZoomToBestAction(AbstractTileSourceLayer<?> layer) {
         super(tr("Change resolution"));
         this.layer = layer;
-        setEnabled(!layer.getDisplaySettings().isAutoZoom() && layer.getBestZoom() != layer.currentZoomLevel);
+        setEnabled(!layer.getDisplaySettings().isAutoZoom() && layer.getBestZoom() != layer.getZoomLevel());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java b/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java
index a7412e8..2a03f9e 100644
--- a/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ZoomToNativeLevelAction.java
@@ -7,7 +7,7 @@ import java.awt.event.ActionEvent;
 
 import javax.swing.AbstractAction;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 
 /**
@@ -29,8 +29,8 @@ public class ZoomToNativeLevelAction extends AbstractAction {
 
     @Override
     public void actionPerformed(ActionEvent ae) {
-        double newFactor = Math.sqrt(layer.getScaleFactor(layer.currentZoomLevel));
-        Main.map.mapView.zoomToFactor(newFactor);
+        double newFactor = Math.sqrt(layer.getScaleFactor(layer.getZoomLevel()));
+        MainApplication.getMap().mapView.zoomToFactor(newFactor);
         layer.invalidate();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
index 1d35dff..884bbfc 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
@@ -6,11 +6,11 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.io.audio.AudioUtil;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
@@ -55,7 +55,7 @@ public class AudioMarker extends ButtonMarker {
     public void play(double after) {
         try {
             // first enable tracing the audio along the track
-            Main.map.mapView.playHeadMarker.animate();
+            MainApplication.getMap().mapView.playHeadMarker.animate();
 
             AudioPlayer.play(audioUrl, offset + syncOffset + after);
             recentlyPlayedMarker = this;
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java
index 5455cee..1df2597 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java
@@ -12,6 +12,7 @@ import javax.swing.border.Border;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
 
@@ -37,7 +38,7 @@ public class ButtonMarker extends Marker {
     }
 
     @Override public boolean containsPoint(Point p) {
-        Point screen = Main.map.mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
         buttonRectangle.setLocation(screen.x+4, screen.y+2);
         return buttonRectangle.contains(p);
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/DefaultMarkerProducers.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/DefaultMarkerProducers.java
index 8c6cd62..2b2d53f 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/DefaultMarkerProducers.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/DefaultMarkerProducers.java
@@ -9,11 +9,11 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.Extensions;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -50,7 +50,7 @@ public final class DefaultMarkerProducers implements MarkerProducers {
                 try {
                     audioMarker.syncOffset = Double.parseDouble(exts.get("sync-offset"));
                 } catch (NumberFormatException nfe) {
-                    Main.warn(nfe);
+                    Logging.warn(nfe);
                 }
             }
             return Arrays.asList(marker, audioMarker);
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
index 0c78236..38d6f8a 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
@@ -22,18 +22,18 @@ import java.util.TimeZone;
 
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.coor.CachedLatLon;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.preferences.CachedProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
 import org.openstreetmap.josm.tools.template_engine.TemplateEntry;
@@ -144,8 +144,8 @@ public class Marker implements TemplateEngineDataProvider {
             try {
                 return new TemplateParser(s).parse();
             } catch (ParseError e) {
-                Main.debug(e);
-                Main.warn("Unable to parse template engine pattern ''{0}'' for property {1}. Using default (''{2}'') instead",
+                Logging.debug(e);
+                Logging.warn("Unable to parse template engine pattern ''{0}'' for property {1}. Using default (''{2}'') instead",
                         s, getKey(), super.getDefaultValueAsString());
                 return getDefaultValue();
             }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
index 3dda552..dd1ff07 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
@@ -38,6 +38,7 @@ import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
@@ -50,6 +51,7 @@ import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.gpx.ConvertToDataLayerAction;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -126,7 +128,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
                 try {
                     offset = Double.valueOf(exts.get("offset"));
                 } catch (NumberFormatException nfe) {
-                    Main.warn(nfe);
+                    Logging.warn(nfe);
                 }
             }
             if (offset == null) {
@@ -275,7 +277,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
                 }
             }
         } catch (URISyntaxException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return true;
     }
@@ -349,7 +351,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
                 }
             }
         }
-        Main.map.mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
     }
 
     @Override
@@ -368,7 +370,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
                 }
             }
         }
-        Main.map.mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
     }
 
     public static void playAudio() {
@@ -411,15 +413,15 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
     }
 
     private static void playAdjacentMarker(Marker startMarker, boolean next) {
-        if (!Main.isDisplayingMapView())
+        if (!MainApplication.isDisplayingMapView())
             return;
         Marker m = null;
-        Layer l = Main.getLayerManager().getActiveLayer();
+        Layer l = MainApplication.getLayerManager().getActiveLayer();
         if (l != null) {
             m = getAdjacentMarker(startMarker, next, l);
         }
         if (m == null) {
-            for (Layer layer : Main.getLayerManager().getLayers()) {
+            for (Layer layer : MainApplication.getLayerManager().getLayers()) {
                 m = getAdjacentMarker(startMarker, next, layer);
                 if (m != null) {
                     break;
@@ -563,7 +565,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
                         );
                 return;
             }
-            PlayHeadMarker playHeadMarker = Main.map.mapView.playHeadMarker;
+            PlayHeadMarker playHeadMarker = MainApplication.getMap().mapView.playHeadMarker;
             if (playHeadMarker == null)
                 return;
             addAudioMarker(playHeadMarker.time, playHeadMarker.getCoor());
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
index f020096..2421fc7 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
@@ -21,6 +21,8 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
 import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
@@ -62,16 +64,17 @@ public final class PlayHeadMarker extends Marker {
         enabled = Main.pref.getBoolean("marker.traceaudio", true);
         if (!enabled) return;
         dropTolerance = Main.pref.getInteger("marker.playHeadDropTolerance", 50);
-        if (Main.isDisplayingMapView()) {
-            Main.map.mapView.addMouseListener(new MouseAdapter() {
+        if (MainApplication.isDisplayingMapView()) {
+            MapFrame map = MainApplication.getMap();
+            map.mapView.addMouseListener(new MouseAdapter() {
                 @Override public void mousePressed(MouseEvent ev) {
                     if (ev.getButton() == MouseEvent.BUTTON1 && playHead.containsPoint(ev.getPoint())) {
                         /* when we get a click on the marker, we need to switch mode to avoid
                          * getting confused with other drag operations (like select) */
-                        oldMode = Main.map.mapMode;
+                        oldMode = map.mapMode;
                         oldCoor = getCoor();
                         PlayHeadDragMode playHeadDragMode = new PlayHeadDragMode(playHead);
-                        Main.map.selectMapMode(playHeadDragMode);
+                        map.selectMapMode(playHeadDragMode);
                         playHeadDragMode.mousePressed(ev);
                     }
                 }
@@ -81,7 +84,7 @@ public final class PlayHeadMarker extends Marker {
 
     @Override
     public boolean containsPoint(Point p) {
-        Point screen = Main.map.mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
         Rectangle r = new Rectangle(screen.x, screen.y, symbol.getIconWidth(),
                 symbol.getIconHeight());
         return r.contains(p);
@@ -120,9 +123,12 @@ public final class PlayHeadMarker extends Marker {
         if (reset) {
             setCoor(oldCoor);
         }
-        Main.map.selectMapMode(oldMode);
-        Main.map.mapView.repaint();
-        timer.start();
+        MapFrame map = MainApplication.getMap();
+        map.selectMapMode(oldMode);
+        map.mapView.repaint();
+        if (timer != null) {
+            timer.start();
+        }
     }
 
     /**
@@ -131,7 +137,7 @@ public final class PlayHeadMarker extends Marker {
      */
     public void drag(EastNorth en) {
         setEastNorth(en);
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
     /**
@@ -145,8 +151,9 @@ public final class PlayHeadMarker extends Marker {
         AudioMarker recent = AudioMarker.recentlyPlayedMarker();
         if (recent != null && recent.parentLayer != null && recent.parentLayer.fromLayer != null) {
             /* work out EastNorth equivalent of 50 (default) pixels tolerance */
-            Point p = Main.map.mapView.getPoint(en);
-            EastNorth enPlus25px = Main.map.mapView.getEastNorth(p.x+dropTolerance, p.y);
+            MapView mapView = MainApplication.getMap().mapView;
+            Point p = mapView.getPoint(en);
+            EastNorth enPlus25px = mapView.getEastNorth(p.x+dropTolerance, p.y);
             cw = recent.parentLayer.fromLayer.data.nearestPointOnTrack(en, enPlus25px.east() - en.east());
         }
 
@@ -199,7 +206,8 @@ public final class PlayHeadMarker extends Marker {
         if (recent == null)
             return;
         /* First, see if we dropped onto an existing audio marker in the layer being played */
-        Point startPoint = Main.map.mapView.getPoint(en);
+        MapView mapView = MainApplication.getMap().mapView;
+        Point startPoint = mapView.getPoint(en);
         AudioMarker ca = null;
         if (recent.parentLayer != null) {
             double closestAudioMarkerDistanceSquared = 1.0E100;
@@ -222,8 +230,8 @@ public final class PlayHeadMarker extends Marker {
         /* If we didn't hit an audio marker, we need to create one at the nearest point on the track */
         if (ca == null) {
             /* work out EastNorth equivalent of 50 (default) pixels tolerance */
-            Point p = Main.map.mapView.getPoint(en);
-            EastNorth enPlus25px = Main.map.mapView.getEastNorth(p.x+dropTolerance, p.y);
+            Point p = mapView.getPoint(en);
+            EastNorth enPlus25px = mapView.getEastNorth(p.x+dropTolerance, p.y);
             WayPoint cw = recent.parentLayer.fromLayer.data.nearestPointOnTrack(en, enPlus25px.east() - en.east());
             if (cw == null) {
                 JOptionPane.showMessageDialog(
@@ -342,10 +350,11 @@ public final class PlayHeadMarker extends Marker {
                     w1.getEastNorth().interpolate(w2.getEastNorth(),
                             (audioTime - w1.time)/(w2.time - w1.time)));
         time = audioTime;
+        MapView mapView = MainApplication.getMap().mapView;
         if (jumpToMarker) {
             jumpToMarker = false;
-            Main.map.mapView.zoomTo(w1.getEastNorth());
+            mapView.zoomTo(w1.getEastNorth());
         }
-        Main.map.mapView.repaint();
+        mapView.repaint();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
index c29369f..de348fc 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
@@ -10,13 +10,13 @@ import java.util.Collections;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 
 /**
@@ -66,7 +66,7 @@ public class WebMarker extends ButtonMarker {
             try {
                 setErroneous(path.isEmpty() || !new File(path).exists());
             } catch (SecurityException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 setErroneous(true);
             }
         } else {
diff --git a/src/org/openstreetmap/josm/gui/mappaint/Cascade.java b/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
index 3237e9e..61e1bbb 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
@@ -10,9 +10,9 @@ import java.util.Map.Entry;
 import java.util.TreeSet;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.mappaint.mapcss.CSSColors;
 import org.openstreetmap.josm.tools.ColorHelper;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -74,7 +74,7 @@ public final class Cascade {
         T res = convertTo(o, klass);
         if (res == null) {
             if (!suppressWarnings) {
-                Main.warn(String.format("Unable to convert property %s to type %s: found %s of type %s!", key, klass, o, o.getClass()));
+                Logging.warn(String.format("Unable to convert property %s to type %s: found %s of type %s!", key, klass, o, o.getClass()));
             }
             return def;
         } else
@@ -180,9 +180,7 @@ public final class Cascade {
             try {
                 return Float.valueOf((String) o);
             } catch (NumberFormatException e) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug('\'' + (String) o + "' cannot be converted to float");
-                }
+                Logging.debug("'{0}' cannot be converted to float", o);
             }
         }
         return null;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
index 53c0075..e7c2156 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
@@ -514,26 +514,32 @@ public class ElemStyles implements PreferenceChangedListener {
     }
 
     /**
-     * Determines whether primitive has <b>only</b> an AreaElement.
+     * Determines whether primitive has area-type {@link StyleElement}s, but
+     * no line-type StyleElements.
+     * 
+     * {@link TextElement} is ignored, as it can be both line and area-type.
      * @param p the OSM primitive
-     * @return {@code true} if primitive has only an AreaElement
-     * @since 7486
+     * @return {@code true} if primitive has area elements, but no line elements
+     * @since 12700
      */
-    public static boolean hasOnlyAreaOrTextStyleElements(OsmPrimitive p) {
+    public static boolean hasOnlyAreaElements(OsmPrimitive p) {
         MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
         try {
             if (MapPaintStyles.getStyles() == null)
                 return false;
             StyleElementList styles = MapPaintStyles.getStyles().generateStyles(p, 1.0, false).a;
-            if (styles.isEmpty()) {
-                return false;
-            }
+            boolean hasAreaElement = false;
             for (StyleElement s : styles) {
-                if (!(s instanceof AreaElement || s instanceof TextElement)) {
+                if (s instanceof TextElement) {
+                    continue;
+                }
+                if (s instanceof AreaElement) {
+                    hasAreaElement = true;
+                } else {
                     return false;
                 }
             }
-            return true;
+            return hasAreaElement;
         } finally {
             MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
         }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
index 9f64c14..f3208be 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
@@ -11,8 +11,8 @@ import java.util.Map;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenu;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.MapPaintDialog;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -65,11 +65,12 @@ public class MapPaintMenu extends JMenu implements MapPaintSylesUpdateListener {
 
         @Override
         public void updateEnabledState() {
-            setEnabled(Main.isDisplayingMapView() && (Main.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
+            setEnabled(MainApplication.isDisplayingMapView()
+                    && (MainApplication.getLayerManager().getEditLayer() != null || mapHasGpxorMarkerLayer()));
         }
 
         private static boolean mapHasGpxorMarkerLayer() {
-            for (Layer layer : Main.getLayerManager().getLayers()) {
+            for (Layer layer : MainApplication.getLayerManager().getLayers()) {
                 if (layer instanceof GpxLayer || layer instanceof MarkerLayer) {
                     return true;
                 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
index 0384882..89ee08c 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
@@ -1,8 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.mappaint;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -21,19 +19,16 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Tag;
-import org.openstreetmap.josm.gui.PleaseWaitRunnable;
-import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.data.preferences.sources.MapPaintPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.MapImage;
 import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference.MapPaintPrefHelper;
-import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -156,7 +151,7 @@ public final class MapPaintStyles {
         if (test && i.get() == null) {
             String msg = "Mappaint style \""+namespace+"\" ("+ref.source.getDisplayString()+") icon \"" + ref.iconName + "\" not found.";
             ref.source.logWarning(msg);
-            Main.warn(msg);
+            Logging.warn(msg);
             return null;
         }
         return i;
@@ -175,7 +170,7 @@ public final class MapPaintStyles {
         final String namespace = ref.source.getPrefName();
         ImageIcon i = getIconProvider(ref, false).setSize(width, height).get();
         if (i == null) {
-            Main.warn("Mappaint style \""+namespace+"\" ("+ref.source.getDisplayString()+") icon \"" + ref.iconName + "\" not found.");
+            Logging.warn("Mappaint style \""+namespace+"\" ("+ref.source.getDisplayString()+") icon \"" + ref.iconName + "\" not found.");
             return null;
         }
         return i;
@@ -307,16 +302,16 @@ public final class MapPaintStyles {
             try {
                 Main.fileWatcher.registerStyleSource(source);
             } catch (IOException | IllegalStateException | IllegalArgumentException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
-        if (Main.isDebugEnabled() || !source.isValid()) {
+        if (Logging.isDebugEnabled() || !source.isValid()) {
             final long elapsedTime = System.currentTimeMillis() - startTime;
             String message = "Initializing map style " + source.url + " completed in " + Utils.getDurationString(elapsedTime);
             if (!source.isValid()) {
-                Main.warn(message + " (" + source.getErrors().size() + " errors, " + source.getWarnings().size() + " warnings)");
+                Logging.warn(message + " (" + source.getErrors().size() + " errors, " + source.getWarnings().size() + " warnings)");
             } else {
-                Main.debug(message);
+                Logging.debug(message);
             }
         }
     }
@@ -337,61 +332,6 @@ public final class MapPaintStyles {
     }
 
     /**
-     * reload styles
-     * preferences are the same, but the file source may have changed
-     * @param sel the indices of styles to reload
-     */
-    public static void reloadStyles(final int... sel) {
-        List<StyleSource> toReload = new ArrayList<>();
-        List<StyleSource> data = styles.getStyleSources();
-        for (int i : sel) {
-            toReload.add(data.get(i));
-        }
-        Main.worker.submit(new MapPaintStyleLoader(toReload));
-    }
-
-    /**
-     * This class loads the map paint styles
-     */
-    public static class MapPaintStyleLoader extends PleaseWaitRunnable {
-        private boolean canceled;
-        private final Collection<StyleSource> sources;
-
-        /**
-         * Create a new {@link MapPaintStyleLoader}
-         * @param sources The styles to load
-         */
-        public MapPaintStyleLoader(Collection<StyleSource> sources) {
-            super(tr("Reloading style sources"));
-            this.sources = sources;
-        }
-
-        @Override
-        protected void cancel() {
-            canceled = true;
-        }
-
-        @Override
-        protected void finish() {
-            fireMapPaintSylesUpdated();
-            afterStyleUpdate();
-        }
-
-        @Override
-        protected void realRun() {
-            ProgressMonitor monitor = getProgressMonitor();
-            monitor.setTicksCount(sources.size());
-            for (StyleSource s : sources) {
-                if (canceled)
-                    return;
-                monitor.subTask(tr("loading style ''{0}''...", s.getDisplayString()));
-                s.loadStyleSource();
-                monitor.worked(1);
-            }
-        }
-    }
-
-    /**
      * Move position of entries in the current list of StyleSources
      * @param sel The indices of styles to be moved.
      * @param delta The number of lines it should move. positive int moves
@@ -412,22 +352,6 @@ public final class MapPaintStyles {
         styles.setStyleSources(data);
         MapPaintPrefHelper.INSTANCE.put(data);
         fireMapPaintSylesUpdated();
-        afterStyleUpdate();
-    }
-
-    /**
-     * Manually trigger for now. TODO: Move this to a listener
-     */
-    private static void afterStyleUpdate() {
-        SwingUtilities.invokeLater(() -> {
-            styles.clearCached();
-
-            // Trigger a repaint of all data layers
-            Main.getLayerManager().getLayers()
-                .stream()
-                .filter(layer -> layer instanceof OsmDataLayer)
-                .forEach(Layer::invalidate);
-        });
     }
 
     /**
@@ -466,7 +390,6 @@ public final class MapPaintStyles {
         } else {
             fireMapPaintSylesUpdated();
         }
-        afterStyleUpdate();
     }
 
     /**
@@ -497,7 +420,6 @@ public final class MapPaintStyles {
     private static void refreshStyles() {
         MapPaintPrefHelper.INSTANCE.put(styles.getStyleSources());
         fireMapPaintSylesUpdated();
-        afterStyleUpdate();
     }
 
     /***********************************
@@ -519,6 +441,20 @@ public final class MapPaintStyles {
 
     private static final ListenerList<MapPaintSylesUpdateListener> listeners = ListenerList.createUnchecked();
 
+    static {
+        listeners.addListener(new MapPaintSylesUpdateListener() {
+            @Override
+            public void mapPaintStylesUpdated() {
+                SwingUtilities.invokeLater(styles::clearCached);
+            }
+
+            @Override
+            public void mapPaintStyleEntryUpdated(int index) {
+                mapPaintStylesUpdated();
+            }
+        });
+    }
+
     /**
      * Add a listener that listens to global style changes.
      * @param listener The listener
diff --git a/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java b/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java
index 3943b0b..c469993 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java
@@ -10,6 +10,9 @@ import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenu;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Setting to customize a MapPaint style.
@@ -68,7 +71,7 @@ public interface StyleSetting {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     setValue(item.isSelected());
-                    Main.worker.submit(new MapPaintStyles.MapPaintStyleLoader(Arrays.asList(parentStyle)));
+                    MainApplication.worker.submit(new MapPaintStyleLoader(Arrays.asList(parentStyle)));
                 }
             };
             item.setAction(a);
@@ -79,12 +82,12 @@ public interface StyleSetting {
         public static BooleanStyleSetting create(Cascade c, StyleSource parentStyle, String key) {
             String label = c.get("label", null, String.class);
             if (label == null) {
-                Main.warn("property 'label' required for boolean style setting");
+                Logging.warn("property 'label' required for boolean style setting");
                 return null;
             }
             Boolean def = c.get("default", null, Boolean.class);
             if (def == null) {
-                Main.warn("property 'default' required for boolean style setting");
+                Logging.warn("property 'default' required for boolean style setting");
                 return null;
             }
             String prefKey = parentStyle.url + ":boolean:" + key;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java b/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java
index 03a4970..7bd08e2 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java
@@ -20,8 +20,8 @@ import java.util.concurrent.CopyOnWriteArraySet;
 import javax.swing.ImageIcon;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/loader/MapPaintStyleLoader.java b/src/org/openstreetmap/josm/gui/mappaint/loader/MapPaintStyleLoader.java
new file mode 100644
index 0000000..2c3bd70
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/loader/MapPaintStyleLoader.java
@@ -0,0 +1,69 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.loader;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.StyleSource;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+
+/**
+ * This class loads the map paint styles
+ * @since 12651 (extracted from {@link MapPaintStyles}).
+ */
+public class MapPaintStyleLoader extends PleaseWaitRunnable {
+    private boolean canceled;
+    private final Collection<StyleSource> sources;
+
+    /**
+     * Create a new {@link MapPaintStyleLoader}
+     * @param sources The styles to load
+     */
+    public MapPaintStyleLoader(Collection<StyleSource> sources) {
+        super(tr("Reloading style sources"));
+        this.sources = sources;
+    }
+
+    @Override
+    protected void cancel() {
+        canceled = true;
+    }
+
+    @Override
+    protected void finish() {
+        MapPaintStyles.fireMapPaintSylesUpdated();
+    }
+
+    @Override
+    protected void realRun() {
+        ProgressMonitor monitor = getProgressMonitor();
+        monitor.setTicksCount(sources.size());
+        for (StyleSource s : sources) {
+            if (canceled)
+                return;
+            monitor.subTask(tr("loading style ''{0}''...", s.getDisplayString()));
+            s.loadStyleSource();
+            monitor.worked(1);
+        }
+    }
+
+    /**
+     * Reload styles
+     * preferences are the same, but the file source may have changed
+     * @param sel the indices of styles to reload
+     */
+    public static void reloadStyles(final int... sel) {
+        List<StyleSource> toReload = new ArrayList<>();
+        List<StyleSource> data = MapPaintStyles.getStyles().getStyleSources();
+        for (int i : sel) {
+            toReload.add(data.get(i));
+        }
+        MainApplication.worker.submit(new MapPaintStyleLoader(toReload));
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/mappaint/loader/package-info.java b/src/org/openstreetmap/josm/gui/mappaint/loader/package-info.java
new file mode 100644
index 0000000..73925b9
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/loader/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the GUI classes allowing map paint styles to be (re)loaded.
+ */
+package org.openstreetmap.josm.gui.mappaint.loader;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
index ab8091b..55b257b 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.java
@@ -14,13 +14,13 @@ import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.InDataSourceArea;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.InDataSourceArea;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
 import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
index f2c9f28..42fb516 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
@@ -23,14 +23,13 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.zip.CRC32;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
@@ -40,6 +39,7 @@ import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Territories;
@@ -265,7 +265,7 @@ public final class ExpressionFactory {
             try {
                 return new Color(r, g, b);
             } catch (IllegalArgumentException e) {
-                Main.trace(e);
+                Logging.trace(e);
                 return null;
             }
         }
@@ -284,7 +284,7 @@ public final class ExpressionFactory {
             try {
                 return new Color(r, g, b, alpha);
             } catch (IllegalArgumentException e) {
-                Main.trace(e);
+                Logging.trace(e);
                 return null;
             }
         }
@@ -300,7 +300,7 @@ public final class ExpressionFactory {
             try {
                 return Color.getHSBColor(h, s, b);
             } catch (IllegalArgumentException e) {
-                Main.trace(e);
+                Logging.trace(e);
                 return null;
             }
         }
@@ -635,7 +635,7 @@ public final class ExpressionFactory {
             try {
                 return RotationAngle.parseCardinalRotation(cardinal);
             } catch (IllegalArgumentException ignore) {
-                Main.trace(ignore);
+                Logging.trace(ignore);
                 return null;
             }
         }
@@ -675,8 +675,8 @@ public final class ExpressionFactory {
             Match m;
             try {
                 m = SearchCompiler.compile(searchStr);
-            } catch (ParseError ex) {
-                Main.trace(ex);
+            } catch (SearchParseError ex) {
+                Logging.trace(ex);
                 return null;
             }
             return m.match(env.osm);
@@ -875,7 +875,7 @@ public final class ExpressionFactory {
             try {
                 return Utils.decodeUrl(s);
             } catch (IllegalStateException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 return s;
             }
         }
@@ -1309,7 +1309,7 @@ public final class ExpressionFactory {
             } catch (IllegalAccessException | IllegalArgumentException ex) {
                 throw new JosmRuntimeException(ex);
             } catch (InvocationTargetException ex) {
-                Main.error(ex);
+                Logging.error(ex);
                 return null;
             }
             return result;
@@ -1380,7 +1380,7 @@ public final class ExpressionFactory {
             } catch (IllegalAccessException | IllegalArgumentException ex) {
                 throw new JosmRuntimeException(ex);
             } catch (InvocationTargetException ex) {
-                Main.error(ex);
+                Logging.error(ex);
                 return null;
             }
             return result;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
index a2349b4..4fa3393 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
@@ -17,7 +17,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.mappaint.Keyword;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition;
@@ -41,6 +40,7 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.LinkSelector;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Subpart;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -393,7 +393,7 @@ void pp_media(boolean ignore):
         if (sheet != null) {
             String msg = tr("Detected deprecated ''{0}'' in ''{1}'' which will be removed shortly. Use ''{2}'' instead.",
                             "@media", sheet.getDisplayString(), "@supports");
-            Main.error(msg);
+            Logging.error(msg);
             sheet.logWarning(msg);
         }
     }
@@ -625,7 +625,7 @@ void sheet(MapCSSStyleSource sheet):
         try {
             rule() w()
         } catch (MapCSSException mex) {
-            Main.error(mex);
+            Logging.error(mex);
             error_skipto(RBRACE, mex);
             w();
         } catch (ParseException ex) {
@@ -1206,8 +1206,8 @@ void error_skipto(int kind, MapCSSException me) {
         e = new ParseException(pe.getMessage()); // prevent memory leak
     }
     
-    Main.error("Skipping to the next rule, because of an error:");
-    Main.error(e);
+    Logging.error("Skipping to the next rule, because of an error:");
+    Logging.error(e);
     if (sheet != null) {
         sheet.logError(e);
     }
@@ -1231,7 +1231,7 @@ String readRaw() {
         if ((t.kind == S || t.kind == STRING || t.kind == UNEXPECTED_CHAR) &&
                 t.image.contains("\n")) {
             ParseException e = new ParseException(String.format("Warning: end of line while reading an unquoted string at line %s column %s.", t.beginLine, t.beginColumn));
-            Main.error(e);
+            Logging.error(e);
             if (sheet != null) {
                 sheet.logError(e);
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
index f97dcc2..e694b66 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
@@ -28,10 +28,10 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.data.osm.AbstractPrimitive;
 import org.openstreetmap.josm.data.osm.AbstractPrimitive.KeyValueVisitor;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -56,11 +56,11 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.TokenMgrError;
 import org.openstreetmap.josm.gui.mappaint.styleelement.LineElement;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -436,16 +436,16 @@ public class MapCSSStyleSource extends StyleSource {
                     closeSourceInputStream(in);
                 }
             } catch (IOException e) {
-                Main.warn(tr("Failed to load Mappaint styles from ''{0}''. Exception was: {1}", url, e.toString()));
-                Main.error(e);
+                Logging.warn(tr("Failed to load Mappaint styles from ''{0}''. Exception was: {1}", url, e.toString()));
+                Logging.error(e);
                 logError(e);
             } catch (TokenMgrError e) {
-                Main.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
-                Main.error(e);
+                Logging.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
+                Logging.error(e);
                 logError(e);
             } catch (ParseException e) {
-                Main.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
-                Main.error(e);
+                Logging.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
+                Logging.error(e);
                 logError(new ParseException(e.getMessage())); // allow e to be garbage collected, it links to the entire token stream
             }
             // optimization: filter rules for different primitive types
@@ -488,8 +488,8 @@ public class MapCSSStyleSource extends StyleSource {
                         break;
                     default:
                         final RuntimeException e = new JosmRuntimeException(MessageFormat.format("Unknown MapCSS base selector {0}", base));
-                        Main.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
-                        Main.error(e);
+                        Logging.warn(tr("Failed to parse Mappaint styles from ''{0}''. Error was: {1}", url, e.getMessage()));
+                        Logging.error(e);
                         logError(e);
                 }
             }
@@ -582,7 +582,7 @@ public class MapCSSStyleSource extends StyleSource {
         }
         for (Entry<String, Cascade> e : mc.getLayers()) {
             if ("default".equals(e.getKey())) {
-                Main.warn("setting requires layer identifier e.g. 'setting::my_setting {...}'");
+                Logging.warn("setting requires layer identifier e.g. 'setting::my_setting {...}'");
                 continue;
             }
             Cascade c = e.getValue();
@@ -591,7 +591,7 @@ public class MapCSSStyleSource extends StyleSource {
             if ("boolean".equals(type)) {
                 set = BooleanStyleSetting.create(c, this, e.getKey());
             } else {
-                Main.warn("Unkown setting type: "+type);
+                Logging.warn("Unkown setting type: "+type);
             }
             if (set != null) {
                 settings.add(set);
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
index ad926d1..9b3c7a3 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
@@ -12,7 +12,6 @@ import java.util.function.IntFunction;
 import java.util.function.IntSupplier;
 import java.util.regex.PatternSyntaxException;
 
-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.OsmPrimitiveType;
@@ -26,6 +25,7 @@ import org.openstreetmap.josm.gui.mappaint.Range;
 import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.OpenEndPseudoClassCondition;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Geometry;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
@@ -335,7 +335,7 @@ public interface Selector {
                         }
                     };
                 } catch (NoSuchElementException ignore) {
-                    Main.trace(ignore);
+                    Logging.trace(ignore);
                     containsFinder = new ContainsFinder(e);
                 }
                 e.parent = e.osm;
@@ -472,7 +472,7 @@ public interface Selector {
                 try {
                     if (!c.applies(env)) return false;
                 } catch (PatternSyntaxException e) {
-                    Main.error(e, "PatternSyntaxException while applying condition" + c + ':');
+                    Logging.log(Logging.LEVEL_ERROR, "PatternSyntaxException while applying condition" + c + ':', e);
                     return false;
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
index 71810f5..c4b9984 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
@@ -7,7 +7,6 @@ import java.util.Arrays;
 import java.util.Objects;
 import java.util.Optional;
 
-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.Way;
@@ -19,6 +18,7 @@ import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.Keyword;
 import org.openstreetmap.josm.gui.mappaint.MultiCascade;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Instruction.RelativeFloat;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -455,7 +455,7 @@ public class LineElement extends StyleElement {
                 try {
                     realWidth = Float.parseFloat(widthTag);
                 } catch (NumberFormatException nfe) {
-                    Main.warn(nfe);
+                    Logging.warn(nfe);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
index 3c1e49f..ca85b38 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
@@ -11,7 +11,8 @@ import java.util.Objects;
 
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.StyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.BoxProvider;
@@ -148,8 +149,9 @@ public class MapImage {
                         }
                         if (temporary) {
                             disabledImgCache = null;
-                            Main.map.mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
-                            Main.map.mapView.repaint();
+                            MapView mapView = MainApplication.getMap().mapView;
+                            mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
+                            mapView.repaint();
                         }
                         temporary = false;
                     }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
index 88b5c63..1d98f12 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
@@ -26,6 +26,7 @@ import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.BoxProvid
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.SimpleBoxProvider;
 import org.openstreetmap.josm.gui.util.RotationAngle;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -129,7 +130,7 @@ public class NodeElement extends StyleElement {
                     try {
                         rotationAngle = RotationAngle.buildStaticRotation(rotationKW.val);
                     } catch (IllegalArgumentException ignore) {
-                        Main.trace(ignore);
+                        Logging.trace(ignore);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java b/src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java
index 450b6e7..25cd87d 100644
--- a/src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java
+++ b/src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java
@@ -11,8 +11,8 @@ import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
diff --git a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java
index be00e56..9f0e637 100644
--- a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java
+++ b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java
@@ -1,6 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.oauth;
 
+/**
+ * The type of procedure to use for retrieving OAuth credentials.
+ */
 public enum AuthorizationProcedure {
     /**
      * Run a fully automatic procedure to get an access token from the OSM website.
diff --git a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
index 2f3b55b..0a9b3a6 100644
--- a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
+++ b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
@@ -12,6 +12,9 @@ import javax.swing.UIManager;
 
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 
+/**
+ * Combo box that lets the user choose one of the avaliable {@link AuthorizationProcedure}s.
+ */
 public class AuthorizationProcedureComboBox extends JosmComboBox<AuthorizationProcedure> {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
index f4c5462..6dc4366 100644
--- a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
@@ -28,7 +28,6 @@ import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
 import javax.swing.text.html.HTMLEditorKit;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -49,6 +48,7 @@ import org.openstreetmap.josm.io.auth.CredentialsAgent;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -184,7 +184,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
                 tfPassword.setText(pa.getPassword() == null ? "" : String.valueOf(pa.getPassword()));
             }
         } catch (CredentialsAgentException e) {
-            Main.error(e);
+            Logging.error(e);
             tfUserName.setText("");
             tfPassword.setText("");
         }
@@ -471,7 +471,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
                     alertAuthorisationFailed();
                 }
             };
-            Main.error(e);
+            Logging.error(e);
             GuiHelper.runInEDT(r);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
index 64f4114..094242c 100644
--- a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
+++ b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
@@ -16,6 +16,12 @@ import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 
+/**
+ * Panel to enter username and password for the "fully automatic" authorization
+ * procedure.
+ * 
+ * @see AuthorizationProcedure#FULLY_AUTOMATIC
+ */
 public class FullyAutomaticPropertiesPanel extends JPanel {
 
     private final JosmTextField tfUserName = new JosmTextField();
diff --git a/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
index 3b01bc0..fd7bbcd 100644
--- a/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
@@ -24,8 +24,8 @@ import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
 
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.widgets.DefaultTextComponentValidator;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
diff --git a/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java b/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
index 4c17fd4..2fae6d2 100644
--- a/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
+++ b/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
@@ -35,14 +35,14 @@ import javax.swing.event.HyperlinkListener;
 import javax.swing.text.html.HTMLEditorKit;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.CustomConfigurator;
 import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -50,7 +50,6 @@ import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.UserCancelException;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * This wizard walks the user to the necessary steps to retrieve an OAuth Access Token which
@@ -305,7 +304,7 @@ public class OAuthAuthorizationWizard extends JDialog {
      */
     public void initFromPreferences() {
         // Copy current JOSM preferences to update API url with the one used in this wizard
-        Preferences copyPref = CustomConfigurator.clonePreferences(Main.pref);
+        Preferences copyPref = new Preferences(Main.pref);
         copyPref.put("osm-server.url", apiUrl);
         pnlFullyAutomaticAuthorisationUI.initFromPreferences(copyPref);
         pnlSemiAutomaticAuthorisationUI.initFromPreferences(copyPref);
diff --git a/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java b/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
index 236b896..e87887c 100644
--- a/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
+++ b/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
@@ -19,7 +19,6 @@ import java.util.Map.Entry;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.data.oauth.OsmPrivileges;
@@ -28,6 +27,7 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 import oauth.signpost.OAuth;
@@ -179,10 +179,10 @@ public class OsmOAuthAuthorizationClient {
                 }
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             return null;
         }
-        Main.warn("No authenticity_token found in response!");
+        Logging.warn("No authenticity_token found in response!");
         return null;
     }
 
@@ -192,7 +192,7 @@ public class OsmOAuthAuthorizationClient {
                 .get(connection.getURL().toURI(), Collections.<String, List<String>>emptyMap())
                 .get("Cookie");
         if (setCookies == null) {
-            Main.warn("No 'Set-Cookie' in response header!");
+            Logging.warn("No 'Set-Cookie' in response header!");
             return null;
         }
 
@@ -219,7 +219,7 @@ public class OsmOAuthAuthorizationClient {
                 }
             }
         }
-        Main.warn("No suitable 'Set-Cookie' in response header found! {0}", setCookies);
+        Logging.warn("No suitable 'Set-Cookie' in response header found! {0}", setCookies);
         return null;
     }
 
@@ -328,7 +328,7 @@ public class OsmOAuthAuthorizationClient {
                 throw new OsmOAuthAuthorizationException(tr("Failed to authenticate user ''{0}'' with password ''***'' as OAuth user",
                         userName));
         } catch (OsmOAuthAuthorizationException e) {
-            Main.debug(e);
+            Logging.debug(e);
             throw new OsmLoginFailedException(e.getCause());
         } catch (IOException e) {
             throw new OsmLoginFailedException(e);
diff --git a/src/org/openstreetmap/josm/gui/oauth/OsmPrivilegesPanel.java b/src/org/openstreetmap/josm/gui/oauth/OsmPrivilegesPanel.java
index 0e3f79a..75fed5b 100644
--- a/src/org/openstreetmap/josm/gui/oauth/OsmPrivilegesPanel.java
+++ b/src/org/openstreetmap/josm/gui/oauth/OsmPrivilegesPanel.java
@@ -14,6 +14,10 @@ import javax.swing.JPanel;
 import org.openstreetmap.josm.data.oauth.OsmPrivileges;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 
+/**
+ * Panel letting the user choose from a detailed list of privileges that will be 
+ * requested for the OAuth token.
+ */
 public class OsmPrivilegesPanel extends VerticallyScrollablePanel {
 
     private final JCheckBox cbWriteApi = new JCheckBox();
diff --git a/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java b/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
index 7bdb949..1ce2c51 100644
--- a/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
+++ b/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
@@ -8,7 +8,6 @@ import java.io.IOException;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -18,6 +17,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -86,10 +86,10 @@ public class RetrieveAccessTokenTask extends PleaseWaitRunnable {
             }
             accessToken = client.getAccessToken(getProgressMonitor().createSubTaskMonitor(0, false));
         } catch (OsmTransferCanceledException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return;
         } catch (final OsmOAuthAuthorizationException e) {
-            Main.error(e);
+            Logging.error(e);
             GuiHelper.runInEDT(this::alertRetrievingAccessTokenFailed);
             accessToken = null;
         } finally {
diff --git a/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java b/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
index 04ae537..91966f5 100644
--- a/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
+++ b/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
@@ -8,7 +8,6 @@ import java.io.IOException;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -18,6 +17,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -80,10 +80,10 @@ public class RetrieveRequestTokenTask extends PleaseWaitRunnable {
             }
             requestToken = client.getRequestToken(getProgressMonitor().createSubTaskMonitor(0, false));
         } catch (OsmTransferCanceledException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return;
         } catch (final OsmOAuthAuthorizationException e) {
-            Main.error(e);
+            Logging.error(e);
             GuiHelper.runInEDT(this::alertRetrievingRequestTokenFailed);
             requestToken = null;
         } finally {
diff --git a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
index d7b3871..bcd6ea9 100644
--- a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
@@ -21,8 +21,8 @@ import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
diff --git a/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java b/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java
index 09acd49..bf25a2e 100644
--- a/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java
+++ b/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java
@@ -11,7 +11,6 @@ import java.net.URL;
 import javax.swing.JOptionPane;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.data.osm.UserInfo;
@@ -24,6 +23,7 @@ import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.io.auth.DefaultAuthenticator;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlParsingException;
 import org.w3c.dom.Document;
@@ -252,11 +252,11 @@ public class TestAccessTokenTask extends PleaseWaitRunnable {
             notifySuccess(userInfo);
         } catch (OsmOAuthAuthorizationException e) {
             if (canceled) return;
-            Main.error(e);
+            Logging.error(e);
             alertFailedSigning();
         } catch (OsmApiException e) {
             if (canceled) return;
-            Main.error(e);
+            Logging.error(e);
             if (e.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR) {
                 alertInternalError();
                 return;
@@ -270,7 +270,7 @@ public class TestAccessTokenTask extends PleaseWaitRunnable {
             alertFailedConnection();
         } catch (OsmTransferException e) {
             if (canceled) return;
-            Main.error(e);
+            Logging.error(e);
             alertFailedConnection();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java b/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
index 1522b1f..be8298f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
+++ b/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
@@ -9,8 +9,8 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Abstract base class for {@link TabPreferenceSetting} implementations.
@@ -104,7 +104,7 @@ public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetti
                     return true;
                 } catch (IllegalArgumentException e) {
                     // Ignore exception and return false below
-                    Main.debug(Main.getErrorMessage(e));
+                    Logging.debug(Logging.getErrorMessage(e));
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
index bc7a4ca..085c3ab 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
@@ -26,10 +26,10 @@ import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
  * The main preferences dialog.
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
index 2aef40c..9755e0b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
@@ -34,6 +34,7 @@ import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListene
 import org.openstreetmap.josm.actions.RestartAction;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference;
 import org.openstreetmap.josm.gui.preferences.audio.AudioPreference;
 import org.openstreetmap.josm.gui.preferences.display.ColorPreference;
@@ -63,6 +64,7 @@ import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -124,7 +126,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                         options[0],
                         null /* no special help */
                         )) {
-                    Main.main.menu.restart.actionPerformed(null);
+                    MainApplication.getMenu().restart.actionPerformed(null);
                 }
             } else if (task != null && !task.isCanceled()) {
                 JOptionPane.showMessageDialog(
@@ -416,8 +418,8 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
             if (task != null) {
                 // if we have to launch a plugin download task we do it asynchronously, followed
                 // by the remaining "save preferences" activites run on the Swing EDT.
-                Main.worker.submit(task);
-                Main.worker.submit(() -> SwingUtilities.invokeLater(continuation));
+                MainApplication.worker.submit(task);
+                MainApplication.worker.submit(() -> SwingUtilities.invokeLater(continuation));
             } else {
                 // no need for asynchronous activities. Simply run the remaining "save preference"
                 // activities on this thread (we are already on the Swing EDT
@@ -498,7 +500,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                     }
                 }
             } else if (!(setting instanceof SubPreferenceSetting)) {
-                Main.warn("Ignoring preferences "+setting);
+                Logging.warn("Ignoring preferences "+setting);
             }
         }
         try {
@@ -506,7 +508,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                 setSelectedComponent(sel);
             }
         } catch (IllegalArgumentException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
@@ -545,7 +547,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
         SETTINGS_FACTORIES.add(new TaggingPresetPreference.Factory());
         SETTINGS_FACTORIES.add(new BackupPreference.Factory());
         SETTINGS_FACTORIES.add(new PluginPreference.Factory());
-        SETTINGS_FACTORIES.add(Main.toolbar);
+        SETTINGS_FACTORIES.add(MainApplication.getToolbar());
         SETTINGS_FACTORIES.add(new AudioPreference.Factory());
         SETTINGS_FACTORIES.add(new ShortcutPreference.Factory());
         SETTINGS_FACTORIES.add(new ValidatorPreference.Factory());
@@ -599,7 +601,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
                         setSelectedIndex(index);
                     }
                 } catch (SecurityException ex) {
-                    Main.error(ex);
+                    Logging.error(ex);
                 } catch (RuntimeException ex) { // NOPMD
                     // allow to change most settings even if e.g. a plugin fails
                     BugReportExceptionHandler.handleException(ex);
@@ -616,7 +618,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
             try {
                 sps.addGui(this);
             } catch (SecurityException ex) {
-                Main.error(ex);
+                Logging.error(ex);
             } catch (RuntimeException ex) { // NOPMD
                 BugReportExceptionHandler.handleException(ex);
             } finally {
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
index 099f925..43eec34 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
@@ -29,11 +29,9 @@ import java.util.Collections;
 import java.util.EventObject;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -76,8 +74,14 @@ import javax.swing.table.TableModel;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourcePrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.SourceType;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.util.FileFilterAllFiles;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -93,6 +97,7 @@ import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -531,7 +536,7 @@ public abstract class SourceEditor extends JPanel {
      * @param sourceProviders the list of source providers
      */
     protected void reloadAvailableSources(String url, List<SourceProvider> sourceProviders) {
-        Main.worker.submit(new SourceLoader(url, sourceProviders));
+        MainApplication.worker.submit(new SourceLoader(url, sourceProviders));
     }
 
     /**
@@ -787,91 +792,6 @@ public abstract class SourceEditor extends JPanel {
         }
     }
 
-    /**
-     * Source entry with additional metadata.
-     */
-    public static class ExtendedSourceEntry extends SourceEntry implements Comparable<ExtendedSourceEntry> {
-        /** file name used for display */
-        public String simpleFileName;
-        /** version used for display */
-        public String version;
-        /** author name used for display */
-        public String author;
-        /** webpage link used for display */
-        public String link;
-        /** short description used for display */
-        public String description;
-        /** Style type: can only have one value: "xml". Used to filter out old XML styles. For MapCSS styles, the value is not set. */
-        public String styleType;
-        /** minimum JOSM version required to enable this source entry */
-        public Integer minJosmVersion;
-
-        /**
-         * Constructs a new {@code ExtendedSourceEntry}.
-         * @param simpleFileName file name used for display
-         * @param url URL that {@link org.openstreetmap.josm.io.CachedFile} understands
-         */
-        public ExtendedSourceEntry(String simpleFileName, String url) {
-            super(url, null, null, true);
-            this.simpleFileName = simpleFileName;
-        }
-
-        /**
-         * @return string representation for GUI list or menu entry
-         */
-        public String getDisplayName() {
-            return title == null ? simpleFileName : title;
-        }
-
-        private static void appendRow(StringBuilder s, String th, String td) {
-            s.append("<tr><th>").append(th).append("</th><td>").append(Utils.escapeReservedCharactersHTML(td)).append("</td</tr>");
-        }
-
-        /**
-         * Returns a tooltip containing available metadata.
-         * @return a tooltip containing available metadata
-         */
-        public String getTooltip() {
-            StringBuilder s = new StringBuilder();
-            appendRow(s, tr("Short Description:"), getDisplayName());
-            appendRow(s, tr("URL:"), url);
-            if (author != null) {
-                appendRow(s, tr("Author:"), author);
-            }
-            if (link != null) {
-                appendRow(s, tr("Webpage:"), link);
-            }
-            if (description != null) {
-                appendRow(s, tr("Description:"), description);
-            }
-            if (version != null) {
-                appendRow(s, tr("Version:"), version);
-            }
-            if (minJosmVersion != null) {
-                appendRow(s, tr("Minimum JOSM Version:"), Integer.toString(minJosmVersion));
-            }
-            return "<html><style>th{text-align:right}td{width:400px}</style>"
-                    + "<table>" + s + "</table></html>";
-        }
-
-        @Override
-        public String toString() {
-            return "<html><b>" + getDisplayName() + "</b>"
-                    + (author == null ? "" : " <span color=\"gray\">" + tr("by {0}", author) + "</color>")
-                    + "</html>";
-        }
-
-        @Override
-        public int compareTo(ExtendedSourceEntry o) {
-            if (url.startsWith("resource") && !o.url.startsWith("resource"))
-                return -1;
-            if (o.url.startsWith("resource"))
-                return 1;
-            else
-                return getDisplayName().compareToIgnoreCase(o.getDisplayName());
-        }
-    }
-
     private static void prepareFileChooser(String url, AbstractFileChooser fc) {
         if (url == null || url.trim().isEmpty()) return;
         URL sourceUrl = null;
@@ -992,7 +912,7 @@ public abstract class SourceEditor extends JPanel {
                     ff = new ExtensionFileFilter("validator.mapcss,zip", "validator.mapcss", tr("Tag checker rule (*.validator.mapcss, *.zip)"));
                     break;
                 default:
-                    Main.error("Unsupported source type: "+sourceType);
+                    Logging.error("Unsupported source type: "+sourceType);
                     return;
                 }
                 FileChooserManager fcm = new FileChooserManager(true)
@@ -1514,7 +1434,7 @@ public abstract class SourceEditor extends JPanel {
                 readFile();
                 for (Iterator<ExtendedSourceEntry> it = sources.iterator(); it.hasNext();) {
                     if ("xml".equals(it.next().styleType)) {
-                        Main.debug("Removing XML source entry");
+                        Logging.debug("Removing XML source entry");
                         it.remove();
                     }
                 }
@@ -1543,7 +1463,7 @@ public abstract class SourceEditor extends JPanel {
                     if (line.startsWith("\t")) {
                         Matcher m = Pattern.compile("^\t([^:]+): *(.+)$").matcher(line);
                         if (!m.matches()) {
-                            Main.error(tr(getStr(I18nString.ILLEGAL_FORMAT_OF_ENTRY), url, line));
+                            Logging.error(tr(getStr(I18nString.ILLEGAL_FORMAT_OF_ENTRY), url, line));
                             continue;
                         }
                         if (last != null) {
@@ -1578,7 +1498,7 @@ public abstract class SourceEditor extends JPanel {
                                     last.minJosmVersion = Integer.valueOf(value);
                                 } catch (NumberFormatException e) {
                                     // ignore
-                                    Main.trace(e);
+                                    Logging.trace(e);
                                 }
                             } else if ("style-type".equals(key)) {
                                 last.styleType = value;
@@ -1591,7 +1511,7 @@ public abstract class SourceEditor extends JPanel {
                             last = new ExtendedSourceEntry(m.group(1), m.group(2));
                             sources.add(last);
                         } else {
-                            Main.error(tr(getStr(I18nString.ILLEGAL_FORMAT_OF_ENTRY), url, line));
+                            Logging.error(tr(getStr(I18nString.ILLEGAL_FORMAT_OF_ENTRY), url, line));
                         }
                     }
                 }
@@ -1763,100 +1683,6 @@ public abstract class SourceEditor extends JPanel {
     }
 
     /**
-     * Helper class for specialized extensions preferences.
-     */
-    public abstract static class SourcePrefHelper {
-
-        private final String pref;
-
-        /**
-         * Constructs a new {@code SourcePrefHelper} for the given preference key.
-         * @param pref The preference key
-         */
-        public SourcePrefHelper(String pref) {
-            this.pref = pref;
-        }
-
-        /**
-         * Returns the default sources provided by JOSM core.
-         * @return the default sources provided by JOSM core
-         */
-        public abstract Collection<ExtendedSourceEntry> getDefault();
-
-        /**
-         * Serializes the given source entry as a map.
-         * @param entry source entry to serialize
-         * @return map (key=value)
-         */
-        public abstract Map<String, String> serialize(SourceEntry entry);
-
-        /**
-         * Deserializes the given map as a source entry.
-         * @param entryStr map (key=value)
-         * @return source entry
-         */
-        public abstract SourceEntry deserialize(Map<String, String> entryStr);
-
-        /**
-         * Returns the list of sources.
-         * @return The list of sources
-         */
-        public List<SourceEntry> get() {
-
-            Collection<Map<String, String>> src = Main.pref.getListOfStructs(pref, (Collection<Map<String, String>>) null);
-            if (src == null)
-                return new ArrayList<>(getDefault());
-
-            List<SourceEntry> entries = new ArrayList<>();
-            for (Map<String, String> sourcePref : src) {
-                SourceEntry e = deserialize(new HashMap<>(sourcePref));
-                if (e != null) {
-                    entries.add(e);
-                }
-            }
-            return entries;
-        }
-
-        /**
-         * Saves a list of sources to JOSM preferences.
-         * @param entries list of sources
-         * @return {@code true}, if something has changed (i.e. value is different than before)
-         */
-        public boolean put(Collection<? extends SourceEntry> entries) {
-            Collection<Map<String, String>> setting = serializeList(entries);
-            boolean unset = Main.pref.getListOfStructs(pref, (Collection<Map<String, String>>) null) == null;
-            if (unset) {
-                Collection<Map<String, String>> def = serializeList(getDefault());
-                if (setting.equals(def))
-                    return false;
-            }
-            return Main.pref.putListOfStructs(pref, setting);
-        }
-
-        private Collection<Map<String, String>> serializeList(Collection<? extends SourceEntry> entries) {
-            Collection<Map<String, String>> setting = new ArrayList<>(entries.size());
-            for (SourceEntry e : entries) {
-                setting.add(serialize(e));
-            }
-            return setting;
-        }
-
-        /**
-         * Returns the set of active source URLs.
-         * @return The set of active source URLs.
-         */
-        public final Set<String> getActiveUrls() {
-            Set<String> urls = new LinkedHashSet<>(); // retain order
-            for (SourceEntry e : get()) {
-                if (e.active) {
-                    urls.add(e.url);
-                }
-            }
-            return urls;
-        }
-    }
-
-    /**
      * Defers loading of sources to the first time the adequate tab is selected.
      * @param tab The preferences tab
      * @param component The tab component
diff --git a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
index 56190e8..9c521f6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
+++ b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
@@ -67,10 +67,12 @@ 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.MainApplication;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -500,7 +502,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                 // remove the button from toolbar preferences
                 t.remove(res);
                 Main.pref.putCollection("toolbar", t);
-                Main.toolbar.refreshToolbarControl();
+                MainApplication.getToolbar().refreshToolbarControl();
             }
         });
 
@@ -521,7 +523,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                 p.selectPreferencesTabByName("shortcuts");
                 p.setVisible(true);
                 // refresh toolbar to try using changed shortcuts without restart
-                Main.toolbar.refreshToolbarControl();
+                MainApplication.getToolbar().refreshToolbarControl();
             }
         });
 
@@ -661,7 +663,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                     movingComponent = "";
                     return true;
                 } catch (IOException | UnsupportedFlavorException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
                 return false;
             }
@@ -680,7 +682,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                             }
                         }
                     } catch (IOException | UnsupportedFlavorException e) {
-                        Main.error(e);
+                        Logging.error(e);
                     }
                     movingComponent = "";
                 }
@@ -985,7 +987,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                 t = Collections.singletonList(EMPTY_TOOLBAR_MARKER);
             }
             Main.pref.putCollection("toolbar", t);
-            Main.toolbar.refreshToolbarControl();
+            MainApplication.getToolbar().refreshToolbarControl();
             return false;
         }
 
@@ -1021,12 +1023,12 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                     userObject = action;
                     Object tb = action.getValue("toolbar");
                     if (tb == null) {
-                        Main.info(tr("Toolbar action without name: {0}",
+                        Logging.info(tr("Toolbar action without name: {0}",
                         action.getClass().getName()));
                         continue;
                     } else if (!(tb instanceof String)) {
                         if (!(tb instanceof Boolean) || (Boolean) tb) {
-                            Main.info(tr("Strange toolbar value: {0}",
+                            Logging.info(tr("Strange toolbar value: {0}",
                             action.getClass().getName()));
                         }
                         continue;
@@ -1034,7 +1036,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                         String toolbar = (String) tb;
                         Action r = actions.get(toolbar);
                         if (r != null && r != action && !toolbar.startsWith(IMAGERY_PREFIX)) {
-                            Main.info(tr("Toolbar action {0} overwritten: {1} gets {2}",
+                            Logging.info(tr("Toolbar action {0} overwritten: {1} gets {2}",
                             toolbar, r.getClass().getName(), action.getClass().getName()));
                         }
                         actions.put(toolbar, action);
@@ -1051,7 +1053,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
 
     private void loadActions() {
         rootActionsNode.removeAllChildren();
-        loadAction(rootActionsNode, Main.main.menu);
+        loadAction(rootActionsNode, MainApplication.getMenu());
         for (Map.Entry<String, Action> a : regactions.entrySet()) {
             if (actions.get(a.getKey()) == null) {
                 rootActionsNode.add(new DefaultMutableTreeNode(a.getValue()));
@@ -1095,7 +1097,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                 if (a != null) {
                     result.add(a);
                 } else {
-                    Main.info("Could not load tool definition "+s);
+                    Logging.info("Could not load tool definition "+s);
                 }
             }
         }
@@ -1111,12 +1113,12 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
     public Action register(Action action) {
         String toolbar = (String) action.getValue("toolbar");
         if (toolbar == null) {
-            Main.info(tr("Registered toolbar action without name: {0}",
+            Logging.info(tr("Registered toolbar action without name: {0}",
                 action.getClass().getName()));
         } else {
             Action r = regactions.get(toolbar);
             if (r != null) {
-                Main.info(tr("Registered toolbar action {0} overwritten: {1} gets {2}",
+                Logging.info(tr("Registered toolbar action {0} overwritten: {1} gets {2}",
                     toolbar, r.getClass().getName(), action.getClass().getName()));
             }
         }
@@ -1212,7 +1214,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
             }
         }
         Main.pref.putCollection("toolbar", t);
-        Main.toolbar.refreshToolbarControl();
+        MainApplication.getToolbar().refreshToolbarControl();
     }
 
     private JButton addButtonAndShortcut(ActionDefinition action) {
@@ -1242,8 +1244,8 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
             String desc = action.getDisplayName() + ((paramCode == 0) ? "" : action.parameters.toString());
             sc = Shortcut.registerShortcut("toolbar:"+name, tr("Toolbar: {0}", desc),
                 KeyEvent.CHAR_UNDEFINED, Shortcut.NONE);
-            Main.unregisterShortcut(sc);
-            Main.registerActionShortcut(act, sc);
+            MainApplication.unregisterShortcut(sc);
+            MainApplication.registerActionShortcut(act, sc);
 
             // add shortcut info to the tooltip if needed
             if (sc.isAssignedUser()) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractListEditor.java b/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractListEditor.java
index bd5e531..d9fabf2 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractListEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractListEditor.java
@@ -10,7 +10,7 @@ import java.util.List;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 
 /**
  * Abstract superclass of {@link ListEditor} and {@link AbstractTableListEditor}.
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
index 8d43bea..bcf8025 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
@@ -37,11 +37,11 @@ import javax.swing.filechooser.FileFilter;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
-import org.openstreetmap.josm.data.CustomConfigurator;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.preferences.Setting;
 import org.openstreetmap.josm.data.preferences.StringSetting;
 import org.openstreetmap.josm.gui.dialogs.LogShowDialog;
+import org.openstreetmap.josm.gui.io.CustomConfigurator;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
@@ -50,6 +50,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -256,7 +257,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
         if (files.length == 0)
             return;
 
-        Preferences tmpPrefs = CustomConfigurator.clonePreferences(Main.pref);
+        Preferences tmpPrefs = new Preferences(Main.pref);
 
         StringBuilder log = new StringBuilder();
         log.append("<html>");
@@ -337,7 +338,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
                     try {
                         Main.pref.save();
                     } catch (IOException e) {
-                        Main.warn(e, "IOException while saving preferences:");
+                        Logging.log(Logging.LEVEL_WARN, "IOException while saving preferences:", e);
                     }
                     readPreferences(Main.pref);
                     applyFilter();
@@ -406,7 +407,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
 
         @Override
         public void actionPerformed(ActionEvent ae) {
-            Preferences tmpPrefs = CustomConfigurator.clonePreferences(Main.pref);
+            Preferences tmpPrefs = new Preferences(Main.pref);
             CustomConfigurator.readXML(file, tmpPrefs);
             readPreferences(tmpPrefs);
             String prefRegex = profileTypes.get(type);
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java b/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
index b7de250..f67b5a6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
@@ -18,9 +18,9 @@ import javax.swing.filechooser.FileFilter;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DiskAccessAction;
-import org.openstreetmap.josm.data.CustomConfigurator;
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.preferences.Setting;
+import org.openstreetmap.josm.gui.io.CustomConfigurator;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.tools.Utils;
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
index aa7efc7..01b5a6b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
@@ -47,6 +47,7 @@ import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Color preferences.
@@ -117,7 +118,7 @@ public class ColorPreference implements SubPreferenceSetting {
             String html = colorMap.get(value);
             Color color = ColorHelper.html2color(html);
             if (color == null) {
-                Main.warn("Unable to get color from '"+html+"' for color preference '"+value+'\'');
+                Logging.warn("Unable to get color from '"+html+"' for color preference '"+value+'\'');
             }
             row.add(value);
             row.add(color);
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
index 375d9e0..5e328f6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationLis
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
 import org.openstreetmap.josm.tools.template_engine.TemplateParser;
 
@@ -429,7 +430,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
             case 3: colorTypeDirection.setSelected(true); break;
             case 4: colorTypeTime.setSelected(true); break;
             case 5: colorTypeHeatMap.setSelected(true); break;
-            default: Main.warn("Unknown color type: " + colorType);
+            default: Logging.warn("Unknown color type: " + colorType);
             }
             int ccts = Main.pref.getInteger("draw.rawgps.colorTracksTune", layerName, 45);
             colorTypeVelocityTune.setSelectedIndex(ccts == 10 ? 2 : (ccts == 20 ? 1 : 0));
@@ -556,7 +557,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         try {
             parser.parse();
         } catch (ParseError e) {
-            Main.warn(e);
+            Logging.warn(e);
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Incorrect waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             waypointLabelPattern.requestFocus();
@@ -566,7 +567,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         try {
             parser.parse();
         } catch (ParseError e) {
-            Main.warn(e);
+            Logging.warn(e);
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Incorrect audio waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             audioWaypointLabelPattern.requestFocus();
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
index 8ccf49a..20e3e92 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
@@ -39,6 +39,7 @@ import org.openstreetmap.josm.gui.widgets.FileChooserManager;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -103,7 +104,7 @@ public class LafPreference implements SubPreferenceSetting {
                 );
             } catch (ReflectiveOperationException ex) {
                 // just debug, Quaqua may not even be installed...
-                Main.debug(ex);
+                Logging.debug(ex);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
index c2e2942..dd9cccd 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
@@ -16,7 +16,6 @@ import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JScrollPane;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
@@ -24,6 +23,7 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.imagery.WMSImagery;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -78,18 +78,18 @@ public class AddWMSLayerPanel extends AddImageryPanel {
                 formats.setModel(new DefaultComboBoxModel<>(wmsFormats.toArray(new String[wmsFormats.size()])));
                 formats.setSelectedItem(wms.getPreferredFormats());
             } catch (MalformedURLException ex1) {
-                Main.error(ex1, false);
+                Logging.log(Logging.LEVEL_ERROR, ex1);
                 JOptionPane.showMessageDialog(getParent(), tr("Invalid service URL."),
                         tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             } catch (IOException ex2) {
-                Main.error(ex2, false);
+                Logging.log(Logging.LEVEL_ERROR, ex2);
                 JOptionPane.showMessageDialog(getParent(), tr("Could not retrieve WMS layer list."),
                         tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             } catch (WMSImagery.WMSGetCapabilitiesException ex3) {
                 String incomingData = ex3.getIncomingData().trim();
                 String title = tr("WMS Error");
                 StringBuilder message = new StringBuilder(tr("Could not parse WMS layer list."));
-                Main.error(ex3, "Could not parse WMS layer list. Incoming data:\n"+incomingData);
+                Logging.log(Logging.LEVEL_ERROR, "Could not parse WMS layer list. Incoming data:\n"+incomingData, ex3);
                 if ((incomingData.startsWith("<html>") || incomingData.startsWith("<HTML>"))
                   && (incomingData.endsWith("</html>") || incomingData.endsWith("</HTML>"))) {
                     GuiHelper.notifyUserHtmlError(this, title, message.toString(), incomingData);
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
index 1d8050e..1ffb8e5 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
@@ -26,14 +26,15 @@ import org.apache.commons.jcs.access.CacheAccess;
 import org.apache.commons.jcs.engine.stats.behavior.ICacheStats;
 import org.apache.commons.jcs.engine.stats.behavior.IStatElement;
 import org.apache.commons.jcs.engine.stats.behavior.IStats;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.layer.WMTSLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.ButtonColumn;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
 /**
@@ -49,7 +50,7 @@ public class CacheContentsPanel extends JPanel {
      */
     public CacheContentsPanel() {
         super(new GridBagLayout());
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(() -> {
             addToPanel(TMSLayer.getCache(), "TMS");
             addToPanel(WMSLayer.getCache(), "WMS");
             addToPanel(WMTSLayer.getCache(), "WMTS");
@@ -96,7 +97,7 @@ public class CacheContentsPanel extends JPanel {
                     counter[0]++;
                 }
             } else {
-                Main.warn("Could not parse the key: {0}. No colon found", key);
+                Logging.warn("Could not parse the key: {0}. No colon found", key);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
index ef80f70..390d718 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
@@ -60,6 +60,7 @@ import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.imagery.Shape;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -71,6 +72,7 @@ import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 
 /**
@@ -161,7 +163,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
         layerInfo.save();
         ImageryLayerInfo.instance.clear();
         ImageryLayerInfo.instance.load(false);
-        Main.main.menu.imageryMenu.refreshOffsetMenu();
+        MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
         OffsetBookmark.saveBookmarks();
 
         if (!GraphicsEnvironment.isHeadless()) {
@@ -655,7 +657,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
 
             @Override
             public void actionPerformed(ActionEvent evt) {
-                layerInfo.loadDefaults(true, false, false);
+                layerInfo.loadDefaults(true, MainApplication.worker, false);
                 defaultModel.fireTableDataChanged();
                 defaultTable.getSelectionModel().clearSelection();
                 defaultTableListener.clearMap();
@@ -790,13 +792,13 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
                 try {
                     htmlPane = new JosmEditorPane(url);
                 } catch (IOException e1) {
-                    Main.trace(e1);
+                    Logging.trace(e1);
                     // give a second chance with a default Locale 'en'
                     try {
                         url = new URL(eulaUrl.replaceAll("\\{lang\\}", ""));
                         htmlPane = new JosmEditorPane(url);
                     } catch (IOException e2) {
-                        Main.debug(e2);
+                        Logging.debug(e2);
                         JOptionPane.showMessageDialog(gui, tr("EULA license URL not available: {0}", eulaUrl));
                         return false;
                     }
@@ -955,7 +957,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
     public static void initialize() {
         ImageryLayerInfo.instance.load(false);
         OffsetBookmark.loadBookmarks();
-        Main.main.menu.imageryMenu.refreshImageryMenu();
-        Main.main.menu.imageryMenu.refreshOffsetMenu();
+        MainApplication.getMenu().imageryMenu.refreshImageryMenu();
+        MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
index 60d5ae5..50359dc 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
@@ -14,8 +14,8 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
 
-import org.openstreetmap.josm.data.AutosaveTask;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.layer.AutosaveTask;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
index 2afbafe..4d2e669 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
@@ -6,33 +6,30 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.TreeSet;
 
 import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.MapPaintPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.SourceType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
-import org.openstreetmap.josm.gui.preferences.SourceType;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Preference settings for map paint styles.
@@ -165,7 +162,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
                 return css.title;
             }
         } catch (RuntimeException ignore) { // NOPMD
-            Main.debug(ignore);
+            Logging.debug(ignore);
         }
         return null;
     }
@@ -177,7 +174,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
         if (reload) {
             MapPaintStyles.readFromPreferences();
         }
-        if (Main.isDisplayingMapView()) {
+        if (MainApplication.isDisplayingMapView()) {
             MapPaintStyles.getStyles().clearCached();
         }
         return false;
@@ -190,102 +187,6 @@ public class MapPaintPreference implements SubPreferenceSetting {
         MapPaintStyles.readFromPreferences();
     }
 
-    /**
-     * Helper class for map paint styles preferences.
-     */
-    public static class MapPaintPrefHelper extends SourceEditor.SourcePrefHelper {
-
-        /**
-         * The unique instance.
-         */
-        public static final MapPaintPrefHelper INSTANCE = new MapPaintPrefHelper();
-
-        /**
-         * Constructs a new {@code MapPaintPrefHelper}.
-         */
-        public MapPaintPrefHelper() {
-            super("mappaint.style.entries");
-        }
-
-        @Override
-        public List<SourceEntry> get() {
-            List<SourceEntry> ls = super.get();
-            if (insertNewDefaults(ls)) {
-                put(ls);
-            }
-            return ls;
-        }
-
-        /**
-         * If the selection of default styles changes in future releases, add
-         * the new entries to the user-configured list. Remember the known URLs,
-         * so an item that was deleted explicitly is not added again.
-         * @param list new defaults
-         * @return {@code true} if a change occurred
-         */
-        private boolean insertNewDefaults(List<SourceEntry> list) {
-            boolean changed = false;
-
-            Collection<String> knownDefaults = new TreeSet<>(Main.pref.getCollection("mappaint.style.known-defaults"));
-
-            Collection<ExtendedSourceEntry> defaults = getDefault();
-            int insertionIdx = 0;
-            for (final SourceEntry def : defaults) {
-                int i = Utils.indexOf(list, se -> Objects.equals(def.url, se.url));
-                if (i == -1 && !knownDefaults.contains(def.url)) {
-                    def.active = false;
-                    list.add(insertionIdx, def);
-                    insertionIdx++;
-                    changed = true;
-                } else {
-                    if (i >= insertionIdx) {
-                        insertionIdx = i + 1;
-                    }
-                }
-                knownDefaults.add(def.url);
-            }
-            Main.pref.putCollection("mappaint.style.known-defaults", knownDefaults);
-
-            // XML style is not bundled anymore
-            list.remove(Utils.find(list, se -> "resource://styles/standard/elemstyles.xml".equals(se.url)));
-
-            return changed;
-        }
-
-        @Override
-        public Collection<ExtendedSourceEntry> getDefault() {
-            ExtendedSourceEntry defJosmMapcss = new ExtendedSourceEntry("elemstyles.mapcss", "resource://styles/standard/elemstyles.mapcss");
-            defJosmMapcss.active = true;
-            defJosmMapcss.name = "standard";
-            defJosmMapcss.title = tr("JOSM default (MapCSS)");
-            defJosmMapcss.description = tr("Internal style to be used as base for runtime switchable overlay styles");
-            ExtendedSourceEntry defPL2 = new ExtendedSourceEntry("potlatch2.mapcss", "resource://styles/standard/potlatch2.mapcss");
-            defPL2.active = false;
-            defPL2.name = "standard";
-            defPL2.title = tr("Potlatch 2");
-            defPL2.description = tr("the main Potlatch 2 style");
-
-            return Arrays.asList(defJosmMapcss, defPL2);
-        }
-
-        @Override
-        public Map<String, String> serialize(SourceEntry entry) {
-            Map<String, String> res = new HashMap<>();
-            res.put("url", entry.url == null ? "" : entry.url);
-            res.put("title", entry.title == null ? "" : entry.title);
-            res.put("active", Boolean.toString(entry.active));
-            if (entry.name != null) {
-                res.put("ptoken", entry.name);
-            }
-            return res;
-        }
-
-        @Override
-        public SourceEntry deserialize(Map<String, String> s) {
-            return new SourceEntry(s.get("url"), s.get("ptoken"), s.get("title"), Boolean.parseBoolean(s.get("active")));
-        }
-    }
-
     @Override
     public boolean isExpert() {
         return false;
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
index 18d14e7..a8eb654 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
@@ -8,10 +8,7 @@ import java.awt.GridBagLayout;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
@@ -20,20 +17,22 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.PresetPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.SourceType;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
-import org.openstreetmap.josm.gui.preferences.SourceType;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -57,7 +56,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                             TaggingPresetReader.readAll(source.url, false);
                             canLoad = true;
                         } catch (IOException e) {
-                            Main.warn(e, tr("Could not read tagging preset source: {0}", source));
+                            Logging.log(Logging.LEVEL_WARN, tr("Could not read tagging preset source: {0}", source), e);
                             ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Error"),
                                     tr("Yes"), tr("No"), tr("Cancel"));
                             ed.setContent(tr("Could not read tagging preset source: {0}\nDo you want to keep it?", source));
@@ -72,7 +71,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                             }
                         } catch (SAXException e) {
                             // We will handle this in step with validation
-                            Main.trace(e);
+                            Logging.trace(e);
                         }
 
                         String errorMessage = null;
@@ -82,7 +81,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                         } catch (IOException e) {
                             // Should not happen, but at least show message
                             String msg = tr("Could not read tagging preset source {0}", source);
-                            Main.error(e, msg);
+                            Logging.log(Logging.LEVEL_ERROR, msg, e);
                             JOptionPane.showMessageDialog(Main.parent, msg);
                             return false;
                         } catch (SAXParseException e) {
@@ -95,7 +94,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                                         "Do you really want to use it?<br><br><table width=400>Error is: [{1}:{2}] {3}</table></html>",
                                         source, e.getLineNumber(), e.getColumnNumber(), Utils.escapeReservedCharactersHTML(e.getMessage()));
                             }
-                            Main.warn(e, errorMessage);
+                            Logging.log(Logging.LEVEL_WARN, errorMessage, e);
                         } catch (SAXException e) {
                             if (canLoad) {
                                 errorMessage = tr("<html>Tagging preset source {0} can be loaded but it contains errors. " +
@@ -106,11 +105,11 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                                         "Do you really want to use it?<br><br><table width=600>Error is: {1}</table></html>",
                                         source, Utils.escapeReservedCharactersHTML(e.getMessage()));
                             }
-                            Main.warn(e, errorMessage);
+                            Logging.log(Logging.LEVEL_ERROR, errorMessage, e);
                         }
 
                         if (errorMessage != null) {
-                            Main.error(errorMessage);
+                            Logging.error(errorMessage);
                             int result = JOptionPane.showConfirmDialog(Main.parent, new JLabel(errorMessage), tr("Error"),
                                     JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);
 
@@ -252,45 +251,6 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
         return restart;
     }
 
-    /**
-     * Helper class for tagging presets preferences.
-     */
-    public static class PresetPrefHelper extends SourceEditor.SourcePrefHelper {
-
-        /**
-         * The unique instance.
-         */
-        public static final PresetPrefHelper INSTANCE = new PresetPrefHelper();
-
-        /**
-         * Constructs a new {@code PresetPrefHelper}.
-         */
-        public PresetPrefHelper() {
-            super("taggingpreset.entries");
-        }
-
-        @Override
-        public Collection<ExtendedSourceEntry> getDefault() {
-            ExtendedSourceEntry i = new ExtendedSourceEntry("defaultpresets.xml", "resource://data/defaultpresets.xml");
-            i.title = tr("Internal Preset");
-            i.description = tr("The default preset for JOSM");
-            return Collections.singletonList(i);
-        }
-
-        @Override
-        public Map<String, String> serialize(SourceEntry entry) {
-            Map<String, String> res = new HashMap<>();
-            res.put("url", entry.url);
-            res.put("title", entry.title == null ? "" : entry.title);
-            return res;
-        }
-
-        @Override
-        public SourceEntry deserialize(Map<String, String> s) {
-            return new SourceEntry(s.get("url"), null, s.get("title"), true);
-        }
-    }
-
     @Override
     public boolean isExpert() {
         return false;
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
index 8dbea0c..5462f45 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
@@ -46,6 +46,7 @@ import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -61,6 +62,7 @@ import org.openstreetmap.josm.plugins.ReadLocalPluginInformationTask;
 import org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -326,8 +328,8 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
                 });
             }
         };
-        Main.worker.submit(task);
-        Main.worker.submit(r);
+        MainApplication.worker.submit(task);
+        MainApplication.worker.submit(r);
     }
 
     /**
@@ -360,8 +362,8 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
                     });
                 }
             };
-            Main.worker.submit(task);
-            Main.worker.submit(continuation);
+            MainApplication.worker.submit(task);
+            MainApplication.worker.submit(continuation);
         }
     }
 
@@ -385,7 +387,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
                         null // FIXME: provide help context
                         ));
             } catch (InterruptedException | InvocationTargetException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
 
@@ -434,12 +436,12 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
                     return;
                 }
                 pluginDownloadTask.setPluginsToDownload(toUpdate);
-                Main.worker.submit(pluginDownloadTask);
-                Main.worker.submit(pluginDownloadContinuation);
+                MainApplication.worker.submit(pluginDownloadTask);
+                MainApplication.worker.submit(pluginDownloadContinuation);
             };
 
-            Main.worker.submit(pluginInfoDownloadTask);
-            Main.worker.submit(pluginInfoDownloadContinuation);
+            MainApplication.worker.submit(pluginInfoDownloadTask);
+            MainApplication.worker.submit(pluginInfoDownloadContinuation);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
index 92a25aa..57adfe1 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.gui.util.ChangeNotifier;
 import org.openstreetmap.josm.plugins.PluginException;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The plugin model behind a {@code PluginListPanel}.
@@ -349,7 +350,7 @@ public class PluginPreferencesModel extends ChangeNotifier {
                         oldinfo.updateLocalInfo(newinfo);
                     }
                 } catch (PluginException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
index 8746c6d..2bccf36 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
@@ -24,6 +24,7 @@ import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A panel for configuring whether JOSM shall update plugins at startup.
@@ -187,7 +188,7 @@ public class PluginUpdatePolicyPanel extends JPanel {
                 days = Integer.parseInt(pref.trim());
             } catch (NumberFormatException e) {
                 // ignore - load from preference pluginmanager.time-based-update.interval
-                Main.trace(e);
+                Logging.trace(e);
             }
             if (days <= 0) {
                 days = PluginHandler.DEFAULT_TIME_BASED_UPDATE_INTERVAL;
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
index 6c8aa20..7ca14ca 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
@@ -32,6 +32,7 @@ import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice where a CRS can be defined using various parameters.
@@ -103,7 +104,7 @@ public class CustomProjectionChoice extends AbstractProjectionChoice implements
                         CustomProjection test = new CustomProjection();
                         test.update(input.getText());
                     } catch (ProjectionConfigurationException ex) {
-                        Main.warn(ex);
+                        Logging.warn(ex);
                         error = ex.getMessage();
                         valStatus.setIcon(ImageProvider.get("data", "error"));
                         valStatus.setVisible(true);
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/GaussKruegerProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/GaussKruegerProjectionChoice.java
index bcb470a..29f7d89 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/GaussKruegerProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/GaussKruegerProjectionChoice.java
@@ -6,7 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.util.Collection;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice for Gauß-Krüger coordinate system (zones 2-5, EPSG:31466-31469).
@@ -39,7 +39,7 @@ public class GaussKruegerProjectionChoice extends ListProjectionChoice {
         try {
             return Integer.parseInt(zone) - 2;
         } catch (NumberFormatException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return defaultIndex;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
index d6083f6..68f527c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
@@ -10,9 +10,9 @@ import java.util.Collections;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice for Lambert CC (9 zones, EPSG:3942-3950).
@@ -82,7 +82,7 @@ public class LambertCC9ZonesProjectionChoice extends ListProjectionChoice {
                 if (zoneval >= 0 && zoneval <= 8)
                     return Collections.singleton(String.valueOf(zoneval+1));
             } catch (NumberFormatException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
         }
         return null;
@@ -98,7 +98,7 @@ public class LambertCC9ZonesProjectionChoice extends ListProjectionChoice {
         try {
             return Integer.parseInt(zone) - 1;
         } catch (NumberFormatException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return defaultIndex;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
index 2ec3c9a..0a104c7 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
@@ -10,9 +10,9 @@ import java.util.Collections;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice for 4 zone Lambert (1920, EPSG:27561-27564).
@@ -76,7 +76,7 @@ public class LambertProjectionChoice extends ListProjectionChoice {
                 if (zoneval >= 1 && zoneval <= 4)
                     return Collections.singleton(zonestring);
             } catch (NumberFormatException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return null;
@@ -92,7 +92,7 @@ public class LambertProjectionChoice extends ListProjectionChoice {
         try {
             return Integer.parseInt(zone) - 1;
         } catch (NumberFormatException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return defaultIndex;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
index 781c9cb..77c5366 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
@@ -272,11 +272,10 @@ public class ProjectionPreference implements SubPreferenceSetting {
     }
 
     private static String projectionChoice;
-    
+
     private static final StringProperty PROP_PROJECTION_DEFAULT = new StringProperty("projection.default", mercator.getId());
     private static final StringProperty PROP_COORDINATES = new StringProperty("coordinates", null);
     private static final CollectionProperty PROP_SUB_PROJECTION_DEFAULT = new CollectionProperty("projection.default.sub", null);
-    public static final StringProperty PROP_SYSTEM_OF_MEASUREMENT = new StringProperty("system_of_measurement", "Metric");
     private static final String[] unitsValues = ALL_SYSTEMS.keySet().toArray(new String[ALL_SYSTEMS.size()]);
     private static final String[] unitsValuesTr = new String[unitsValues.length];
     static {
@@ -338,7 +337,7 @@ public class ProjectionPreference implements SubPreferenceSetting {
         }
 
         for (int i = 0; i < unitsValues.length; ++i) {
-            if (unitsValues[i].equals(PROP_SYSTEM_OF_MEASUREMENT.get())) {
+            if (unitsValues[i].equals(SystemOfMeasurement.PROP_SYSTEM_OF_MEASUREMENT.get())) {
                 unitsCombo.setSelectedIndex(i);
                 break;
             }
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/UTMFranceDOMProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/UTMFranceDOMProjectionChoice.java
index 9bb9960..a959ac0 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/UTMFranceDOMProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/UTMFranceDOMProjectionChoice.java
@@ -6,7 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.util.Collection;
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice for various French overseas territories (EPSG:2969,2970,2972,2973,2975).
@@ -46,7 +46,7 @@ public class UTMFranceDOMProjectionChoice extends ListProjectionChoice {
         try {
             return Integer.parseInt(zone) - 1;
         } catch (NumberFormatException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return defaultIndex;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
index 00c4d84..93c464f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
@@ -15,8 +15,8 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * ProjectionChoice for UTM.
@@ -138,7 +138,7 @@ public class UTMProjectionChoice extends ListProjectionChoice {
                 if (zoneval > 0 && zoneval <= 60)
                     return Arrays.asList(zonestring, hem.toString());
             } catch (NumberFormatException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
         return null;
@@ -169,7 +169,7 @@ public class UTMProjectionChoice extends ListProjectionChoice {
         try {
             return Integer.parseInt(zone) - 1;
         } catch (NumberFormatException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return defaultIndex;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java b/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
index 557406e..a1f801c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
@@ -38,6 +38,7 @@ import org.openstreetmap.josm.io.remotecontrol.RemoteControl;
 import org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpsServer;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.PlatformHookWindows;
 
 /**
@@ -126,10 +127,10 @@ public final class RemoteControlPreference extends DefaultTabPreferenceSetting {
                     String msg = changed ?
                             tr("Certificate has been successfully installed.") :
                             tr("Certificate is already installed. Nothing to do.");
-                    Main.info(msg);
+                    Logging.info(msg);
                     JOptionPane.showMessageDialog(wrapper, msg);
                 } catch (IOException | GeneralSecurityException ex) {
-                    Main.error(ex);
+                    Logging.error(ex);
                 }
             });
             uninstallCertificate.addActionListener(e -> {
@@ -137,16 +138,16 @@ public final class RemoteControlPreference extends DefaultTabPreferenceSetting {
                     String msg;
                     KeyStore ks = PlatformHookWindows.getRootKeystore();
                     if (ks.containsAlias(RemoteControlHttpsServer.ENTRY_ALIAS)) {
-                        Main.info(tr("Removing certificate {0} from root keystore.", RemoteControlHttpsServer.ENTRY_ALIAS));
+                        Logging.info(tr("Removing certificate {0} from root keystore.", RemoteControlHttpsServer.ENTRY_ALIAS));
                         ks.deleteEntry(RemoteControlHttpsServer.ENTRY_ALIAS);
                         msg = tr("Certificate has been successfully uninstalled.");
                     } else {
                         msg = tr("Certificate is not installed. Nothing to do.");
                     }
-                    Main.info(msg);
+                    Logging.info(msg);
                     JOptionPane.showMessageDialog(wrapper, msg);
                 } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException ex) {
-                    Main.error(ex);
+                    Logging.error(ex);
                 }
             });
             installCertificate.setEnabled(https);
@@ -170,13 +171,15 @@ public final class RemoteControlPreference extends DefaultTabPreferenceSetting {
 
         ActionListener remoteControlEnabled = e -> {
             GuiHelper.setEnabledRec(wrapper, enableRemoteControl.isSelected());
+            enableHttpsSupport.setEnabled(RemoteControl.supportsHttps());
             // 'setEnabled(false)' does not work for JLabel with html text, so do it manually
             // FIXME: use QuadStateCheckBox to make checkboxes unset when disabled
             if (installCertificate != null && uninstallCertificate != null) {
                 // Install certificate button is enabled if HTTPS is also enabled
-                installCertificate.setEnabled(enableRemoteControl.isSelected() && enableHttpsSupport.isSelected());
+                installCertificate.setEnabled(enableRemoteControl.isSelected()
+                        && enableHttpsSupport.isSelected() && RemoteControl.supportsHttps());
                 // Uninstall certificate button is always enabled
-                uninstallCertificate.setEnabled(true);
+                uninstallCertificate.setEnabled(RemoteControl.supportsHttps());
             }
         };
         enableRemoteControl.addActionListener(remoteControlEnabled);
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java b/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
index f773372..feb0718 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
@@ -12,7 +12,6 @@ import java.net.URL;
 import javax.swing.JOptionPane;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -20,6 +19,7 @@ import org.openstreetmap.josm.io.Capabilities;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
@@ -190,7 +190,7 @@ public class ApiUrlTestTask extends PleaseWaitRunnable {
             try {
                 Capabilities.CapabilitiesParser.parse(new InputSource(connection.getResponse().getContent()));
             } catch (SAXException | ParserConfigurationException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 alertInvalidCapabilities();
                 return;
             }
@@ -199,7 +199,7 @@ public class ApiUrlTestTask extends PleaseWaitRunnable {
             if (canceled)
                 // ignore exceptions
                 return;
-            Main.error(e);
+            Logging.error(e);
             alertConnectionFailed();
             return;
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java
index 1067f10..d8573b6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java
@@ -18,10 +18,12 @@ import javax.swing.JRadioButton;
 import javax.swing.JSeparator;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is the preference panel for the authentication method and the authentication parameters.
@@ -120,7 +122,7 @@ public class AuthenticationPreferencesPanel extends VerticallyScrollablePanel im
         } else if ("oauth".equals(authMethod)) {
             rbOAuth.setSelected(true);
         } else {
-            Main.warn(tr("Unsupported value in preference ''{0}'', got ''{1}''. Using authentication method ''Basic Authentication''.",
+            Logging.warn(tr("Unsupported value in preference ''{0}'', got ''{1}''. Using authentication method ''Basic Authentication''.",
                     "osm-server.auth-method", authMethod));
             rbBasicAuthentication.setSelected(true);
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java
index 5e2d47a..fc178af 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java
@@ -14,7 +14,6 @@ import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
@@ -22,6 +21,7 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.auth.CredentialsAgent;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The preferences panel for parameters necessary for the Basic Authentication Scheme.
@@ -106,9 +106,9 @@ public class BasicAuthenticationPreferencesPanel extends JPanel {
                 tfOsmPassword.setText(pa.getPassword() == null ? "" : String.valueOf(pa.getPassword()));
             }
         } catch (CredentialsAgentException e) {
-            Main.error(e);
-            Main.warn(tr("Failed to retrieve OSM credentials from credential manager."));
-            Main.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
+            Logging.error(e);
+            Logging.warn(tr("Failed to retrieve OSM credentials from credential manager."));
+            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
             tfOsmUserName.setText("");
             tfOsmPassword.setText("");
         }
@@ -126,9 +126,9 @@ public class BasicAuthenticationPreferencesPanel extends JPanel {
             );
             cm.store(RequestorType.SERVER, OsmApi.getOsmApi().getHost(), pa);
         } catch (CredentialsAgentException e) {
-            Main.error(e);
-            Main.warn(tr("Failed to save OSM credentials to credential manager."));
-            Main.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
+            Logging.error(e);
+            Logging.warn(tr("Failed to save OSM credentials to credential manager."));
+            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
index 28f819f..c28a578 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
@@ -23,8 +23,10 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.oauth.AdvancedOAuthPropertiesPanel;
 import org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard;
 import org.openstreetmap.josm.gui.oauth.TestAccessTokenTask;
@@ -33,6 +35,7 @@ import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 
 /**
@@ -313,11 +316,11 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
             OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
                     OAuthAuthenticationPreferencesPanel.this,
                     apiUrl,
-                    Main.worker);
+                    MainApplication.worker);
             try {
                 wizard.showDialog();
             } catch (UserCancelException ignore) {
-                Main.trace(ignore);
+                Logging.trace(ignore);
                 return;
             }
             pnlAdvancedProperties.setAdvancedParameters(wizard.getOAuthParameters());
@@ -362,7 +365,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
                     parameters,
                     token
             );
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
index 10c06e2..4ce6f42 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
@@ -28,6 +28,7 @@ import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.CollectionProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
@@ -36,6 +37,7 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -155,7 +157,7 @@ public class OsmApiUrlInputPanel extends JPanel {
             try {
                 OsmApi.getOsmApi().initialize(null);
             } catch (OsmTransferCanceledException | OsmApiInitializationException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
         }
     }
@@ -184,7 +186,7 @@ public class OsmApiUrlInputPanel extends JPanel {
         public void actionPerformed(ActionEvent arg0) {
             final String url = getStrippedApiUrl();
             final ApiUrlTestTask task = new ApiUrlTestTask(OsmApiUrlInputPanel.this, url);
-            Main.worker.submit(task);
+            MainApplication.worker.submit(task);
             Runnable r = () -> {
                 if (task.isCanceled())
                     return;
@@ -201,7 +203,7 @@ public class OsmApiUrlInputPanel extends JPanel {
                 };
                 SwingUtilities.invokeLater(r1);
             };
-            Main.worker.submit(r);
+            MainApplication.worker.submit(r);
         }
 
         protected final void updateEnabledState() {
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
index 28880d1..306a2fd 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
@@ -36,6 +36,7 @@ import org.openstreetmap.josm.io.auth.CredentialsAgent;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Component allowing input of proxy settings.
@@ -344,7 +345,7 @@ public class ProxyPreferencesPanel extends VerticallyScrollablePanel {
         tfProxySocksPort.setText(Main.pref.get(PROXY_SOCKS_PORT, ""));
 
         if (pp.equals(ProxyPolicy.USE_SYSTEM_SETTINGS) && !DefaultProxySelector.willJvmRetrieveSystemProxies()) {
-            Main.warn(tr("JOSM is configured to use proxies from the system setting, but the JVM is not configured to retrieve them. " +
+            Logging.warn(tr("JOSM is configured to use proxies from the system setting, but the JVM is not configured to retrieve them. " +
                          "Resetting preferences to ''No proxy''"));
             pp = ProxyPolicy.NO_PROXY;
             rbProxyPolicy.get(pp).setSelected(true);
@@ -363,7 +364,7 @@ public class ProxyPreferencesPanel extends VerticallyScrollablePanel {
                 tfProxyHttpPassword.setText(pa.getPassword() == null ? "" : String.valueOf(pa.getPassword()));
             }
         } catch (CredentialsAgentException e) {
-            Main.error(e);
+            Logging.error(e);
             tfProxyHttpUser.setText("");
             tfProxyHttpPassword.setText("");
         }
@@ -435,7 +436,7 @@ public class ProxyPreferencesPanel extends VerticallyScrollablePanel {
             );
             cm.store(RequestorType.PROXY, tfProxyHttpHost.getText(), pa);
         } catch (CredentialsAgentException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java b/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
index 24e4a2f..adce020 100644
--- a/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
@@ -44,12 +44,12 @@ import javax.swing.table.TableColumnModel;
 import javax.swing.table.TableModel;
 import javax.swing.table.TableRowSorter;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -109,7 +109,7 @@ public class PrefJPanel extends JPanel {
                         list.put(Integer.valueOf(i), s);
                     }
                 } catch (IllegalArgumentException | IllegalAccessException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
@@ -389,7 +389,7 @@ public class PrefJPanel extends JPanel {
                 }
                 model.fireTableDataChanged();
             } catch (PatternSyntaxException | ClassCastException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java
index 24ec975..78a827c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java
@@ -5,7 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import javax.swing.JTabbedPane;
 
-import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
@@ -35,33 +34,6 @@ public final class ValidatorPreference extends DefaultTabPreferenceSetting {
                 false, new JTabbedPane());
     }
 
-    /** The preferences prefix */
-    public static final String PREFIX = "validator";
-
-    /** The preferences key for error layer */
-    public static final BooleanProperty PREF_LAYER = new BooleanProperty(PREFIX + ".layer", true);
-
-    /** The preferences key for enabled tests */
-    public static final String PREF_SKIP_TESTS = PREFIX + ".skip";
-
-    /** The preferences key for enabled tests */
-    public static final BooleanProperty PREF_USE_IGNORE = new BooleanProperty(PREFIX + ".ignore", true);
-
-    /** The preferences key for enabled tests before upload*/
-    public static final String PREF_SKIP_TESTS_BEFORE_UPLOAD = PREFIX + ".skipBeforeUpload";
-
-    /** The preferences key for ignored severity other on upload */
-    public static final BooleanProperty PREF_OTHER_UPLOAD = new BooleanProperty(PREFIX + ".otherUpload", false);
-
-    /** The preferences for ignored severity other */
-    public static final BooleanProperty PREF_OTHER = new BooleanProperty(PREFIX + ".other", false);
-
-    /**
-     * The preferences key for enabling the permanent filtering
-     * of the displayed errors in the tree regarding the current selection
-     */
-    public static final String PREF_FILTER_BY_SELECTION = PREFIX + ".selectionFilter";
-
     @Override
     public void addGui(PreferenceTabbedPane gui) {
         gui.createPreferenceTab(this).add(getTabPane(), GBC.eol().fill(GBC.BOTH));
diff --git a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
index e394dbf..4a91fb9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
@@ -7,21 +7,20 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.SourceType;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
-import org.openstreetmap.josm.gui.preferences.SourceType;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
@@ -63,17 +62,17 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
 
         @Override
         public Collection<? extends SourceEntry> getInitialSourcesList() {
-            return RulePrefHelper.INSTANCE.get();
+            return ValidatorPrefHelper.INSTANCE.get();
         }
 
         @Override
         public boolean finish() {
-            return RulePrefHelper.INSTANCE.put(activeSourcesModel.getSources());
+            return ValidatorPrefHelper.INSTANCE.put(activeSourcesModel.getSources());
         }
 
         @Override
         public Collection<ExtendedSourceEntry> getDefault() {
-            return RulePrefHelper.INSTANCE.getDefault();
+            return ValidatorPrefHelper.INSTANCE.getDefault();
         }
 
         @Override
@@ -122,67 +121,6 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
         }
     }
 
-    /**
-     * Helper class for validator tag checker rules preferences.
-     */
-    public static class RulePrefHelper extends SourceEditor.SourcePrefHelper {
-
-        /**
-         * The unique instance.
-         */
-        public static final RulePrefHelper INSTANCE = new RulePrefHelper();
-
-        /**
-         * Constructs a new {@code PresetPrefHelper}.
-         */
-        public RulePrefHelper() {
-            super(MapCSSTagChecker.ENTRIES_PREF_KEY);
-        }
-
-        @Override
-        public Collection<ExtendedSourceEntry> getDefault() {
-            List<ExtendedSourceEntry> def = new ArrayList<>();
-
-            // CHECKSTYLE.OFF: SingleSpaceSeparator
-            addDefault(def, "addresses",    tr("Addresses"),           tr("Checks for errors on addresses"));
-            addDefault(def, "combinations", tr("Tag combinations"),    tr("Checks for missing tag or suspicious combinations"));
-            addDefault(def, "deprecated",   tr("Deprecated features"), tr("Checks for deprecated features"));
-            addDefault(def, "geometry",     tr("Geometry"),            tr("Checks for geometry errors"));
-            addDefault(def, "highway",      tr("Highways"),            tr("Checks for errors on highways"));
-            addDefault(def, "multiple",     tr("Multiple values"),     tr("Checks for wrong multiple values"));
-            addDefault(def, "numeric",      tr("Numeric values"),      tr("Checks for wrong numeric values"));
-            addDefault(def, "religion",     tr("Religion"),            tr("Checks for errors on religious objects"));
-            addDefault(def, "relation",     tr("Relations"),           tr("Checks for errors on relations"));
-            addDefault(def, "territories",  tr("Territories"),         tr("Checks for territories-specific features"));
-            addDefault(def, "unnecessary",  tr("Unnecessary tags"),    tr("Checks for unnecessary tags"));
-            addDefault(def, "wikipedia",    tr("Wikipedia"),           tr("Checks for wrong wikipedia tags"));
-            // CHECKSTYLE.ON: SingleSpaceSeparator
-
-            return def;
-        }
-
-        private static void addDefault(List<ExtendedSourceEntry> defaults, String filename, String title, String description) {
-            ExtendedSourceEntry i = new ExtendedSourceEntry(filename+".mapcss", "resource://data/validator/"+filename+".mapcss");
-            i.title = title;
-            i.description = description;
-            defaults.add(i);
-        }
-
-        @Override
-        public Map<String, String> serialize(SourceEntry entry) {
-            Map<String, String> res = new HashMap<>();
-            res.put("url", entry.url);
-            res.put("title", entry.title == null ? "" : entry.title);
-            res.put("active", Boolean.toString(entry.active));
-            return res;
-        }
-
-        @Override
-        public SourceEntry deserialize(Map<String, String> s) {
-            return new SourceEntry(s.get("url"), null, s.get("title"), Boolean.parseBoolean(s.get("active")));
-        }
-    }
-
     private SourceEditor sources;
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
index 3a4128a..67f115c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
@@ -16,6 +16,7 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
@@ -57,20 +58,20 @@ public class ValidatorTestsPreference implements SubPreferenceSetting {
         JPanel testPanel = new VerticallyScrollablePanel(new GridBagLayout());
         testPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 
-        prefUseIgnore = new JCheckBox(tr("Use ignore list."), ValidatorPreference.PREF_USE_IGNORE.get());
+        prefUseIgnore = new JCheckBox(tr("Use ignore list."), ValidatorPrefHelper.PREF_USE_IGNORE.get());
         prefUseIgnore.setToolTipText(tr("Use the ignore list to suppress warnings."));
         testPanel.add(prefUseIgnore, GBC.eol());
 
-        prefUseLayer = new JCheckBox(tr("Use error layer."), ValidatorPreference.PREF_LAYER.get());
+        prefUseLayer = new JCheckBox(tr("Use error layer."), ValidatorPrefHelper.PREF_LAYER.get());
         prefUseLayer.setToolTipText(tr("Use the error layer to display problematic elements."));
         testPanel.add(prefUseLayer, GBC.eol());
 
-        prefOther = new JCheckBox(tr("Show informational level."), ValidatorPreference.PREF_OTHER.get());
+        prefOther = new JCheckBox(tr("Show informational level."), ValidatorPrefHelper.PREF_OTHER.get());
         prefOther.setToolTipText(tr("Show the informational tests."));
         testPanel.add(prefOther, GBC.eol());
 
         prefOtherUpload = new JCheckBox(tr("Show informational level on upload."),
-                ValidatorPreference.PREF_OTHER_UPLOAD.get());
+                ValidatorPrefHelper.PREF_OTHER_UPLOAD.get());
         prefOtherUpload.setToolTipText(tr("Show the informational tests in the upload check windows."));
         testPanel.add(prefOtherUpload, GBC.eol());
 
@@ -114,12 +115,12 @@ public class ValidatorTestsPreference implements SubPreferenceSetting {
         testsToInitialize.remove(OsmValidator.getTest(MapCSSTagChecker.class));
         OsmValidator.initializeTests(testsToInitialize);
 
-        Main.pref.putCollection(ValidatorPreference.PREF_SKIP_TESTS, tests);
-        Main.pref.putCollection(ValidatorPreference.PREF_SKIP_TESTS_BEFORE_UPLOAD, testsBeforeUpload);
-        ValidatorPreference.PREF_USE_IGNORE.put(prefUseIgnore.isSelected());
-        ValidatorPreference.PREF_OTHER.put(prefOther.isSelected());
-        ValidatorPreference.PREF_OTHER_UPLOAD.put(prefOtherUpload.isSelected());
-        ValidatorPreference.PREF_LAYER.put(prefUseLayer.isSelected());
+        Main.pref.putCollection(ValidatorPrefHelper.PREF_SKIP_TESTS, tests);
+        Main.pref.putCollection(ValidatorPrefHelper.PREF_SKIP_TESTS_BEFORE_UPLOAD, testsBeforeUpload);
+        ValidatorPrefHelper.PREF_USE_IGNORE.put(prefUseIgnore.isSelected());
+        ValidatorPrefHelper.PREF_OTHER.put(prefOther.isSelected());
+        ValidatorPrefHelper.PREF_OTHER_UPLOAD.put(prefOtherUpload.isSelected());
+        ValidatorPrefHelper.PREF_LAYER.put(prefUseLayer.isSelected());
         return false;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
index 3dc321e..31e2c0b 100644
--- a/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
@@ -26,10 +26,18 @@ public abstract class AbstractProgressMonitor implements ProgressMonitor {
 
     private final CancelHandler cancelHandler;
 
-    protected enum State {
+    /**
+     * Progress monitor state
+     * @since 12675 (visibility)
+     */
+    public enum State {
+        /** Initialization. Next valid states are {@link #IN_TASK} or {@link #FINISHED} */
         INIT,
+        /** In task. Next valid states are {@link #IN_SUBTASK} or {@link #FINISHED} */
         IN_TASK,
+        /** In subtask. Next valid states is {@link #IN_TASK} */
         IN_SUBTASK,
+        /** Finished. Can't change state after that */
         FINISHED
     }
 
diff --git a/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java
index 8d39f79..158a508 100644
--- a/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/NullProgressMonitor.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.gui.progress;
 import java.awt.Component;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A singleton progress monitor that does nothing.
@@ -25,16 +26,12 @@ public final class NullProgressMonitor implements ProgressMonitor {
 
     @Override
     public void beginTask(String title) {
-        if (Main.isDebugEnabled()) {
-            Main.debug(title);
-        }
+        Logging.debug(title);
     }
 
     @Override
     public void beginTask(String title, int ticks) {
-        if (Main.isDebugEnabled()) {
-            Main.debug(title);
-        }
+        Logging.debug(title);
     }
 
     @Override
@@ -59,9 +56,7 @@ public final class NullProgressMonitor implements ProgressMonitor {
 
     @Override
     public void indeterminateSubTask(String title) {
-        if (Main.isDebugEnabled()) {
-            Main.debug(title);
-        }
+        Logging.debug(title);
     }
 
     @Override
@@ -106,9 +101,7 @@ public final class NullProgressMonitor implements ProgressMonitor {
 
     @Override
     public void subTask(String title) {
-        if (Main.isDebugEnabled()) {
-            Main.debug(title);
-        }
+        Logging.debug(title);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressRenderer.java b/src/org/openstreetmap/josm/gui/progress/ProgressRenderer.java
index 0ec822c..6db3700 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressRenderer.java
+++ b/src/org/openstreetmap/josm/gui/progress/ProgressRenderer.java
@@ -2,7 +2,7 @@
 package org.openstreetmap.josm.gui.progress;
 
 /**
- * Swing components can implement this interface and use a {@link SwingRenderingProgressMonitor}
+ * Swing components can implement this interface and use a {@code SwingRenderingProgressMonitor}
  * to render progress information.
  */
 public interface ProgressRenderer {
diff --git a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java
similarity index 91%
rename from src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
rename to src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java
index 93c5bd4..6361d67 100644
--- a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/swing/PleaseWaitProgressMonitor.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.progress;
+package org.openstreetmap.josm.gui.progress.swing;
 
 import java.awt.Component;
 import java.awt.GraphicsEnvironment;
@@ -11,9 +11,14 @@ import java.awt.event.WindowListener;
 import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapStatus.BackgroundProgressMonitor;
 import org.openstreetmap.josm.gui.PleaseWaitDialog;
+import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;
+import org.openstreetmap.josm.gui.progress.CancelHandler;
+import org.openstreetmap.josm.gui.progress.ProgressException;
+import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -21,6 +26,7 @@ import org.openstreetmap.josm.tools.bugreport.BugReport;
  * A progress monitor used in {@link org.openstreetmap.josm.gui.PleaseWaitRunnable}.
  * <p>
  * Progress is displayed in a dialog window ({@link PleaseWaitDialog}).
+ * @since 12675 (moved from {@code gui.progress} package}
  */
 public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
@@ -71,6 +77,12 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
      * The maximum value the progress bar that displays the current progress should have.
      */
     public static final int PROGRESS_BAR_MAX = 10_000;
+
+    /**
+     * The progress monitor being currently displayed.
+     */
+    static PleaseWaitProgressMonitor currentProgressMonitor;
+
     private final Component dialogParent;
 
     private int currentProgressValue;
@@ -85,6 +97,15 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
     private boolean cancelable;
 
+    /**
+     * Returns the progress monitor being currently displayed.
+     * @return the progress monitor being currently displayed
+     * @since 12638
+     */
+    public static PleaseWaitProgressMonitor getCurrent() {
+        return currentProgressMonitor;
+    }
+
     private void doInEDT(Runnable runnable) {
         // This must be invoke later even if current thread is EDT because inside there is dialog.setVisible
         // which freeze current code flow until modal dialog is closed
@@ -106,7 +127,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     private ProgressMonitorDialog getDialog() {
 
         BackgroundProgressMonitor backgroundMonitor = null;
-        MapFrame map = Main.map;
+        MapFrame map = MainApplication.getMap();
         if (map != null) {
             backgroundMonitor = map.statusLine.progressMonitor;
         }
@@ -213,7 +234,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     @Override
     public void doBeginTask() {
         doInEDT(() -> {
-            Main.currentProgressMonitor = this;
+            currentProgressMonitor = this;
             if (GraphicsEnvironment.isHeadless()) {
                 return;
             }
@@ -313,7 +334,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
             dialog.setIndeterminate(indeterminate && currentProgressValue == 0);
         }
         BackgroundProgressMonitor backgroundMonitor = null;
-        MapFrame map = Main.map;
+        MapFrame map = MainApplication.getMap();
         if (map != null) {
             backgroundMonitor = map.statusLine.progressMonitor;
         }
@@ -337,8 +358,8 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
                 dialog.removeWindowListener(windowListener);
                 dialog.dispose();
                 dialog = null;
-                Main.currentProgressMonitor = null;
-                MapFrame map = Main.map;
+                currentProgressMonitor = null;
+                MapFrame map = MainApplication.getMap();
                 if (map != null) {
                     map.statusLine.progressMonitor.setVisible(false);
                 }
@@ -353,7 +374,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         isInBackground = false;
         doInEDT(() -> {
             if (dialog != null) {
-                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
+                dialog.setInBackgroundPossible(taskId != null && MainApplication.isDisplayingMapView());
                 reset();
                 getDialog();
             }
@@ -365,7 +386,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         this.taskId = taskId;
         doInEDT(() -> {
             if (dialog != null) {
-                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
+                dialog.setInBackgroundPossible(taskId != null && MainApplication.isDisplayingMapView());
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressMonitorExecutor.java b/src/org/openstreetmap/josm/gui/progress/swing/ProgressMonitorExecutor.java
similarity index 81%
rename from src/org/openstreetmap/josm/gui/progress/ProgressMonitorExecutor.java
rename to src/org/openstreetmap/josm/gui/progress/swing/ProgressMonitorExecutor.java
index 508f182..2a7f7de 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressMonitorExecutor.java
+++ b/src/org/openstreetmap/josm/gui/progress/swing/ProgressMonitorExecutor.java
@@ -1,11 +1,10 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.progress;
+package org.openstreetmap.josm.gui.progress.swing;
 
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -13,6 +12,7 @@ import org.openstreetmap.josm.tools.Utils;
  *
  * Similar to Executors.newSingleThreadExecutor(), but displays the
  * progress monitor whenever a new task is executed.
+ * @since 12675 (moved from {@code gui.progress} package}
  */
 public class ProgressMonitorExecutor extends ThreadPoolExecutor {
 
@@ -29,9 +29,9 @@ public class ProgressMonitorExecutor extends ThreadPoolExecutor {
 
     @Override
     public void execute(Runnable command) {
-        if (Main.currentProgressMonitor != null) {
+        if (PleaseWaitProgressMonitor.currentProgressMonitor != null) {
             //TODO show only if this can't be in background or better if always in background is not checked
-            Main.currentProgressMonitor.showForegroundDialog();
+            PleaseWaitProgressMonitor.currentProgressMonitor.showForegroundDialog();
         }
         super.execute(command);
     }
diff --git a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java
similarity index 87%
rename from src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
rename to src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java
index 15cff96..dac21b0 100644
--- a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/swing/SwingRenderingProgressMonitor.java
@@ -1,9 +1,13 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.progress;
+package org.openstreetmap.josm.gui.progress.swing;
 
 import java.awt.Component;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;
+import org.openstreetmap.josm.gui.progress.CancelHandler;
+import org.openstreetmap.josm.gui.progress.ProgressRenderer;
+import org.openstreetmap.josm.gui.progress.ProgressTaskId;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -11,7 +15,7 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  * SwingRenderingProgressMonitor is progress monitor which delegates the rendering
  * of progress information to a {@link ProgressRenderer}.
  * Methods of the progress renderer are always called on the Swing EDT.
- *
+ * @since 12675 (moved from {@code gui.progress} package}
  */
 public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
     private static final int PROGRESS_BAR_MAX = 100;
diff --git a/src/org/openstreetmap/josm/gui/progress/swing/package-info.java b/src/org/openstreetmap/josm/gui/progress/swing/package-info.java
new file mode 100644
index 0000000..86a9f01
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/progress/swing/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides Swing-based progress monitor implementations.
+ */
+package org.openstreetmap.josm.gui.progress.swing;
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagTable.java b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
index 3aa487b..56b179b 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagTable.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
@@ -26,7 +26,6 @@ import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.TagMap;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
@@ -35,6 +34,7 @@ import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.gui.widgets.JosmTable;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is the tabular editor component for OSM tags.
@@ -420,8 +420,8 @@ public class TagTable extends JosmTable implements EndEditListener {
      */
     public void setAutoCompletionManager(AutoCompletionManager autocomplete) {
         if (autocomplete == null) {
-            Main.warn("argument autocomplete should not be null. Aborting.");
-            Thread.dumpStack();
+            Logging.warn("argument autocomplete should not be null. Aborting.");
+            Logging.error(new Exception());
             return;
         }
         if (editor != null) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
index b0ddcf1..11a3164 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
@@ -23,8 +23,11 @@ import javax.swing.text.PlainDocument;
 import javax.swing.text.StyleConstants;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Auto-completing ComboBox.
@@ -49,15 +52,17 @@ public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem>
 
         @Override
         public void focusLost(FocusEvent e) {
-            if (Main.map != null) {
-                Main.map.keyDetector.setEnabled(true);
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.keyDetector.setEnabled(true);
             }
         }
 
         @Override
         public void focusGained(FocusEvent e) {
-            if (Main.map != null) {
-                Main.map.keyDetector.setEnabled(false);
+            MapFrame map = MainApplication.getMap();
+            if (map != null) {
+                map.keyDetector.setEnabled(false);
             }
             // save unix system selection (middle mouse paste)
             Clipboard sysSel = ClipboardUtils.getSystemSelection();
@@ -326,15 +331,15 @@ public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem>
         useFixedLocale = f;
         if (useFixedLocale) {
             Locale oldLocale = privateInputContext.getLocale();
-            Main.info("Using English input method");
+            Logging.info("Using English input method");
             if (!privateInputContext.selectInputMethod(new Locale("en", "US"))) {
                 // Unable to use English keyboard layout, disable the feature
-                Main.warn("Unable to use English input method");
+                Logging.warn("Unable to use English input method");
                 useFixedLocale = false;
                 if (oldLocale != null) {
-                    Main.info("Restoring input method to " + oldLocale);
+                    Logging.info("Restoring input method to " + oldLocale);
                     if (!privateInputContext.selectInputMethod(oldLocale)) {
-                        Main.warn("Unable to restore input method to " + oldLocale);
+                        Logging.warn("Unable to restore input method to " + oldLocale);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
index 2f63d26..44010ec 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
@@ -22,6 +22,7 @@ import javax.swing.text.StyleConstants;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.CellEditorSupport;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * AutoCompletingTextField is a text field with autocompletion behaviour. It
@@ -90,7 +91,7 @@ public class AutoCompletingTextField extends JosmTextField implements ComboBoxEd
                     return;
                 } catch (NumberFormatException e) {
                     // either the new text or the current text isn't a number. We continue with autocompletion
-                    Main.trace(e);
+                    Logging.trace(e);
                 }
             }
             String prefix = currentText.substring(0, offs);
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
index 0c5f587..f412846 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
@@ -33,8 +33,6 @@ import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AdaptableAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -43,7 +41,11 @@ 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.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -59,6 +61,7 @@ import org.openstreetmap.josm.gui.tagging.presets.items.Space;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
 import org.openstreetmap.josm.tools.template_engine.TemplateEntry;
@@ -126,7 +129,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
      * Use this as default item for "do not select anything".
      */
     public TaggingPreset() {
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
         updateEnabledState();
     }
 
@@ -216,7 +219,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
             if (result != null) {
                 GuiHelper.runInEDT(() -> result.attachImageIcon(this));
             } else {
-                Main.warn(toString() + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
+                Logging.warn(toString() + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
             }
         });
     }
@@ -235,7 +238,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
         try {
             this.nameTemplate = new TemplateParser(pattern).parse();
         } catch (ParseError e) {
-            Main.error("Error while parsing " + pattern + ": " + e.getMessage());
+            Logging.error("Error while parsing " + pattern + ": " + e.getMessage());
             throw new SAXException(e);
         }
     }
@@ -243,8 +246,8 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
     public void setName_template_filter(String filter) throws SAXException {
         try {
             this.nameTemplateFilter = SearchCompiler.compile(filter);
-        } catch (SearchCompiler.ParseError e) {
-            Main.error("Error while parsing" + filter + ": " + e.getMessage());
+        } catch (SearchParseError e) {
+            Logging.error("Error while parsing" + filter + ": " + e.getMessage());
             throw new SAXException(e);
         }
     }
@@ -378,9 +381,9 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
         if (Main.main == null) {
             return;
         }
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         Collection<OsmPrimitive> participants = Collections.emptyList();
-        if (Main.main != null && ds != null) {
+        if (ds != null) {
             participants = ds.getSelected();
         }
 
@@ -395,7 +398,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
         if (!sel.isEmpty() && answer == DIALOG_ANSWER_APPLY) {
             Command cmd = createCommand(sel, getChangedTags());
             if (cmd != null) {
-                Main.main.undoRedo.add(cmd);
+                MainApplication.undoRedo.add(cmd);
             }
         } else if (answer == DIALOG_ANSWER_NEW_RELATION) {
             final Relation r = new Relation();
@@ -409,7 +412,8 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
                 r.addMember(rm);
                 members.add(rm);
             }
-            SwingUtilities.invokeLater(() -> RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), r, members).setVisible(true));
+            SwingUtilities.invokeLater(() -> RelationEditor.getEditor(
+                    MainApplication.getLayerManager().getEditLayer(), r, members).setVisible(true));
         }
         ds.setSelected(ds.getSelected()); // force update
     }
@@ -551,7 +555,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
     }
 
     protected final void updateEnabledState() {
-        setEnabled(Main.main != null && Main.getLayerManager().getEditDataSet() != null);
+        setEnabled(Main.main != null && Main.main.getEditDataSet() != null);
     }
 
     @Override
@@ -621,7 +625,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
         @Override
         public void actionPerformed(ActionEvent ae) {
             String res = getToolbarString();
-            Main.toolbar.addCustomButton(res, toolbarIndex, true);
+            MainApplication.getToolbar().addCustomButton(res, toolbarIndex, true);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
index 7617e86..97e808c 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
@@ -19,10 +19,12 @@ import javax.swing.JPanel;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -40,7 +42,7 @@ public abstract class TaggingPresetItem {
 
     protected void initAutoCompletionField(AutoCompletingTextField field, List<String> keys) {
         if (Main.main == null) return;
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         if (layer == null) {
             return;
         }
@@ -118,7 +120,7 @@ public abstract class TaggingPresetItem {
         try {
             return Integer.valueOf(str);
         } catch (NumberFormatException e) {
-            Main.trace(e);
+            Logging.trace(e);
         }
         return null;
     }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
index e0fadf2..2c225f5 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
@@ -10,6 +10,12 @@ import java.util.Collections;
 
 import javax.swing.JLabel;
 
+/**
+ * A hyperlink {@link JLabel}.
+ * 
+ * To indicate that the user can click on the text, it displays an appropriate
+ * mouse cursor and dotted underline when the mouse is inside the hover area.
+ */
 public class TaggingPresetLabel extends JLabel {
 
     protected final TaggingPreset t;
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
index 5975bff..eb3c2c7 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
@@ -21,17 +21,23 @@ import javax.swing.JPopupMenu;
 import javax.swing.JSeparator;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 
+/**
+ * Menu that groups several presets from one topic.
+ * <p>
+ * Used, to create the nested directory structure in the preset main menu entry.
+ */
 public class TaggingPresetMenu extends TaggingPreset {
     public JMenu menu; // set by TaggingPresets
 
     private static class PresetTextComparator implements Comparator<JMenuItem>, Serializable {
         @Override
         public int compare(JMenuItem o1, JMenuItem o2) {
-            if (Main.main.menu.presetSearchAction.equals(o1.getAction()))
+            if (MainApplication.getMenu().presetSearchAction.equals(o1.getAction()))
                 return -1;
-            else if (Main.main.menu.presetSearchAction.equals(o2.getAction()))
+            else if (MainApplication.getMenu().presetSearchAction.equals(o2.getAction()))
                 return 1;
             else
                 return AlphanumComparator.getInstance().compare(o1.getText(), o2.getText());
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
index 231359d..a4cb9c5 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
@@ -6,8 +6,8 @@ import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * List of tagging presets with name templates, allows to find appropriate template based on existing primitive
@@ -36,7 +36,7 @@ public final class TaggingPresetNameTemplateList implements TaggingPresetListene
 
     private void buildPresetsWithPattern() {
         synchronized (this) {
-            Main.debug("Building list of presets with name template");
+            Logging.debug("Building list of presets with name template");
             presetsWithPattern.clear();
             for (TaggingPreset tp : TaggingPresets.getTaggingPresets()) {
                 if (tp.nameTemplate != null) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
index cef4ed9..d7fd3a2 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
@@ -24,7 +24,7 @@ import java.util.Set;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
+import org.openstreetmap.josm.data.preferences.sources.PresetPrefHelper;
 import org.openstreetmap.josm.gui.tagging.presets.items.Check;
 import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
 import org.openstreetmap.josm.gui.tagging.presets.items.Combo;
@@ -42,6 +42,7 @@ import org.openstreetmap.josm.gui.tagging.presets.items.Space;
 import org.openstreetmap.josm.gui.tagging.presets.items.Text;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.xml.sax.SAXException;
@@ -101,7 +102,7 @@ public final class TaggingPresetReader {
      * @return The set of preset source URLs.
      */
     public static Set<String> getPresetSources() {
-        return new TaggingPresetPreference.PresetPrefHelper().getActiveUrls();
+        return new PresetPrefHelper().getActiveUrls();
     }
 
     private static XmlObjectParser buildParser() {
@@ -209,7 +210,7 @@ public final class TaggingPresetReader {
                 if (it.hasNext()) {
                     lastIdIterators.push(it);
                 } else {
-                    Main.warn("Ignoring reference '"+ref+"' denoting an empty chunk");
+                    Logging.warn("Ignoring reference '"+ref+"' denoting an empty chunk");
                 }
                 continue;
             }
@@ -359,8 +360,8 @@ public final class TaggingPresetReader {
             try {
                 readAll(source, validate, allPresets);
             } catch (IOException e) {
-                Main.error(e, false);
-                Main.error(source);
+                Logging.log(Logging.LEVEL_ERROR, e);
+                Logging.error(source);
                 if (source.startsWith("http")) {
                     Main.addNetworkError(source, e);
                 }
@@ -373,8 +374,8 @@ public final class TaggingPresetReader {
                             );
                 }
             } catch (SAXException | IllegalArgumentException e) {
-                Main.error(e);
-                Main.error(source);
+                Logging.error(e);
+                Logging.error(source);
                 JOptionPane.showMessageDialog(
                         Main.parent,
                         "<html>" + tr("Error parsing {0}: ", source) + "<br><br><table width=600>" +
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
index 8014d02..5271353 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
@@ -6,8 +6,8 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -23,13 +23,13 @@ public class TaggingPresetSearchAction extends JosmAction {
         super(tr("Search preset"), "dialogs/search", tr("Show preset search dialog"),
                 Shortcut.registerShortcut("preset:search", tr("Search presets"), KeyEvent.VK_F3, Shortcut.DIRECT), false);
         putValue("toolbar", "presets/search");
-        Main.toolbar.register(this);
+        MainApplication.getToolbar().register(this);
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
 
-        if (Main.getLayerManager().getEditLayer() == null)
+        if (MainApplication.getLayerManager().getEditLayer() == null)
             return;
 
         TaggingPresetSearchDialog.getInstance().showDialog();
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
index 0439186..9b2b965 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
@@ -12,6 +12,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -37,12 +38,12 @@ public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
                     Shortcut.registerShortcut("preset:search-objects", tr("Search for objects by preset"), KeyEvent.VK_F3, Shortcut.SHIFT),
                     false);
             putValue("toolbar", "presets/search-objects");
-            Main.toolbar.register(this);
+            MainApplication.getToolbar().register(this);
         }
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() != null) {
+            if (MainApplication.getLayerManager().getEditLayer() != null) {
                 TaggingPresetSearchPrimitiveDialog.getInstance().showDialog();
             }
         }
@@ -85,8 +86,8 @@ public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
         if (buttonIndex == 0) {
             TaggingPreset preset = selector.getSelectedPresetAndUpdateClassification();
             if (preset != null) {
-                final Set<OsmPrimitive> matching = new HashSet<>(Main.getLayerManager().getEditDataSet().getPrimitives(preset));
-                Main.getLayerManager().getEditDataSet().setSelected(matching);
+                final Set<OsmPrimitive> matching = new HashSet<>(Main.main.getEditDataSet().getPrimitives(preset));
+                Main.main.getEditDataSet().setSelected(matching);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
index 855624d..fe2b2e3 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
@@ -37,6 +37,7 @@ import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.tagging.presets.items.ComboMultiSelect;
 import org.openstreetmap.josm.gui.tagging.presets.items.Key;
 import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
@@ -217,7 +218,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             public void actionPerformed(ActionEvent ae) {
                 final TaggingPreset preset = getSelectedPreset();
                 if (preset != null) {
-                    Main.toolbar.addCustomButton(preset.getToolbarString(), -1, false);
+                    MainApplication.getToolbar().addCustomButton(preset.getToolbarString(), -1, false);
                 }
             }
         });
@@ -234,7 +235,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
         boolean onlyApplicable = ckOnlyApplicable != null && ckOnlyApplicable.isSelected();
         boolean inTags = ckSearchInTags != null && ckSearchInTags.isSelected();
 
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = Main.main.getEditDataSet();
         Collection<OsmPrimitive> selected = (ds == null) ? Collections.<OsmPrimitive>emptyList() : ds.getSelected();
         final List<PresetClassification> result = classifications.getMatchingPresets(
                 text, onlyApplicable, inTags, getTypesInSelection(), selected);
@@ -354,8 +355,8 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             synchronized (typesInSelection) {
                 typesInSelectionDirty = false;
                 typesInSelection.clear();
-                if (Main.main == null || Main.getLayerManager().getEditDataSet() == null) return typesInSelection;
-                for (OsmPrimitive primitive : Main.getLayerManager().getEditDataSet().getSelected()) {
+                if (Main.main == null || Main.main.getEditDataSet() == null) return typesInSelection;
+                for (OsmPrimitive primitive : Main.main.getEditDataSet().getSelected()) {
                     typesInSelection.add(TaggingPresetType.forPrimitive(primitive));
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
index d2f4400..8f5a9a0 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
@@ -15,11 +15,13 @@ import javax.swing.JSeparator;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
 import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
 import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
 import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
@@ -60,19 +62,19 @@ public final class TaggingPresets {
         readFromPreferences();
         for (TaggingPreset tp: taggingPresets) {
             if (!(tp instanceof TaggingPresetSeparator)) {
-                Main.toolbar.register(tp);
+                MainApplication.getToolbar().register(tp);
             }
         }
         if (taggingPresets.isEmpty()) {
-            Main.main.menu.presetsMenu.setVisible(false);
+            MainApplication.getMenu().presetsMenu.setVisible(false);
         } else {
             Map<TaggingPresetMenu, JMenu> submenus = new HashMap<>();
             for (final TaggingPreset p : taggingPresets) {
-                JMenu m = p.group != null ? submenus.get(p.group) : Main.main.menu.presetsMenu;
+                JMenu m = p.group != null ? submenus.get(p.group) : MainApplication.getMenu().presetsMenu;
                 if (m == null && p.group != null) {
-                    Main.error("No tagging preset submenu for " + p.group);
+                    Logging.error("No tagging preset submenu for " + p.group);
                 } else if (m == null) {
-                    Main.error("No tagging preset menu. Tagging preset " + p + " won't be available there");
+                    Logging.error("No tagging preset menu. Tagging preset " + p + " won't be available there");
                 } else if (p instanceof TaggingPresetSeparator) {
                     m.add(new JSeparator());
                 } else if (p instanceof TaggingPresetMenu) {
@@ -94,7 +96,7 @@ public final class TaggingPresets {
             }
         }
         if (Main.pref.getBoolean("taggingpreset.sortmenu")) {
-            TaggingPresetMenu.sortMenu(Main.main.menu.presetsMenu);
+            TaggingPresetMenu.sortMenu(MainApplication.getMenu().presetsMenu);
         }
     }
 
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 dbad0ab..bb23e46 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
@@ -37,6 +37,7 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -396,17 +397,17 @@ public abstract class ComboMultiSelect extends KeyedItem {
             initListEntriesFromAttributes();
         } else {
             if (values != null) {
-                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                Logging.warn(tr("Warning in tagging preset \"{0}-{1}\": "
                         + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
                         key, text, "values", "list_entry"));
             }
             if (display_values != null || locale_display_values != null) {
-                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                Logging.warn(tr("Warning in tagging preset \"{0}-{1}\": "
                         + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
                         key, text, "display_values", "list_entry"));
             }
             if (short_descriptions != null || locale_short_descriptions != null) {
-                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                Logging.warn(tr("Warning in tagging preset \"{0}-{1}\": "
                         + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
                         key, text, "short_descriptions", "list_entry"));
             }
@@ -438,13 +439,13 @@ public abstract class ComboMultiSelect extends KeyedItem {
                             && method.getReturnType().equals(String[].class) && method.getParameterTypes().length == 0) {
                         valueArray = (String[]) method.invoke(null);
                     } else {
-                        Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is not \"{2}\"", key, text,
+                        Logging.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is not \"{2}\"", key, text,
                                 "public static String[] methodName()"));
                     }
                 } catch (ReflectiveOperationException e) {
-                    Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' threw {2} ({3})", key, text,
+                    Logging.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' threw {2} ({3})", key, text,
                             e.getClass().getName(), e.getMessage()));
-                    Main.debug(e);
+                    Logging.debug(e);
                 }
             }
         }
@@ -463,16 +464,16 @@ public abstract class ComboMultiSelect extends KeyedItem {
         String[] shortDescriptionsArray = descr == null ? null : splitEscaped(delChar, descr);
 
         if (displayArray.length != valueArray.length) {
-            Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''",
+            Logging.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''",
                             key, text));
-            Main.error(tr("Detailed information: {0} <> {1}", Arrays.toString(displayArray), Arrays.toString(valueArray)));
+            Logging.error(tr("Detailed information: {0} <> {1}", Arrays.toString(displayArray), Arrays.toString(valueArray)));
             displayArray = valueArray;
         }
 
         if (shortDescriptionsArray != null && shortDescriptionsArray.length != valueArray.length) {
-            Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''",
+            Logging.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''",
                             key, text));
-            Main.error(tr("Detailed information: {0} <> {1}", Arrays.toString(shortDescriptionsArray), Arrays.toString(valueArray)));
+            Logging.error(tr("Detailed information: {0} <> {1}", Arrays.toString(shortDescriptionsArray), Arrays.toString(valueArray)));
             shortDescriptionsArray = null;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java
index a91e9c6..3f5e60c 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java
@@ -12,18 +12,32 @@ import java.util.Set;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.xml.sax.SAXException;
 
+/**
+ * The <code>roles</code> element in tagging presets definition.
+ * <p>
+ * A list of {@link Role} elements. Describes the roles that are expected for
+ * the members of a relation.
+ * <p>
+ * Used for data validation, auto completion, among others.
+ */
 public class Roles extends TaggingPresetItem {
 
+    /**
+     * The <code>role</code> element in tagging preset definition.
+     * 
+     * Information on a certain role, which is expected for the relation members.
+     */
     public static class Role {
         public Set<TaggingPresetType> types; // NOSONAR
         /** Role name used in a relation */
@@ -63,12 +77,12 @@ public class Roles extends TaggingPresetItem {
 
         public void setMember_expression(String memberExpression) throws SAXException {
             try {
-                final SearchAction.SearchSetting searchSetting = new SearchAction.SearchSetting();
+                final SearchSetting searchSetting = new SearchSetting();
                 searchSetting.text = memberExpression;
                 searchSetting.caseSensitive = true;
                 searchSetting.regexSearch = true;
                 this.memberExpression = SearchCompiler.compile(searchSetting);
-            } catch (SearchCompiler.ParseError ex) {
+            } catch (SearchParseError ex) {
                 throw new SAXException(tr("Illegal member expression: {0}", ex.getMessage()), ex);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
index 6f56332..8145da1 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Text field type.
@@ -83,7 +84,7 @@ public class Text extends KeyedItem {
                             LAST_VALUES.get(key)) + auto_increment_selected));
                 } catch (NumberFormatException ex) {
                     // Ignore - cannot auto-increment if last was non-numeric
-                    Main.trace(ex);
+                    Logging.trace(ex);
                 }
             } else if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
                 // selected osm primitives are untagged or filling default values feature is enabled
@@ -141,7 +142,7 @@ public class Text extends KeyedItem {
                     aibutton.addActionListener(e -> auto_increment_selected = buttonvalue);
                     pnl.add(aibutton, GBC.std());
                 } catch (ParseException ex) {
-                    Main.error("Cannot parse auto-increment value of '" + ai + "' into an integer");
+                    Logging.error("Cannot parse auto-increment value of '" + ai + "' into an integer");
                 }
             }
 
@@ -201,7 +202,7 @@ public class Text extends KeyedItem {
         // return if unchanged
         String v = getValue(value);
         if (v == null) {
-            Main.error("No 'last value' support for component " + value);
+            Logging.error("No 'last value' support for component " + value);
             return;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
index 3fd3779..aaf570c 100644
--- a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
+++ b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
@@ -18,8 +18,8 @@ import javax.swing.JFrame;
 import javax.swing.SwingUtilities;
 import javax.swing.Timer;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Helper object that allows cross-platform detection of key press and release events
@@ -107,7 +107,7 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
         try {
             Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
         } catch (SecurityException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
         }
         timer = new Timer(0, e -> {
             timer.stop();
@@ -129,33 +129,32 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
         }
         set.clear();
         if (!keyListeners.isEmpty()) {
-            Main.warn(tr("Some of the key listeners forgot to remove themselves: {0}"), keyListeners.toString());
+            Logging.warn(tr("Some of the key listeners forgot to remove themselves: {0}"), keyListeners.toString());
         }
         if (!modifierListeners.isEmpty()) {
-            Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierListeners.toString());
+            Logging.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierListeners.toString());
         }
         if (modifierExListeners.hasListeners()) {
-            Main.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierExListeners.toString());
+            Logging.warn(tr("Some of the key modifier listeners forgot to remove themselves: {0}"), modifierExListeners.toString());
         }
         try {
             Toolkit.getDefaultToolkit().removeAWTEventListener(this);
         } catch (SecurityException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
         }
     }
 
     private void processKeyEvent(KeyEvent e) {
-        if (Main.isTraceEnabled()) {
-            Main.trace("AdvancedKeyPressDetector enabled="+enabled+" => processKeyEvent("+e+") from "+new Exception().getStackTrace()[2]);
+        if (Logging.isTraceEnabled()) {
+            Logging.trace("AdvancedKeyPressDetector enabled={0} => processKeyEvent({1}) from {2}",
+                    enabled, e, new Exception().getStackTrace()[2]);
         }
         if (e.getID() == KeyEvent.KEY_PRESSED) {
             if (timer.isRunning()) {
                 timer.stop();
             } else if (set.add(e.getKeyCode()) && enabled && isFocusInMainWindow()) {
                 for (KeyPressReleaseListener q: keyListeners) {
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(q+" => doKeyPressed("+e+')');
-                    }
+                    Logging.trace("{0} => doKeyPressed({1})", q, e);
                     q.doKeyPressed(e);
                 }
             }
@@ -164,9 +163,7 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
                 timer.stop();
                 if (set.remove(e.getKeyCode()) && enabled && isFocusInMainWindow()) {
                     for (KeyPressReleaseListener q: keyListeners) {
-                        if (Main.isTraceEnabled()) {
-                            Main.trace(q+" => doKeyReleased("+e+')');
-                        }
+                        Logging.trace("{0} => doKeyReleased({1})", q, e);
                         q.doKeyReleased(e);
                     }
                 }
@@ -221,8 +218,8 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
      */
     public final void setEnabled(boolean enabled) {
         this.enabled = enabled;
-        if (Main.isTraceEnabled()) {
-            Main.trace("AdvancedKeyPressDetector enabled="+enabled+" from "+new Exception().getStackTrace()[1]);
+        if (Logging.isTraceEnabled()) {
+            Logging.trace("AdvancedKeyPressDetector enabled={0} from {1}", enabled, new Exception().getStackTrace()[1]);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/util/GuiHelper.java b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
index bbe4575..fff61c9 100644
--- a/src/org/openstreetmap/josm/gui/util/GuiHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
@@ -25,15 +25,20 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.image.FilteredImageSource;
 import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Enumeration;
 import java.util.EventObject;
+import java.util.Locale;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.FutureTask;
 
 import javax.swing.GrayFilter;
 import javax.swing.ImageIcon;
+import javax.swing.JColorChooser;
 import javax.swing.JComponent;
+import javax.swing.JFileChooser;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
@@ -49,6 +54,8 @@ import javax.swing.plaf.FontUIResource;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ColorHelper;
@@ -57,6 +64,7 @@ import org.openstreetmap.josm.tools.ImageOverlay;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 import org.openstreetmap.josm.tools.bugreport.ReportedException;
 
@@ -65,6 +73,92 @@ import org.openstreetmap.josm.tools.bugreport.ReportedException;
  */
 public final class GuiHelper {
 
+    /* Localization keys for file chooser (and color chooser). */
+    private static final String[] JAVA_INTERNAL_MESSAGE_KEYS = new String[] {
+        /* JFileChooser windows laf */
+        "FileChooser.detailsViewActionLabelText",
+        "FileChooser.detailsViewButtonAccessibleName",
+        "FileChooser.detailsViewButtonToolTipText",
+        "FileChooser.fileAttrHeaderText",
+        "FileChooser.fileDateHeaderText",
+        "FileChooser.fileNameHeaderText",
+        "FileChooser.fileNameLabelText",
+        "FileChooser.fileSizeHeaderText",
+        "FileChooser.fileTypeHeaderText",
+        "FileChooser.filesOfTypeLabelText",
+        "FileChooser.homeFolderAccessibleName",
+        "FileChooser.homeFolderToolTipText",
+        "FileChooser.listViewActionLabelText",
+        "FileChooser.listViewButtonAccessibleName",
+        "FileChooser.listViewButtonToolTipText",
+        "FileChooser.lookInLabelText",
+        "FileChooser.newFolderAccessibleName",
+        "FileChooser.newFolderActionLabelText",
+        "FileChooser.newFolderToolTipText",
+        "FileChooser.refreshActionLabelText",
+        "FileChooser.saveInLabelText",
+        "FileChooser.upFolderAccessibleName",
+        "FileChooser.upFolderToolTipText",
+        "FileChooser.viewMenuLabelText",
+
+        /* JFileChooser gtk laf */
+        "FileChooser.acceptAllFileFilterText",
+        "FileChooser.cancelButtonText",
+        "FileChooser.cancelButtonToolTipText",
+        "FileChooser.deleteFileButtonText",
+        "FileChooser.filesLabelText",
+        "FileChooser.filterLabelText",
+        "FileChooser.foldersLabelText",
+        "FileChooser.newFolderButtonText",
+        "FileChooser.newFolderDialogText",
+        "FileChooser.openButtonText",
+        "FileChooser.openButtonToolTipText",
+        "FileChooser.openDialogTitleText",
+        "FileChooser.pathLabelText",
+        "FileChooser.renameFileButtonText",
+        "FileChooser.renameFileDialogText",
+        "FileChooser.renameFileErrorText",
+        "FileChooser.renameFileErrorTitle",
+        "FileChooser.saveButtonText",
+        "FileChooser.saveButtonToolTipText",
+        "FileChooser.saveDialogTitleText",
+
+        /* JFileChooser motif laf */
+        //"FileChooser.cancelButtonText",
+        //"FileChooser.cancelButtonToolTipText",
+        "FileChooser.enterFileNameLabelText",
+        //"FileChooser.filesLabelText",
+        //"FileChooser.filterLabelText",
+        //"FileChooser.foldersLabelText",
+        "FileChooser.helpButtonText",
+        "FileChooser.helpButtonToolTipText",
+        //"FileChooser.openButtonText",
+        //"FileChooser.openButtonToolTipText",
+        //"FileChooser.openDialogTitleText",
+        //"FileChooser.pathLabelText",
+        //"FileChooser.saveButtonText",
+        //"FileChooser.saveButtonToolTipText",
+        //"FileChooser.saveDialogTitleText",
+        "FileChooser.updateButtonText",
+        "FileChooser.updateButtonToolTipText",
+
+        /* gtk color chooser */
+        "GTKColorChooserPanel.blueText",
+        "GTKColorChooserPanel.colorNameText",
+        "GTKColorChooserPanel.greenText",
+        "GTKColorChooserPanel.hueText",
+        "GTKColorChooserPanel.nameText",
+        "GTKColorChooserPanel.redText",
+        "GTKColorChooserPanel.saturationText",
+        "GTKColorChooserPanel.valueText",
+
+        /* JOptionPane */
+        "OptionPane.okButtonText",
+        "OptionPane.yesButtonText",
+        "OptionPane.noButtonText",
+        "OptionPane.cancelButtonText"
+    };
+
     private GuiHelper() {
         // Hide default constructor for utils classes
     }
@@ -91,7 +185,7 @@ public final class GuiHelper {
      * @param task The task to run
      */
     public static void executeByMainWorkerInEDT(final Runnable task) {
-        Main.worker.submit(() -> runInEDTAndWait(task));
+        MainApplication.worker.submit(() -> runInEDTAndWait(task));
     }
 
     /**
@@ -121,7 +215,7 @@ public final class GuiHelper {
             try {
                 SwingUtilities.invokeAndWait(task);
             } catch (InterruptedException | InvocationTargetException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
@@ -162,7 +256,7 @@ public final class GuiHelper {
             try {
                 return callable.call();
             } catch (Exception e) { // NOPMD
-                Main.error(e);
+                Logging.error(e);
                 return null;
             }
         } else {
@@ -171,7 +265,7 @@ public final class GuiHelper {
             try {
                 return task.get();
             } catch (InterruptedException | ExecutionException e) {
-                Main.error(e);
+                Logging.error(e);
                 return null;
             }
         }
@@ -388,7 +482,7 @@ public final class GuiHelper {
      */
     public static void setUIFont(String name) {
         CheckParameterUtil.ensureParameterNotNull(name, "name");
-        Main.info("Setting "+name+" as the default UI font");
+        Logging.info("Setting "+name+" as the default UI font");
         Enumeration<?> keys = UIManager.getDefaults().keys();
         while (keys.hasMoreElements()) {
             Object key = keys.nextElement();
@@ -519,8 +613,49 @@ public final class GuiHelper {
         try {
             return JOptionPane.getFrameForComponent(parentComponent);
         } catch (HeadlessException e) {
-            Main.debug(e);
+            Logging.debug(e);
             return null;
         }
     }
+
+    /**
+     * Localizations for file chooser dialog.
+     * For some locales (e.g. de, fr) translations are provided
+     * by Java, but not for others (e.g. ru, uk).
+     * @since 12644 (moved from I18n)
+     */
+    public static void translateJavaInternalMessages() {
+        Locale l = Locale.getDefault();
+
+        AbstractFileChooser.setDefaultLocale(l);
+        JFileChooser.setDefaultLocale(l);
+        JColorChooser.setDefaultLocale(l);
+        for (String key : JAVA_INTERNAL_MESSAGE_KEYS) {
+            String us = UIManager.getString(key, Locale.US);
+            String loc = UIManager.getString(key, l);
+            // only provide custom translation if it is not already localized by Java
+            if (us != null && us.equals(loc)) {
+                UIManager.put(key, tr(us));
+            }
+        }
+    }
+
+    /**
+     * Setup special font for Khmer script, as the default Java fonts do not display these characters.
+     * @since 12644 (moved from I18n)
+     * @since 8282
+     */
+    public static void setupLanguageFonts() {
+        // Use special font for Khmer script, as the default Java font do not display these characters
+        if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
+            Collection<String> fonts = Arrays.asList(
+                    GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
+            for (String f : new String[]{"Khmer UI", "DaunPenh", "MoolBoran"}) {
+                if (fonts.contains(f)) {
+                    setUIFont(f);
+                    break;
+                }
+            }
+        }
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/util/HighlightHelper.java b/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
index 494e460..933c264 100644
--- a/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
@@ -7,10 +7,10 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
-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;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * This class stores the set of highlighted primitives and
@@ -121,7 +121,7 @@ public class HighlightHelper {
      * Slow method to import all currently highlighted primitives into this instance
      */
     public void findAllHighlighted() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             highlightedPrimitives.addAll(ds.allNonDeletedPrimitives());
         }
@@ -131,7 +131,7 @@ public class HighlightHelper {
      * Slow method to remove highlights from all primitives
      */
     public static void clearAllHighlighted() {
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         if (ds != null) {
             for (OsmPrimitive p: ds.allNonDeletedPrimitives()) {
                 p.setHighlighted(false);
diff --git a/src/org/openstreetmap/josm/tools/WindowGeometry.java b/src/org/openstreetmap/josm/gui/util/WindowGeometry.java
similarity index 98%
rename from src/org/openstreetmap/josm/tools/WindowGeometry.java
rename to src/org/openstreetmap/josm/gui/util/WindowGeometry.java
index e096573..6d44715 100644
--- a/src/org/openstreetmap/josm/tools/WindowGeometry.java
+++ b/src/org/openstreetmap/josm/gui/util/WindowGeometry.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools;
+package org.openstreetmap.josm.gui.util;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -19,11 +19,14 @@ import java.util.regex.Pattern;
 import javax.swing.JComponent;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is a helper class for persisting the geometry of a JOSM window to the preference store
  * and for restoring it from the preference store.
+ * @since 12678 (moved from {@code tools} package
  * @since 2008
  */
 public class WindowGeometry {
@@ -88,7 +91,7 @@ public class WindowGeometry {
         try {
             initFromPreferences(preferenceKey);
         } catch (WindowGeometryException e) {
-            Main.debug(e);
+            Logging.debug(e);
             initFromWindowGeometry(defaultGeometry);
         }
     }
@@ -247,7 +250,7 @@ public class WindowGeometry {
                 }
                 return new WindowGeometry(new Point(x, y), new Dimension(w, h));
             } else {
-                Main.warn(tr("Ignoring malformed geometry: {0}", arg));
+                Logging.warn(tr("Ignoring malformed geometry: {0}", arg));
             }
         }
         WindowGeometry def;
diff --git a/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
index cc73b7d..536ee62 100644
--- a/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
@@ -3,8 +3,8 @@ package org.openstreetmap.josm.gui.widgets;
 
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * An abstract class for ID text fields.
@@ -38,7 +38,7 @@ public abstract class AbstractIdTextField<T extends AbstractTextComponentValidat
                 validator = klass.getConstructor(JTextComponent.class).newInstance(this);
             }
         } catch (ReflectiveOperationException e) {
-            Main.error(e);
+            Logging.error(e);
         } finally {
             this.validator = validator;
         }
diff --git a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
index b2c806c..cc672e8 100644
--- a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
@@ -5,7 +5,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A text field designed to enter a single OSM changeset ID.
@@ -83,7 +83,7 @@ public class ChangesetIdTextField extends AbstractIdTextField<ChangesetIdTextFie
                     }
                 } catch (NumberFormatException e) {
                     // Ignored
-                    Main.trace(e);
+                    Logging.trace(e);
                 }
             }
             return false;
diff --git a/src/org/openstreetmap/josm/gui/widgets/CompileSearchTextDecorator.java b/src/org/openstreetmap/josm/gui/widgets/CompileSearchTextDecorator.java
index 5696a38..a1d9f92 100644
--- a/src/org/openstreetmap/josm/gui/widgets/CompileSearchTextDecorator.java
+++ b/src/org/openstreetmap/josm/gui/widgets/CompileSearchTextDecorator.java
@@ -8,8 +8,9 @@ import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Decorates a text component with an execution to the search compiler. Afterwards, a {@code "filter"} property change
@@ -42,11 +43,11 @@ public final class CompileSearchTextDecorator implements DocumentListener {
             textComponent.setBackground(UIManager.getColor("TextField.background"));
             textComponent.setToolTipText(originalToolTipText);
             filter = SearchCompiler.compile(textComponent.getText());
-        } catch (SearchCompiler.ParseError ex) {
+        } catch (SearchParseError ex) {
             textComponent.setBackground(new Color(255, 224, 224));
             textComponent.setToolTipText(ex.getMessage());
             filter = SearchCompiler.Always.INSTANCE;
-            Main.debug(ex);
+            Logging.debug(ex);
         }
         textComponent.firePropertyChange("filter", 0, 1);
     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java b/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
index 77cc41c..6e8bd26 100644
--- a/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
@@ -14,8 +14,8 @@ import javax.swing.JMenuItem;
 import javax.swing.KeyStroke;
 import javax.swing.text.Document;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -113,8 +113,8 @@ public class DisableShortcutsOnFocusGainedTextField extends JosmTextField {
      */
     protected void disableMenuActions() {
         disabledMenuActions.clear();
-        for (int i = 0; i < Main.main.menu.getMenuCount(); i++) {
-            JMenu menu = Main.main.menu.getMenu(i);
+        for (int i = 0; i < MainApplication.getMenu().getMenuCount(); i++) {
+            JMenu menu = MainApplication.getMenu().getMenu(i);
             if (menu != null) {
                 for (int j = 0; j < menu.getItemCount(); j++) {
                     JMenuItem item = menu.getItem(j);
@@ -146,9 +146,9 @@ public class DisableShortcutsOnFocusGainedTextField extends JosmTextField {
         for (Shortcut shortcut : Shortcut.listAll()) {
             KeyStroke ks = shortcut.getKeyStroke();
             if (hasToBeDisabled(ks)) {
-                Action action = Main.getRegisteredActionShortcut(shortcut);
+                Action action = MainApplication.getRegisteredActionShortcut(shortcut);
                 if (action != null) {
-                    Main.unregisterActionShortcut(action, shortcut);
+                    MainApplication.unregisterActionShortcut(action, shortcut);
                     unregisteredActionShortcuts.add(new Pair<>(action, shortcut));
                 }
             }
@@ -181,7 +181,7 @@ public class DisableShortcutsOnFocusGainedTextField extends JosmTextField {
      */
     protected void restoreActionShortcuts() {
         for (Pair<Action, Shortcut> p : unregisteredActionShortcuts) {
-            Main.registerActionShortcut(p.a, p.b);
+            MainApplication.registerActionShortcut(p.a, p.b);
         }
         unregisteredActionShortcuts.clear();
     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java
index 8db86d1..c345bee 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java
@@ -9,7 +9,7 @@ import javax.swing.text.View;
 import javax.swing.text.html.HTML;
 import javax.swing.text.html.HTMLEditorKit.HTMLFactory;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Specialized HTML Factory allowing to display SVG images.
@@ -28,7 +28,7 @@ public class JosmHTMLFactory extends HTMLFactory {
                 try {
                     return new JosmImageView(elem);
                 } catch (NoSuchFieldException | SecurityException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java b/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
index 45607bd..10b7ea3 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
@@ -14,8 +14,8 @@ import javax.swing.text.AttributeSet;
 import javax.swing.text.Element;
 import javax.swing.text.html.ImageView;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -67,7 +67,7 @@ public class JosmImageView extends ImageView {
                 setPropertiesFromAttributes();
             }
         } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException e) {
-           Main.error(e);
+           Logging.error(e);
        }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
index 36f1166..4c308a3 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
@@ -12,7 +12,9 @@ import javax.swing.TransferHandler;
 import javax.swing.text.Document;
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A subclass of {@link JPasswordField} to implement a workaround to
@@ -97,15 +99,17 @@ public class JosmPasswordField extends JPasswordField implements FocusListener {
 
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
     }
 
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
     }
 
@@ -125,9 +129,9 @@ public class JosmPasswordField extends JPasswordField implements FocusListener {
                     try {
                         pasteAction.actionPerformed(e);
                     } catch (NullPointerException npe) { // NOPMD
-                        Main.error(npe, "NullPointerException occured because of JDK bug 6322854. "
+                        Logging.log(Logging.LEVEL_ERROR, "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");
+                                "https://bugs.openjdk.java.net/browse/JDK-6322854", npe);
                     }
                 }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java b/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java
index 46f3643..8e353a6 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java
@@ -8,7 +8,8 @@ import java.awt.event.FocusListener;
 import javax.swing.JTextArea;
 import javax.swing.text.Document;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
  * Subclass of {@link JTextArea} that adds a "native" context menu (cut/copy/paste/select all).
@@ -104,15 +105,17 @@ public class JosmTextArea extends JTextArea implements FocusListener {
 
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
     }
 
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java b/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
index f14625c..37ef121 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
@@ -13,7 +13,8 @@ import java.awt.event.FocusListener;
 import javax.swing.JTextField;
 import javax.swing.text.Document;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 
 /**
  * Subclass of {@link JTextField} that:<ul>
@@ -167,16 +168,18 @@ public class JosmTextField extends JTextField implements FocusListener {
 
     @Override
     public void focusGained(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(false);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(false);
         }
         repaint();
     }
 
     @Override
     public void focusLost(FocusEvent e) {
-        if (Main.map != null) {
-            Main.map.keyDetector.setEnabled(true);
+        MapFrame map = MainApplication.getMap();
+        if (map != null) {
+            map.keyDetector.setEnabled(true);
         }
         repaint();
     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
index c70cc2f..28ea5bb 100644
--- a/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
@@ -9,10 +9,10 @@ import java.util.StringTokenizer;
 
 import javax.swing.text.JTextComponent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A text field designed to enter one or several OSM primitive IDs.
@@ -110,7 +110,7 @@ public class OsmIdTextField extends AbstractIdTextField<OsmIdTextField.OsmIdVali
                         ids.addAll(SimplePrimitiveId.multipleFromString(s));
                     } catch (IllegalArgumentException ex) {
                         try {
-                            Main.trace(ex);
+                            Logging.trace(ex);
                             long id = Long.parseLong(s);
                             if (id <= 0) {
                                 return false;
@@ -124,7 +124,7 @@ public class OsmIdTextField extends AbstractIdTextField<OsmIdTextField.OsmIdVali
                                 return false;
                             }
                         } catch (IllegalArgumentException ex2) {
-                            Main.trace(ex2);
+                            Logging.trace(ex2);
                             return false;
                         }
                     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java b/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
index c66b7dd..3c8aa70 100644
--- a/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
+++ b/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
@@ -9,9 +9,9 @@ import javax.swing.ListSelectionModel;
 import javax.swing.SwingUtilities;
 import javax.swing.table.TableColumnModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ZoomToAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
@@ -93,8 +93,8 @@ public abstract class OsmPrimitivesTable extends JosmTable {
      * @since 10454
      */
     public void registerListeners() {
-        Main.getLayerManager().addLayerChangeListener(zoomToAction);
-        Main.getLayerManager().addActiveLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().addLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(zoomToAction);
     }
 
     /**
@@ -102,8 +102,8 @@ public abstract class OsmPrimitivesTable extends JosmTable {
      * @since 10454
      */
     public void unregisterListeners() {
-        Main.getLayerManager().removeLayerChangeListener(zoomToAction);
-        Main.getLayerManager().removeActiveLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().removeLayerChangeListener(zoomToAction);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(zoomToAction);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
index 4a1c178..3046e22 100644
--- a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
+++ b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
@@ -24,6 +24,7 @@ import javax.swing.undo.UndoManager;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A popup menu designed for text components. It displays the following actions:
@@ -195,7 +196,7 @@ public class TextContextualPopupMenu extends JPopupMenu {
             try {
                 undo.undo();
             } catch (CannotUndoException ex) {
-                Main.trace(ex);
+                Logging.trace(ex);
             } finally {
                 updateUndoState();
                 redoAction.updateRedoState();
@@ -228,7 +229,7 @@ public class TextContextualPopupMenu extends JPopupMenu {
             try {
                 undo.redo();
             } catch (CannotRedoException ex) {
-                Main.trace(ex);
+                Logging.trace(ex);
             } finally {
                 updateRedoState();
                 undoAction.updateUndoState();
diff --git a/src/org/openstreetmap/josm/io/AbstractReader.java b/src/org/openstreetmap/josm/io/AbstractReader.java
index 0c7c815..ab48c37 100644
--- a/src/org/openstreetmap/josm/io/AbstractReader.java
+++ b/src/org/openstreetmap/josm/io/AbstractReader.java
@@ -11,7 +11,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -24,6 +23,7 @@ import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Abstract Reader, allowing other implementations than OsmReader (PbfReader in PBF plugin for example)
@@ -104,14 +104,14 @@ public abstract class AbstractReader {
                     }
                 }
                 if (n.isDeleted()) {
-                    Main.info(tr("Deleted node {0} is part of way {1}", id, w.getId()));
+                    Logging.info(tr("Deleted node {0} is part of way {1}", id, w.getId()));
                 } else {
                     wayNodes.add(n);
                 }
             }
             w.setNodes(wayNodes);
             if (w.hasIncompleteNodes()) {
-                Main.info(tr("Way {0} with {1} nodes has incomplete nodes because at least one node was missing in the loaded data.",
+                Logging.info(tr("Way {0} with {1} nodes has incomplete nodes because at least one node was missing in the loaded data.",
                           externalWayId, w.getNodesCount()));
             }
             ds.addPrimitive(w);
@@ -175,7 +175,7 @@ public abstract class AbstractReader {
                     }
                 }
                 if (primitive.isDeleted()) {
-                    Main.info(tr("Deleted member {0} is used by relation {1}", primitive.getId(), relation.getId()));
+                    Logging.info(tr("Deleted member {0} is used by relation {1}", primitive.getId(), relation.getId()));
                 } else {
                     relationMembers.add(new RelationMember(rm.getRole(), primitive));
                 }
diff --git a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
index bfd4aac..b871f5a 100644
--- a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
+++ b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
@@ -8,7 +8,6 @@ import java.io.InputStream;
 import java.net.SocketException;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.gpx.GpxData;
@@ -17,6 +16,7 @@ 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.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -74,7 +74,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
                 if (isCanceled()) {
                     final OsmTransferCanceledException canceledException = new OsmTransferCanceledException("Operation canceled");
                     canceledException.initCause(ex);
-                    Main.warn(canceledException);
+                    Logging.warn(canceledException);
                 }
             }
             activeConnection = null;
diff --git a/src/org/openstreetmap/josm/io/CacheCustomContent.java b/src/org/openstreetmap/josm/io/CacheCustomContent.java
index ab2939e..4dbb870 100644
--- a/src/org/openstreetmap/josm/io/CacheCustomContent.java
+++ b/src/org/openstreetmap/josm/io/CacheCustomContent.java
@@ -11,6 +11,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.concurrent.TimeUnit;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -98,7 +99,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
             checkOfflineAccess();
             return false;
         } catch (OfflineAccessException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return true;
         }
     }
@@ -186,10 +187,10 @@ public abstract class CacheCustomContent<T extends Throwable> {
         try (BufferedInputStream input = new BufferedInputStream(new FileInputStream(path))) {
             this.data = new byte[input.available()];
             if (input.read(this.data) < this.data.length) {
-                Main.error("Failed to read expected contents from "+path);
+                Logging.error("Failed to read expected contents from "+path);
             }
         } catch (IOException e) {
-            Main.trace(e);
+            Logging.trace(e);
             if (!isOffline()) {
                 this.data = updateForce();
             }
@@ -204,7 +205,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
             output.write(this.data);
             output.flush();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/CachedFile.java b/src/org/openstreetmap/josm/io/CachedFile.java
index 176b5dc..3c927d2 100644
--- a/src/org/openstreetmap/josm/io/CachedFile.java
+++ b/src/org/openstreetmap/josm/io/CachedFile.java
@@ -28,6 +28,7 @@ import java.util.zip.ZipFile;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -326,7 +327,7 @@ public class CachedFile implements Closeable {
         try {
             file = getFile();
         } catch (IOException ex) {
-            Main.warn(ex, false);
+            Logging.log(Logging.LEVEL_WARN, ex);
         }
         if (file == null)
             return null;
@@ -350,8 +351,9 @@ public class CachedFile implements Closeable {
             }
         } catch (IOException e) {
             if (file.getName().endsWith(".zip")) {
-                Main.warn(e, tr("Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file ''{0}''. Exception was: {1}",
-                        file.getName(), e.toString(), extension, namepart));
+                Logging.log(Logging.LEVEL_WARN,
+                        tr("Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file ''{0}''. Exception was: {1}",
+                        file.getName(), e.toString(), extension, namepart), e);
             }
         }
         return res;
@@ -388,7 +390,7 @@ public class CachedFile implements Closeable {
                 Main.pref.putCollection(prefKey, null);
             }
         } catch (MalformedURLException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
@@ -421,7 +423,7 @@ public class CachedFile implements Closeable {
         try {
             checkOfflineAccess(urlStr);
         } catch (OfflineAccessException e) {
-            Main.trace(e);
+            Logging.trace(e);
             offline = true;
         }
         if (localPathEntry.size() == 2) {
@@ -470,9 +472,7 @@ public class CachedFile implements Closeable {
             }
             final HttpClient.Response con = activeConnection.connect();
             if (ifModifiedSince != null && con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug("304 Not Modified ("+urlStr+')');
-                }
+                Logging.debug("304 Not Modified ({0})", urlStr);
                 if (localFile == null)
                     throw new AssertionError();
                 Main.pref.putCollection(prefKey,
@@ -490,12 +490,12 @@ public class CachedFile implements Closeable {
                 Main.pref.putCollection(prefKey,
                         Arrays.asList(Long.toString(System.currentTimeMillis()), localFile.toString()));
             } else {
-                Main.warn(tr("Failed to rename file {0} to {1}.",
+                Logging.warn(tr("Failed to rename file {0} to {1}.",
                 destDirFile.getPath(), localFile.getPath()));
             }
         } catch (IOException e) {
             if (age >= maxAgeMillis && age < maxAgeMillis*2) {
-                Main.warn(tr("Failed to load {0}, use cached file and retry next time: {1}", urlStr, e));
+                Logging.warn(tr("Failed to load {0}, use cached file and retry next time: {1}", urlStr, e));
                 return localFile;
             } else {
                 throw e;
diff --git a/src/org/openstreetmap/josm/io/Capabilities.java b/src/org/openstreetmap/josm/io/Capabilities.java
index 040a31a..a97522f 100644
--- a/src/org/openstreetmap/josm/io/Capabilities.java
+++ b/src/org/openstreetmap/josm/io/Capabilities.java
@@ -12,7 +12,7 @@ import java.util.Map;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -160,7 +160,7 @@ public class Capabilities {
     }
 
     private static void warnIllegalValue(String attr, String elem, Object val) {
-        Main.warn(tr("Illegal value of attribute ''{0}'' of element ''{1}'' in server capabilities. Got ''{2}''", attr, elem, val));
+        Logging.warn(tr("Illegal value of attribute ''{0}'' of element ''{1}'' in server capabilities. Got ''{2}''", attr, elem, val));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/io/CertificateAmendment.java b/src/org/openstreetmap/josm/io/CertificateAmendment.java
index 7b4ba07..1a10a08 100644
--- a/src/org/openstreetmap/josm/io/CertificateAmendment.java
+++ b/src/org/openstreetmap/josm/io/CertificateAmendment.java
@@ -28,6 +28,7 @@ import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManagerFactory;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -59,7 +60,7 @@ public final class CertificateAmendment {
 
         /**
          * Returns the certificate identifier.
-         * @return path for JOSM embedded certificate, alias for platform certificate
+         * @return path for JOSM embedded certificate, alias for Windows platform certificate
          */
         public final String getId() {
             return id;
@@ -67,7 +68,7 @@ public final class CertificateAmendment {
 
         /**
          * Returns the certificate filename.
-         * @return filename for both JOSM embedded certificate and platform certificate
+         * @return filename for both JOSM embedded certificate and Unix platform certificate
          * @since 12241
          */
         public final String getFilename() {
@@ -93,13 +94,18 @@ public final class CertificateAmendment {
 
     /**
      * Certificates looked into platform native keystore and not embedded in JOSM.
-     * Identifiers must match Windows keystore aliases for efficient search.
+     * Identifiers must match Windows keystore aliases and Unix filenames for efficient search.
      */
     private static final CertAmend[] PLATFORM_CERT_AMEND = {
+        // Government of Netherlands
         new CertAmend("Staat der Nederlanden Root CA - G2", "Staat_der_Nederlanden_Root_CA_-_G2.crt",
                 "668c83947da63b724bece1743c31a0e6aed0db8ec5b31be377bb784f91b6716f"),
+        // Government of Netherlands
         new CertAmend("Government of Netherlands G3", "Staat_der_Nederlanden_Root_CA_-_G3.crt",
-                "3c4fb0b95ab8b30032f432b86f535fe172c185d0fd39865837cf36187fa6f428")
+                "3c4fb0b95ab8b30032f432b86f535fe172c185d0fd39865837cf36187fa6f428"),
+        // Trusted and used by French Government - https://www.certigna.fr/autorites/index.xhtml?ac=Racine#lracine
+        new CertAmend("Certigna", "Certigna.crt",
+                "e3b6a2db2ed7ce48842f7ac53241c7b71d54144bfb40c11f3f1d0b42f5eea12d"),
     };
 
     private CertificateAmendment() {
@@ -143,7 +149,7 @@ public final class CertificateAmendment {
                 }
             }
         } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException | IllegalStateException e) {
-            Main.error(e);
+            Logging.error(e);
         }
 
         if (certificateAdded) {
@@ -165,8 +171,8 @@ public final class CertificateAmendment {
                             certAmend.id, certAmend.sha256, sha256));
             }
             if (certificateIsMissing(keyStore, cert)) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug(tr("Adding certificate for TLS connections: {0}", cert.getSubjectX500Principal().getName()));
+                if (Logging.isDebugEnabled()) {
+                    Logging.debug(tr("Adding certificate for TLS connections: {0}", cert.getSubjectX500Principal().getName()));
                 }
                 String alias = "josm:" + new File(certAmend.id).getName();
                 keyStore.setCertificateEntry(alias, cert);
diff --git a/src/org/openstreetmap/josm/io/ChangesetClosedException.java b/src/org/openstreetmap/josm/io/ChangesetClosedException.java
index a110816..40ed7fb 100644
--- a/src/org/openstreetmap/josm/io/ChangesetClosedException.java
+++ b/src/org/openstreetmap/josm/io/ChangesetClosedException.java
@@ -8,7 +8,7 @@ import java.util.Date;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -77,11 +77,11 @@ public class ChangesetClosedException extends OsmTransferException {
             try {
                 closedOn = DateUtils.newOsmApiDateTimeFormat().parse(m.group(2));
             } catch (ParseException ex) {
-                Main.error(tr("Failed to parse date ''{0}'' replied by server.", m.group(2)));
-                Main.error(ex);
+                Logging.error(tr("Failed to parse date ''{0}'' replied by server.", m.group(2)));
+                Logging.error(ex);
             }
         } else {
-            Main.error(tr("Unexpected format of error header for conflict in changeset update. Got ''{0}''", errorHeader));
+            Logging.error(tr("Unexpected format of error header for conflict in changeset update. Got ''{0}''", errorHeader));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/ChangesetQuery.java b/src/org/openstreetmap/josm/io/ChangesetQuery.java
index da54a34..732537e 100644
--- a/src/org/openstreetmap/josm/io/ChangesetQuery.java
+++ b/src/org/openstreetmap/josm/io/ChangesetQuery.java
@@ -15,11 +15,11 @@ import java.util.Map.Entry;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -266,7 +266,7 @@ public class ChangesetQuery {
     public ChangesetQuery forChangesetIds(Collection<Long> changesetIds) {
         CheckParameterUtil.ensureParameterNotNull(changesetIds, "changesetIds");
         if (changesetIds.size() > MAX_CHANGESETS_NUMBER) {
-            Main.warn("Changeset query built with more than " + MAX_CHANGESETS_NUMBER + " changeset ids (" + changesetIds.size() + ')');
+            Logging.warn("Changeset query built with more than " + MAX_CHANGESETS_NUMBER + " changeset ids (" + changesetIds.size() + ')');
         }
         this.changesetIds = changesetIds;
         return this;
@@ -470,7 +470,7 @@ public class ChangesetQuery {
                         csQuery.closedAfterAndCreatedBefore(dates[0], dates[1]);
                         break;
                     default:
-                        Main.warn("Unable to parse time: " + entry.getValue());
+                        Logging.warn("Unable to parse time: " + entry.getValue());
                     }
                     break;
                 case "bbox":
diff --git a/src/org/openstreetmap/josm/io/DefaultProxySelector.java b/src/org/openstreetmap/josm/io/DefaultProxySelector.java
index 4e4e373..7131a29 100644
--- a/src/org/openstreetmap/josm/io/DefaultProxySelector.java
+++ b/src/org/openstreetmap/josm/io/DefaultProxySelector.java
@@ -20,6 +20,7 @@ import java.util.TreeSet;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel.ProxyPolicy;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * This is the default proxy selector used in JOSM.
@@ -92,13 +93,13 @@ public class DefaultProxySelector extends ProxySelector {
         try {
             port = Integer.parseInt(value);
         } catch (NumberFormatException e) {
-            Main.error(tr("Unexpected format for port number in preference ''{0}''. Got ''{1}''.", property, value));
-            Main.error(tr("The proxy will not be used."));
+            Logging.error(tr("Unexpected format for port number in preference ''{0}''. Got ''{1}''.", property, value));
+            Logging.error(tr("The proxy will not be used."));
             return 0;
         }
         if (port <= 0 || port > 65_535) {
-            Main.error(tr("Illegal port number in preference ''{0}''. Got {1}.", property, port));
-            Main.error(tr("The proxy will not be used."));
+            Logging.error(tr("Illegal port number in preference ''{0}''. Got {1}.", property, port));
+            Logging.error(tr("The proxy will not be used."));
             return 0;
         }
         return port;
@@ -115,7 +116,7 @@ public class DefaultProxySelector extends ProxySelector {
         } else {
             proxyPolicy = ProxyPolicy.fromName(value);
             if (proxyPolicy == null) {
-                Main.warn(tr("Unexpected value for preference ''{0}'' found. Got ''{1}''. Will use no proxy.",
+                Logging.warn(tr("Unexpected value for preference ''{0}'' found. Got ''{1}''. Will use no proxy.",
                         ProxyPreferencesPanel.PROXY_POLICY, value));
                 proxyPolicy = ProxyPolicy.NO_PROXY;
             }
@@ -127,8 +128,8 @@ public class DefaultProxySelector extends ProxySelector {
             if (host != null && !host.trim().isEmpty() && port > 0) {
                 httpProxySocketAddress = new InetSocketAddress(host, port);
             } else {
-                Main.warn(tr("Unexpected parameters for HTTP proxy. Got host ''{0}'' and port ''{1}''.", host, port));
-                Main.warn(tr("The proxy will not be used."));
+                Logging.warn(tr("Unexpected parameters for HTTP proxy. Got host ''{0}'' and port ''{1}''.", host, port));
+                Logging.warn(tr("The proxy will not be used."));
             }
         }
 
@@ -139,8 +140,8 @@ public class DefaultProxySelector extends ProxySelector {
             if (host != null && !host.trim().isEmpty() && port > 0) {
                 socksProxySocketAddress = new InetSocketAddress(host, port);
             } else {
-                Main.warn(tr("Unexpected parameters for SOCKS proxy. Got host ''{0}'' and port ''{1}''.", host, port));
-                Main.warn(tr("The proxy will not be used."));
+                Logging.warn(tr("Unexpected parameters for SOCKS proxy. Got host ''{0}'' and port ''{1}''.", host, port));
+                Logging.warn(tr("The proxy will not be used."));
             }
         }
         proxyExceptions = new HashSet<>(
@@ -152,7 +153,8 @@ public class DefaultProxySelector extends ProxySelector {
     @Override
     public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
         // Just log something. The network stack will also throw an exception which will be caught somewhere else
-        Main.error(tr("Connection to proxy ''{0}'' for URI ''{1}'' failed. Exception was: {2}", sa.toString(), uri.toString(), ioe.toString()));
+        Logging.error(tr("Connection to proxy ''{0}'' for URI ''{1}'' failed. Exception was: {2}",
+                sa.toString(), uri.toString(), ioe.toString()));
         // Remember errors to give a friendly user message asking to review proxy configuration
         errorResources.add(uri.toString());
         errorMessages.add(ioe.toString());
@@ -202,7 +204,7 @@ public class DefaultProxySelector extends ProxySelector {
         switch(proxyPolicy) {
         case USE_SYSTEM_SETTINGS:
             if (!jvmWillUseSystemProxies) {
-                Main.warn(tr("The JVM is not configured to lookup proxies from the system settings. "+
+                Logging.warn(tr("The JVM is not configured to lookup proxies from the system settings. "+
                         "The property ''java.net.useSystemProxies'' was missing at startup time.  Will not use a proxy."));
                 return NO_PROXY_LIST;
             }
diff --git a/src/org/openstreetmap/josm/io/FileWatcher.java b/src/org/openstreetmap/josm/io/FileWatcher.java
index e9e5b43..0b0f6f8 100644
--- a/src/org/openstreetmap/josm/io/FileWatcher.java
+++ b/src/org/openstreetmap/josm/io/FileWatcher.java
@@ -13,15 +13,17 @@ import java.nio.file.WatchService;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Executors;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
-import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintStyleLoader;
 import org.openstreetmap.josm.gui.mappaint.StyleSource;
+import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Background thread that monitors certain files and perform relevant actions when they change.
@@ -43,7 +45,7 @@ public class FileWatcher {
             watcher = FileSystems.getDefault().newWatchService();
             thread = new Thread((Runnable) this::processEvents, "File Watcher");
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
@@ -103,9 +105,7 @@ public class FileWatcher {
      * Process all events for the key queued to the watcher.
      */
     private void processEvents() {
-        if (Main.isDebugEnabled()) {
-            Main.debug("File watcher thread started");
-        }
+        Logging.debug("File watcher thread started");
         while (true) {
 
             // wait for key to be signaled
@@ -139,20 +139,21 @@ public class FileWatcher {
                     StyleSource style = styleMap.get(fullPath);
                     SourceEntry rule = ruleMap.get(fullPath);
                     if (style != null) {
-                        Main.info("Map style "+style.getDisplayString()+" has been modified. Reloading style...");
-                        Main.worker.submit(new MapPaintStyleLoader(Collections.singleton(style)));
+                        Logging.info("Map style "+style.getDisplayString()+" has been modified. Reloading style...");
+                        Executors.newSingleThreadExecutor(Utils.newThreadFactory("mapstyle-reload-%d", Thread.NORM_PRIORITY)).submit(
+                                new MapPaintStyleLoader(Collections.singleton(style)));
                     } else if (rule != null) {
-                        Main.info("Validator rule "+rule.getDisplayString()+" has been modified. Reloading rule...");
+                        Logging.info("Validator rule "+rule.getDisplayString()+" has been modified. Reloading rule...");
                         MapCSSTagChecker tagChecker = OsmValidator.getTest(MapCSSTagChecker.class);
                         if (tagChecker != null) {
                             try {
                                 tagChecker.addMapCSS(rule.url);
                             } catch (IOException | ParseException e) {
-                                Main.warn(e);
+                                Logging.warn(e);
                             }
                         }
-                    } else if (Main.isDebugEnabled()) {
-                        Main.debug("Received "+kind.name()+" event for unregistered file: "+fullPath);
+                    } else if (Logging.isDebugEnabled()) {
+                        Logging.debug("Received {0} event for unregistered file: {1}", kind.name(), fullPath);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/io/GeoJSONWriter.java b/src/org/openstreetmap/josm/io/GeoJSONWriter.java
index c44dea9..4306099 100644
--- a/src/org/openstreetmap/josm/io/GeoJSONWriter.java
+++ b/src/org/openstreetmap/josm/io/GeoJSONWriter.java
@@ -17,7 +17,6 @@ import javax.json.JsonObjectBuilder;
 import javax.json.JsonWriter;
 import javax.json.stream.JsonGenerator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -33,6 +32,7 @@ import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
 /**
@@ -134,8 +134,8 @@ public class GeoJSONWriter {
                 final JsonArrayBuilder multiPolygon = Json.createArrayBuilder().add(polygon);
                 geomObj.add("coordinates", multiPolygon);
             } catch (MultipolygonBuilder.JoinedPolygonCreationException ex) {
-                Main.warn("GeoJSON: Failed to export multipolygon {0}", r.getUniqueId());
-                Main.warn(ex);
+                Logging.warn("GeoJSON: Failed to export multipolygon {0}", r.getUniqueId());
+                Logging.warn(ex);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/io/GpxReader.java b/src/org/openstreetmap/josm/io/GpxReader.java
index 94b5527..3fb659b 100644
--- a/src/org/openstreetmap/josm/io/GpxReader.java
+++ b/src/org/openstreetmap/josm/io/GpxReader.java
@@ -16,7 +16,6 @@ import java.util.Stack;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.Extensions;
@@ -26,6 +25,7 @@ import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.GpxRoute;
 import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -580,12 +580,12 @@ public class GpxReader implements GpxConstants {
                     SAXParseException spe = (SAXParseException) e;
                     message += ' ' + tr("(at line {0}, column {1})", spe.getLineNumber(), spe.getColumnNumber());
                 }
-                Main.warn(message);
+                Logging.warn(message);
                 return false;
             } else
                 throw e;
         } catch (ParserConfigurationException e) {
-            Main.error(e); // broken SAXException chaining
+            Logging.error(e); // broken SAXException chaining
             throw new SAXException(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java b/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
index 6ee24f1..3e025a4 100644
--- a/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
+++ b/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
@@ -4,7 +4,7 @@ package org.openstreetmap.josm.io;
 import java.io.IOException;
 import java.io.Reader;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * FilterInputStream that gets rid of characters that are invalid in an XML 1.0
@@ -63,7 +63,7 @@ public class InvalidXmlCharacterFilter extends Reader {
     private static char filter(char in) {
         if (in < 0x20 && INVALID_CHARS[in]) {
             if (firstWarning) {
-                Main.warn("Invalid xml character encountered: '"+in+"'.");
+                Logging.warn("Invalid xml character encountered: '"+in+"'.");
                 firstWarning = false;
             }
             return 0x20;
diff --git a/src/org/openstreetmap/josm/gui/io/MaxChangesetSizeExceededPolicy.java b/src/org/openstreetmap/josm/io/MaxChangesetSizeExceededPolicy.java
similarity index 88%
rename from src/org/openstreetmap/josm/gui/io/MaxChangesetSizeExceededPolicy.java
rename to src/org/openstreetmap/josm/io/MaxChangesetSizeExceededPolicy.java
index 97f3ea7..8fb92b9 100644
--- a/src/org/openstreetmap/josm/gui/io/MaxChangesetSizeExceededPolicy.java
+++ b/src/org/openstreetmap/josm/io/MaxChangesetSizeExceededPolicy.java
@@ -1,8 +1,9 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.io;
+package org.openstreetmap.josm.io;
 
 /**
  * This determines what to do when the max changeset size was exceeded by a upload.
+ * @since 12687 (moved from {@code gui.io} package)
  */
 public enum MaxChangesetSizeExceededPolicy {
     /**
diff --git a/src/org/openstreetmap/josm/io/MessageNotifier.java b/src/org/openstreetmap/josm/io/MessageNotifier.java
index 5189af0..d492958 100644
--- a/src/org/openstreetmap/josm/io/MessageNotifier.java
+++ b/src/org/openstreetmap/josm/io/MessageNotifier.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.io.auth.CredentialsAgentResponse;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.io.auth.JosmPreferencesCredentialAgent;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -85,7 +86,7 @@ public final class MessageNotifier {
                     }
                 }
             } catch (OsmTransferException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
     }
@@ -96,10 +97,10 @@ public final class MessageNotifier {
     public static void start() {
         int interval = PROP_INTERVAL.get();
         if (Main.isOffline(OnlineResource.OSM_API)) {
-            Main.info(tr("{0} not available (offline mode)", tr("Message notifier")));
+            Logging.info(tr("{0} not available (offline mode)", tr("Message notifier")));
         } else if (!isRunning() && interval > 0 && isUserEnoughIdentified()) {
             task = EXECUTOR.scheduleAtFixedRate(WORKER, 0, TimeUnit.MINUTES.toSeconds(interval), TimeUnit.SECONDS);
-            Main.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+')');
+            Logging.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+')');
         }
     }
 
@@ -109,7 +110,7 @@ public final class MessageNotifier {
     public static void stop() {
         if (isRunning()) {
             task.cancel(false);
-            Main.info("Message notifier inactive");
+            Logging.info("Message notifier inactive");
             task = null;
         }
     }
@@ -152,7 +153,7 @@ public final class MessageNotifier {
                     }
                 }
             } catch (CredentialsAgentException e) {
-                Main.warn(e, "Unable to get credentials:");
+                Logging.log(Logging.LEVEL_WARN, "Unable to get credentials:", e);
             }
         }
         return false;
diff --git a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
index 76cbb6b..0414f2d 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
@@ -37,6 +37,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -50,10 +51,10 @@ import org.openstreetmap.josm.tools.Utils;
  *         .append(new Node(72343));
  *    reader.parseOsm();
  *    if (!reader.getMissingPrimitives().isEmpty()) {
- *        Main.info("There are missing primitives: " + reader.getMissingPrimitives());
+ *        Logging.info("There are missing primitives: " + reader.getMissingPrimitives());
  *    }
  *    if (!reader.getSkippedWays().isEmpty()) {
- *       Main.info("There are skipped ways: " + reader.getMissingPrimitives());
+ *       Logging.info("There are skipped ways: " + reader.getMissingPrimitives());
  *    }
  * </pre>
  */
@@ -342,7 +343,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                     merge(result.dataSet);
                 }
             } catch (InterruptedException | ExecutionException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         exec.shutdown();
@@ -486,7 +487,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                 return multiGetIdPackage(type, pkg, progressMonitor);
             } catch (OsmApiException e) {
                 if (e.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
-                    Main.info(tr("Server replied with response code 404, retrying with an individual request for each object."));
+                    Logging.info(tr("Server replied with response code 404, retrying with an individual request for each object."));
                     return singleGetIdPackage(type, pkg, progressMonitor);
                 } else {
                     throw e;
@@ -523,7 +524,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                     throw new OsmTransferException(e);
                 }
             } catch (IOException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
             return result;
         }
@@ -551,7 +552,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                     throw new OsmTransferException(e);
                 }
             } catch (IOException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             }
             return result;
         }
@@ -590,7 +591,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                     result.dataSet.mergeFrom(singleGetId(type, id, progressMonitor));
                 } catch (OsmApiException e) {
                     if (e.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
-                        Main.info(tr("Server replied with response code 404 for id {0}. Skipping.", Long.toString(id)));
+                        Logging.info(tr("Server replied with response code 404 for id {0}. Skipping.", Long.toString(id)));
                         result.missingPrimitives.add(new SimplePrimitiveId(id, type));
                     } else {
                         throw e;
diff --git a/src/org/openstreetmap/josm/io/NameFinder.java b/src/org/openstreetmap/josm/io/NameFinder.java
index 63bf42b..10ac6a1 100644
--- a/src/org/openstreetmap/josm/io/NameFinder.java
+++ b/src/org/openstreetmap/josm/io/NameFinder.java
@@ -12,12 +12,14 @@ import java.util.List;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.HttpClient.Response;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.Utils;
@@ -33,10 +35,16 @@ import org.xml.sax.helpers.DefaultHandler;
 public final class NameFinder {
 
     /**
-     * Nominatim URL.
+     * Nominatim default URL.
      */
     public static final String NOMINATIM_URL = "https://nominatim.openstreetmap.org/search?format=xml&q=";
 
+    /**
+     * Nominatim URL property.
+     * @since 12557
+     */
+    public static final StringProperty NOMINATIM_URL_PROP = new StringProperty("nominatim-url", NOMINATIM_URL);
+
     private NameFinder() {
     }
 
@@ -47,7 +55,7 @@ public final class NameFinder {
      * @throws IOException if any IO error occurs.
      */
     public static List<SearchResult> queryNominatim(final String searchExpression) throws IOException {
-        return query(new URL(NOMINATIM_URL + Utils.encodeUrl(searchExpression)));
+        return query(new URL(NOMINATIM_URL_PROP.get() + Utils.encodeUrl(searchExpression)));
     }
 
     /**
@@ -58,8 +66,11 @@ public final class NameFinder {
      */
     public static List<SearchResult> query(final URL url) throws IOException {
         final HttpClient connection = HttpClient.create(url);
-        connection.connect();
-        try (Reader reader = connection.getResponse().getContentReader()) {
+        Response response = connection.connect();
+        if (response.getResponseCode() >= 400) {
+            throw new IOException(response.getResponseMessage() + ": " + response.fetchContent());
+        }
+        try (Reader reader = response.getContentReader()) {
             return parseSearchResults(reader);
         } catch (ParserConfigurationException | SAXException ex) {
             throw new UncheckedParseException(ex);
@@ -238,10 +249,10 @@ public final class NameFinder {
                     data.add(currentResult);
                 }
             } catch (NumberFormatException ex) {
-                Main.error(ex); // SAXException does not chain correctly
+                Logging.error(ex); // SAXException does not chain correctly
                 throw new SAXException(ex.getMessage(), ex);
             } catch (NullPointerException ex) { // NOPMD
-                Main.error(ex); // SAXException does not chain correctly
+                Logging.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/NoteReader.java b/src/org/openstreetmap/josm/io/NoteReader.java
index 60026f5..a53ef87 100644
--- a/src/org/openstreetmap/josm/io/NoteReader.java
+++ b/src/org/openstreetmap/josm/io/NoteReader.java
@@ -13,12 +13,12 @@ import java.util.Optional;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.notes.NoteComment.Action;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 import org.xml.sax.Attributes;
@@ -217,7 +217,7 @@ public class NoteReader {
         try {
             Utils.parseSafeSAX(inputSource, parser);
         } catch (ParserConfigurationException e) {
-            Main.error(e); // broken SAXException chaining
+            Logging.error(e); // broken SAXException chaining
             throw new SAXException(e);
         }
         return parsedNotes;
diff --git a/src/org/openstreetmap/josm/io/OsmApi.java b/src/org/openstreetmap/josm/io/OsmApi.java
index a1dadfd..2e70e54 100644
--- a/src/org/openstreetmap/josm/io/OsmApi.java
+++ b/src/org/openstreetmap/josm/io/OsmApi.java
@@ -29,6 +29,7 @@ import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -36,6 +37,7 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.Capabilities.CapabilitiesParser;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlParsingException;
 import org.xml.sax.InputSource;
@@ -154,7 +156,7 @@ public class OsmApi extends OsmConnection {
         try {
             host = (new URL(serverUrl)).getHost();
         } catch (MalformedURLException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return host;
     }
@@ -211,21 +213,21 @@ public class OsmApi extends OsmConnection {
             try {
                 initializeCapabilities(cache.updateIfRequiredString());
             } catch (SAXParseException parseException) {
-                Main.trace(parseException);
+                Logging.trace(parseException);
                 // XML parsing may fail if JOSM previously stored a corrupted capabilities document (see #8278)
                 // In that case, force update and try again
                 initializeCapabilities(cache.updateForceString());
             }
             if (capabilities == null) {
                 if (Main.isOffline(OnlineResource.OSM_API)) {
-                    Main.warn(tr("{0} not available (offline mode)", tr("OSM API")));
+                    Logging.warn(tr("{0} not available (offline mode)", tr("OSM API")));
                 } else {
-                    Main.error(tr("Unable to initialize OSM API."));
+                    Logging.error(tr("Unable to initialize OSM API."));
                 }
                 return;
             } else if (!capabilities.supportsVersion("0.6")) {
-                Main.error(tr("This version of JOSM is incompatible with the configured server."));
-                Main.error(tr("It supports protocol version 0.6, while the server says it supports {0} to {1}.",
+                Logging.error(tr("This version of JOSM is incompatible with the configured server."));
+                Logging.error(tr("It supports protocol version 0.6, while the server says it supports {0} to {1}.",
                         capabilities.get("version", "minimum"), capabilities.get("version", "maximum")));
                 return;
             } else {
@@ -239,11 +241,11 @@ public class OsmApi extends OsmConnection {
              * in the preferences menu. Otherwise they would not have been able
              * to load the layers in the first place because they would have
              * been disabled! */
-            if (Main.isDisplayingMapView()) {
-                for (Layer l : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
+            if (MainApplication.isDisplayingMapView()) {
+                for (Layer l : MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                     if (((ImageryLayer) l).getInfo().isBlacklisted()) {
-                        Main.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));
-                        Main.getLayerManager().removeLayer(l);
+                        Logging.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));
+                        MainApplication.getLayerManager().removeLayer(l);
                     }
                 }
             }
@@ -283,7 +285,7 @@ public class OsmApi extends OsmConnection {
             osmWriter.footer();
             osmWriter.flush();
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return swriter.toString();
     }
@@ -302,7 +304,7 @@ public class OsmApi extends OsmConnection {
             osmWriter.footer();
             osmWriter.flush();
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return swriter.toString();
     }
@@ -551,7 +553,7 @@ public class OsmApi extends OsmConnection {
     }
 
     private void sleepAndListen(int retry, ProgressMonitor monitor) throws OsmTransferCanceledException {
-        Main.info(tr("Waiting 10 seconds ... "));
+        Logging.info(tr("Waiting 10 seconds ... "));
         for (int i = 0; i < 10; i++) {
             if (monitor != null) {
                 monitor.setCustomText(tr("Starting retry {0} of {1} in {2} seconds ...", getMaxRetries() - retry, getMaxRetries(), 10-i));
@@ -561,11 +563,11 @@ public class OsmApi extends OsmConnection {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException ex) {
-                Main.warn("InterruptedException in "+getClass().getSimpleName()+" during sleep");
+                Logging.warn("InterruptedException in "+getClass().getSimpleName()+" during sleep");
                 Thread.currentThread().interrupt();
             }
         }
-        Main.info(tr("OK - trying again."));
+        Logging.info(tr("OK - trying again."));
     }
 
     /**
@@ -651,12 +653,12 @@ public class OsmApi extends OsmConnection {
                 }
 
                 final HttpClient.Response response = client.connect();
-                Main.info(response.getResponseMessage());
+                Logging.info(response.getResponseMessage());
                 int retCode = response.getResponseCode();
 
                 if (retCode >= 500 && retries-- > 0) {
                     sleepAndListen(retries, monitor);
-                    Main.info(tr("Starting retry {0} of {1}.", getMaxRetries() - retries, getMaxRetries()));
+                    Logging.info(tr("Starting retry {0} of {1}.", getMaxRetries() - retries, getMaxRetries()));
                     continue;
                 }
 
@@ -666,9 +668,9 @@ public class OsmApi extends OsmConnection {
                 // Look for a detailed error message from the server
                 if (response.getHeaderField("Error") != null) {
                     errorHeader = response.getHeaderField("Error");
-                    Main.error("Error header: " + errorHeader);
+                    Logging.error("Error header: " + errorHeader);
                 } else if (retCode != HttpURLConnection.HTTP_OK && responseBody.length() > 0) {
-                    Main.error("Error body: " + responseBody);
+                    Logging.error("Error body: " + responseBody);
                 }
                 activeConnection.disconnect();
 
@@ -858,7 +860,7 @@ public class OsmApi extends OsmConnection {
             // Shouldn't ever execute. Server will either respond with an error (caught elsewhere) or one note
             throw new OsmTransferException(tr("Note upload failed"));
         } catch (SAXException | IOException e) {
-            Main.error(e, true);
+            Logging.error(e);
             throw new OsmTransferException(tr("Error parsing note response from server"), e);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/OsmApiException.java b/src/org/openstreetmap/josm/io/OsmApiException.java
index e7733ce..4a58f5f 100644
--- a/src/org/openstreetmap/josm/io/OsmApiException.java
+++ b/src/org/openstreetmap/josm/io/OsmApiException.java
@@ -2,7 +2,7 @@
 package org.openstreetmap.josm.io;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Exception thrown when a communication error occurs when accessing the <a href="http://wiki.openstreetmap.org/wiki/API_v0.6">OSM API</a>.
@@ -145,7 +145,7 @@ public class OsmApiException extends OsmTransferException {
             }
         } catch (IllegalArgumentException e) {
             // Ignored
-            Main.trace(e);
+            Logging.trace(e);
         }
         try {
             String eb = errorBody != null ? tr(errorBody.trim()) : "";
@@ -156,7 +156,7 @@ public class OsmApiException extends OsmTransferException {
             }
         } catch (IllegalArgumentException e) {
             // Ignored
-            Main.trace(e);
+            Logging.trace(e);
         }
         return sb.toString();
     }
diff --git a/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java b/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
index c866a6a..1fdd6c5 100644
--- a/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
+++ b/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
@@ -11,12 +11,12 @@ import java.nio.charset.StandardCharsets;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.ChangesetDataSet;
 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType;
 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.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlParsingException;
 import org.xml.sax.Attributes;
@@ -68,7 +68,7 @@ public class OsmChangesetContentParser {
                 currentModificationType = ChangesetModificationType.DELETED;
                 break;
             default:
-                Main.warn(tr("Unsupported start element ''{0}'' in changeset content at position ({1},{2}). Skipping.",
+                Logging.warn(tr("Unsupported start element ''{0}'' in changeset content at position ({1},{2}). Skipping.",
                         qName, locator.getLineNumber(), locator.getColumnNumber()));
             }
         }
@@ -98,7 +98,7 @@ public class OsmChangesetContentParser {
                 // do nothing
                 break;
             default:
-                Main.warn(tr("Unsupported end element ''{0}'' in changeset content at position ({1},{2}). Skipping.",
+                Logging.warn(tr("Unsupported end element ''{0}'' in changeset content at position ({1},{2}). Skipping.",
                         qName, locator.getLineNumber(), locator.getColumnNumber()));
             }
         }
diff --git a/src/org/openstreetmap/josm/io/OsmConnection.java b/src/org/openstreetmap/josm/io/OsmConnection.java
index 7c953b4..f045f9f 100644
--- a/src/org/openstreetmap/josm/io/OsmConnection.java
+++ b/src/org/openstreetmap/josm/io/OsmConnection.java
@@ -15,13 +15,14 @@ import java.util.concurrent.FutureTask;
 import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsAgentResponse;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 import oauth.signpost.OAuthConsumer;
@@ -119,8 +120,8 @@ public class OsmConnection {
                 throw new MissingOAuthAccessTokenException();
             }
             final Runnable authTask = new FutureTask<>(() -> {
-                // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
-                // executed via Main.worker. The OAuth connections would block otherwise.
+                // Concerning Utils.newDirectExecutor: Main worker cannot be used since this connection is already
+                // executed via main worker. The OAuth connections would block otherwise.
                 final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
                         Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
                 wizard.showDialog();
@@ -147,7 +148,7 @@ public class OsmConnection {
             addOAuthAuthorizationHeader(connection);
         } else {
             String msg = tr("Unexpected value for preference ''{0}''. Got ''{1}''.", "osm-server.auth-method", authMethod);
-            Main.warn(msg);
+            Logging.warn(msg);
             throw new OsmTransferException(msg);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/OsmHistoryReader.java b/src/org/openstreetmap/josm/io/OsmHistoryReader.java
index 1213b85..5447dfa 100644
--- a/src/org/openstreetmap/josm/io/OsmHistoryReader.java
+++ b/src/org/openstreetmap/josm/io/OsmHistoryReader.java
@@ -10,12 +10,12 @@ import java.nio.charset.StandardCharsets;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 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.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -93,7 +93,7 @@ public class OsmHistoryReader {
         try {
             Utils.parseSafeSAX(inputSource, new Parser());
         } catch (ParserConfigurationException e) {
-            Main.error(e); // broken SAXException chaining
+            Logging.error(e); // broken SAXException chaining
             throw new SAXException(e);
         } finally {
             progressMonitor.finishTask();
diff --git a/src/org/openstreetmap/josm/io/OsmReader.java b/src/org/openstreetmap/josm/io/OsmReader.java
index c830d67..d2fb224 100644
--- a/src/org/openstreetmap/josm/io/OsmReader.java
+++ b/src/org/openstreetmap/josm/io/OsmReader.java
@@ -20,7 +20,6 @@ import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -42,6 +41,8 @@ import org.openstreetmap.josm.data.osm.WayData;
 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.Logging;
+import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -200,7 +201,7 @@ public class OsmReader extends AbstractReader {
             if (bounds.isOutOfTheWorld()) {
                 Bounds copy = new Bounds(bounds);
                 bounds.normalize();
-                Main.info("Bbox " + copy + " is out of the world, normalized to " + bounds);
+                Logging.info("Bbox " + copy + " is out of the world, normalized to " + bounds);
             }
             DataSource src = new DataSource(bounds, origin);
             ds.addDataSource(src);
@@ -223,7 +224,7 @@ public class OsmReader extends AbstractReader {
                 ll = new LatLon(Double.parseDouble(lat), Double.parseDouble(lon));
                 nd.setCoor(ll);
             } catch (NumberFormatException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         readCommon(nd);
@@ -275,7 +276,7 @@ public class OsmReader extends AbstractReader {
             }
         }
         if (w.isDeleted() && !nodeIds.isEmpty()) {
-            Main.info(tr("Deleted way {0} contains nodes", w.getUniqueId()));
+            Logging.info(tr("Deleted way {0} contains nodes", w.getUniqueId()));
             nodeIds = new ArrayList<>();
         }
         ways.put(wd.getUniqueId(), nodeIds);
@@ -325,7 +326,7 @@ public class OsmReader extends AbstractReader {
             }
         }
         if (r.isDeleted() && !members.isEmpty()) {
-            Main.info(tr("Deleted relation {0} contains members", r.getUniqueId()));
+            Logging.info(tr("Deleted relation {0} contains members", r.getUniqueId()));
             members = new ArrayList<>();
         }
         relations.put(rd.getUniqueId(), members);
@@ -408,9 +409,9 @@ public class OsmReader extends AbstractReader {
         final String element = parser.getLocalName();
         if (printWarning && ("note".equals(element) || "meta".equals(element))) {
             // we know that Overpass API returns those elements
-            Main.debug(tr("Undefined element ''{0}'' found in input stream. Skipping.", element));
+            Logging.debug(tr("Undefined element ''{0}'' found in input stream. Skipping.", element));
         } else if (printWarning) {
-            Main.info(tr("Undefined element ''{0}'' found in input stream. Skipping.", element));
+            Logging.info(tr("Undefined element ''{0}'' found in input stream. Skipping.", element));
         }
         while (true) {
             int event = parser.next();
@@ -503,7 +504,7 @@ public class OsmReader extends AbstractReader {
                     throwException(tr("Illegal value for attribute ''version'' on OSM primitive with ID {0}. Got {1}.",
                             Long.toString(current.getUniqueId()), versionString));
                 } else if (version < 0 && current.isNew()) {
-                    Main.warn(tr("Normalizing value of attribute ''version'' of element {0} to {2}, API version is ''{3}''. Got {1}.",
+                    Logging.warn(tr("Normalizing value of attribute ''version'' of element {0} to {2}, API version is ''{3}''. Got {1}.",
                             current.getUniqueId(), version, 0, "0.6"));
                     version = 0;
                 }
@@ -537,10 +538,10 @@ public class OsmReader extends AbstractReader {
             try {
                 current.setChangesetId(Integer.parseInt(v));
             } catch (IllegalArgumentException e) {
-                Main.debug(e.getMessage());
+                Logging.debug(e.getMessage());
                 if (current.isNew()) {
                     // for a new primitive we just log a warning
-                    Main.info(tr("Illegal value for attribute ''changeset'' on new object {1}. Got {0}. Resetting to 0.",
+                    Logging.info(tr("Illegal value for attribute ''changeset'' on new object {1}. Got {0}. Resetting to 0.",
                             v, current.getUniqueId()));
                     current.setChangesetId(0);
                 } else {
@@ -549,14 +550,14 @@ public class OsmReader extends AbstractReader {
                 }
             } catch (IllegalStateException e) {
                 // thrown for positive changeset id on new primitives
-                Main.debug(e);
-                Main.info(e.getMessage());
+                Logging.debug(e);
+                Logging.info(e.getMessage());
                 current.setChangesetId(0);
             }
             if (current.getChangesetId() <= 0) {
                 if (current.isNew()) {
                     // for a new primitive we just log a warning
-                    Main.info(tr("Illegal value for attribute ''changeset'' on new object {1}. Got {0}. Resetting to 0.",
+                    Logging.info(tr("Illegal value for attribute ''changeset'' on new object {1}. Got {0}. Resetting to 0.",
                             v, current.getUniqueId()));
                     current.setChangesetId(0);
                 } else {
@@ -630,7 +631,7 @@ public class OsmReader extends AbstractReader {
             return getDataSet();
         } catch (IllegalDataException e) {
             throw e;
-        } catch (XmlStreamParsingException e) {
+        } catch (XmlStreamParsingException | UncheckedParseException e) {
             throw new IllegalDataException(e.getMessage(), e);
         } catch (XMLStreamException e) {
             String msg = e.getMessage();
diff --git a/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java b/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
index 51f843b..b73db35 100644
--- a/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
+++ b/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
@@ -12,13 +12,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetDataSet;
 import org.openstreetmap.josm.data.osm.DataSet;
 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.Logging;
 import org.openstreetmap.josm.tools.XmlParsingException;
 
 /**
@@ -68,7 +68,7 @@ public class OsmServerChangesetReader extends OsmServerReader {
                 monitor.indeterminateSubTask(tr("Downloading changesets ..."));
                 result = OsmChangesetParser.parse(in, monitor.createSubTaskMonitor(1, true));
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         } catch (OsmTransferException e) {
             throw e;
@@ -109,7 +109,7 @@ public class OsmServerChangesetReader extends OsmServerReader {
                     return null;
                 result = changesets.get(0);
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         } catch (OsmTransferException e) {
             throw e;
@@ -159,7 +159,7 @@ public class OsmServerChangesetReader extends OsmServerReader {
                     }
                     ret.addAll(changesets);
                 } catch (IOException e) {
-                    Main.warn(e);
+                    Logging.warn(e);
                 }
                 monitor.worked(1);
             }
@@ -200,7 +200,7 @@ public class OsmServerChangesetReader extends OsmServerReader {
                 OsmChangesetContentParser parser = new OsmChangesetContentParser(in);
                 result = parser.parse(monitor.createSubTaskMonitor(1, true));
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         } catch (XmlParsingException e) {
             throw new OsmTransferException(e);
diff --git a/src/org/openstreetmap/josm/io/OsmServerLocationReader.java b/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
index acd2c75..77a593d 100644
--- a/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
+++ b/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
@@ -8,7 +8,6 @@ import java.io.InputStream;
 import java.util.Collections;
 import java.util.List;
 
-import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -22,6 +21,89 @@ import org.xml.sax.SAXException;
  */
 public class OsmServerLocationReader extends OsmServerReader {
 
+    // CHECKSTYLE.OFF: MethodParamPad
+    // CHECKSTYLE.OFF: SingleSpaceSeparator
+
+    /**
+     * Patterns for OSM data download URLs.
+     * @since 12679
+     */
+    public enum OsmUrlPattern {
+        OSM_API_URL           ("https?://.*/api/0.6/(map|nodes?|ways?|relations?|\\*).*"),
+        OVERPASS_API_URL      ("https?://.*/interpreter\\?data=.*"),
+        OVERPASS_API_XAPI_URL ("https?://.*/xapi(\\?.*\\[@meta\\]|_meta\\?).*"),
+        EXTERNAL_OSM_FILE     ("https?://.*/.*\\.osm");
+
+        private final String urlPattern;
+
+        OsmUrlPattern(String urlPattern) {
+            this.urlPattern = urlPattern;
+        }
+
+        /**
+         * Returns the URL pattern.
+         * @return the URL pattern
+         */
+        public String pattern() {
+            return urlPattern;
+        }
+    }
+
+    /**
+     * Patterns for GPX download URLs.
+     * @since 12679
+     */
+    public enum GpxUrlPattern {
+        TRACE_ID     ("https?://.*(osm|openstreetmap).org/trace/\\p{Digit}+/data"),
+        USER_TRACE_ID("https?://.*(osm|openstreetmap).org/user/[^/]+/traces/(\\p{Digit}+)"),
+        EDIT_TRACE_ID("https?://.*(osm|openstreetmap).org/edit/?\\?gpx=(\\p{Digit}+)(#.*)?"),
+
+        TRACKPOINTS_BBOX("https?://.*/api/0.6/trackpoints\\?bbox=.*,.*,.*,.*"),
+
+        EXTERNAL_GPX_SCRIPT("https?://.*exportgpx.*"),
+        EXTERNAL_GPX_FILE  ("https?://.*/(.*\\.gpx)");
+
+        private final String urlPattern;
+
+        GpxUrlPattern(String urlPattern) {
+            this.urlPattern = urlPattern;
+        }
+
+        /**
+         * Returns the URL pattern.
+         * @return the URL pattern
+         */
+        public String pattern() {
+            return urlPattern;
+        }
+    }
+
+    /**
+     * Patterns for Note download URLs.
+     * @since 12679
+     */
+    public enum NoteUrlPattern {
+        API_URL  ("https?://.*/api/0.6/notes.*"),
+        DUMP_FILE("https?://.*/(.*\\.osn(.bz2)?)");
+
+        private final String urlPattern;
+
+        NoteUrlPattern(String urlPattern) {
+            this.urlPattern = urlPattern;
+        }
+
+        /**
+         * Returns the URL pattern.
+         * @return the URL pattern
+         */
+        public String pattern() {
+            return urlPattern;
+        }
+    }
+
+    // CHECKSTYLE.ON: SingleSpaceSeparator
+    // CHECKSTYLE.ON: MethodParamPad
+
     protected final String url;
 
     /**
@@ -162,7 +244,7 @@ public class OsmServerLocationReader extends OsmServerReader {
             GpxReader reader = new GpxReader(compression.getUncompressedInputStream(in));
             gpxParsedProperly = reader.parse(false);
             GpxData result = reader.getGpxData();
-            result.fromServer = DownloadGpsTask.isFromServer(url);
+            result.fromServer = isGpxFromServer(url);
             return result;
         }
     }
@@ -184,4 +266,15 @@ public class OsmServerLocationReader extends OsmServerReader {
             return reader.parse();
         }
     }
+
+    /**
+     * Determines if the given URL denotes an OSM gpx-related API call.
+     * @param url The url to check
+     * @return true if the url matches "Trace ID" API call or "Trackpoints bbox" API call, false otherwise
+     * @see GpxData#fromServer
+     * @since 12679
+     */
+    public static final boolean isGpxFromServer(String url) {
+        return url != null && (url.matches(GpxUrlPattern.TRACE_ID.pattern()) || url.matches(GpxUrlPattern.TRACKPOINTS_BBOX.pattern()));
+    }
 }
diff --git a/src/org/openstreetmap/josm/io/OsmServerReader.java b/src/org/openstreetmap/josm/io/OsmServerReader.java
index 12e5d07..37e8e46 100644
--- a/src/org/openstreetmap/josm/io/OsmServerReader.java
+++ b/src/org/openstreetmap/josm/io/OsmServerReader.java
@@ -20,6 +20,7 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlParsingException;
 import org.w3c.dom.Document;
@@ -47,7 +48,7 @@ public abstract class OsmServerReader extends OsmConnection {
         try {
             doAuthenticate = OsmApi.isUsingOAuth() && CredentialsManager.getInstance().lookupOAuthAccessToken() != null;
         } catch (CredentialsAgentException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
@@ -118,7 +119,7 @@ public abstract class OsmServerReader extends OsmConnection {
     }
 
     /**
-     * Open a connection to the given url and return a reader on the input stream
+     * Open a connection to the given url (if HTTP, trough a GET request) and return a reader on the input stream
      * from that connection. In case of user cancel, return <code>null</code>.
      * @param urlStr The exact url to connect to.
      * @param progressMonitor progress monitoring and abort handler
@@ -128,9 +129,28 @@ public abstract class OsmServerReader extends OsmConnection {
      * @return An reader reading the input stream (servers answer) or <code>null</code>.
      * @throws OsmTransferException if data transfer errors occur
      */
-    @SuppressWarnings("resource")
     protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor, String reason,
             boolean uncompressAccordingToContentDisposition) throws OsmTransferException {
+        return getInputStreamRaw(urlStr, progressMonitor, reason, uncompressAccordingToContentDisposition, "GET", null);
+    }
+
+    /**
+     * Open a connection to the given url (if HTTP, with the specified method) and return a reader on the input stream
+     * from that connection. In case of user cancel, return <code>null</code>.
+     * @param urlStr The exact url to connect to.
+     * @param progressMonitor progress monitoring and abort handler
+     * @param reason The reason to show on console. Can be {@code null} if no reason is given
+     * @param uncompressAccordingToContentDisposition Whether to inspect the HTTP header {@code Content-Disposition}
+     *                                                for {@code filename} and uncompress a gzip/bzip2 stream.
+     * @param httpMethod HTTP method ("GET", "POST" or "PUT")
+     * @param requestBody HTTP request body (for "POST" and "PUT" methods only). Must be null for "GET" method.
+     * @return An reader reading the input stream (servers answer) or <code>null</code>.
+     * @throws OsmTransferException if data transfer errors occur
+     * @since 12596
+     */
+    @SuppressWarnings("resource")
+    protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor, String reason,
+            boolean uncompressAccordingToContentDisposition, String httpMethod, byte[] requestBody) throws OsmTransferException {
         try {
             OnlineResource.JOSM_WEBSITE.checkOfflineAccess(urlStr, Main.getJOSMWebsite());
             OnlineResource.OSM_API.checkOfflineAccess(urlStr, OsmApi.getOsmApi().getServerUrl());
@@ -150,9 +170,12 @@ public abstract class OsmServerReader extends OsmConnection {
                 }
             }
 
-            final HttpClient client = HttpClient.create(url);
+            final HttpClient client = HttpClient.create(url, httpMethod)
+                    .setFinishOnCloseOutput(false)
+                    .setReasonForRequest(reason)
+                    .setOutputMessage(tr("Downloading data..."))
+                    .setRequestBody(requestBody);
             activeConnection = client;
-            client.setReasonForRequest(reason);
             adaptRequest(client);
             if (doAuthenticate) {
                 addAuth(client);
@@ -164,7 +187,7 @@ public abstract class OsmServerReader extends OsmConnection {
             try {
                 response = client.connect(progressMonitor);
             } catch (IOException e) {
-                Main.error(e);
+                Logging.error(e);
                 OsmTransferException ote = new OsmTransferException(
                         tr("Could not connect to the OSM server. Please check your internet connection."), e);
                 ote.setUrl(url.toString());
@@ -199,7 +222,7 @@ public abstract class OsmServerReader extends OsmConnection {
         try {
             return response.fetchContent();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             return tr("Reading error text failed.");
         }
     }
diff --git a/src/org/openstreetmap/josm/io/OsmServerWriter.java b/src/org/openstreetmap/josm/io/OsmServerWriter.java
index d6de5b7..1451974 100644
--- a/src/org/openstreetmap/josm/io/OsmServerWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmServerWriter.java
@@ -16,7 +16,6 @@ import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
-import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
diff --git a/src/org/openstreetmap/josm/io/OsmWriter.java b/src/org/openstreetmap/josm/io/OsmWriter.java
index 31dd453..8903e24 100644
--- a/src/org/openstreetmap/josm/io/OsmWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmWriter.java
@@ -204,6 +204,13 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
         }
     }
 
+    void writeLatLon(LatLon ll) {
+        if (ll != null) {
+            out.print(" lat='"+LatLon.cDdHighPecisionFormatter.format(ll.lat())+
+                     "' lon='"+LatLon.cDdHighPecisionFormatter.format(ll.lon())+'\'');
+        }
+    }
+
     @Override
     public void visit(INode n) {
         if (n.isIncomplete()) return;
@@ -211,10 +218,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
         if (!withBody) {
             out.println("/>");
         } else {
-            if (n.getCoor() != null) {
-                out.print(" lat='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lat())+
-                          "' lon='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lon())+'\'');
-            }
+            writeLatLon(n.getCoor());
             addTags(n, "node", true);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/OverpassDownloadReader.java b/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
index 2da3f0f..b338389 100644
--- a/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
+++ b/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
@@ -5,6 +5,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.EnumMap;
 import java.util.Map;
 import java.util.NoSuchElementException;
@@ -17,7 +18,6 @@ import java.util.regex.Pattern;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -35,6 +36,8 @@ import org.openstreetmap.josm.tools.Utils;
  */
 public class OverpassDownloadReader extends BoundingBoxDownloader {
 
+    private static final String DATA_PREFIX = "?data=";
+
     static final class OverpassOsmReader extends OsmReader {
         @Override
         protected void parseUnknown(boolean printWarning) throws XMLStreamException {
@@ -112,6 +115,7 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
      */
     public OverpassDownloadReader(Bounds downloadArea, String overpassServer, String overpassQuery) {
         super(downloadArea);
+        setDoAuthenticate(false);
         this.overpassServer = overpassServer;
         this.overpassQuery = overpassQuery.trim();
     }
@@ -143,7 +147,7 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
         else {
             final String query = this.overpassQuery.replace("{{bbox}}", lat1 + "," + lon1 + "," + lat2 + "," + lon2);
             final String expandedOverpassQuery = expandExtendedQueries(query);
-            return "interpreter?data=" + Utils.encodeUrl(expandedOverpassQuery);
+            return "interpreter" + DATA_PREFIX + Utils.encodeUrl(expandedOverpassQuery);
         }
     }
 
@@ -163,11 +167,11 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
                         matcher.appendReplacement(sb, geocodeArea(matcher.group(2)));
                         break;
                     default:
-                        Main.warn("Unsupported syntax: " + matcher.group(1));
+                        Logging.warn("Unsupported syntax: " + matcher.group(1));
                 }
             } catch (UncheckedParseException ex) {
                 final String msg = tr("Failed to evaluate {0}", matcher.group());
-                Main.warn(ex, msg);
+                Logging.log(Logging.LEVEL_WARN, msg, ex);
                 matcher.appendReplacement(sb, "// " + msg + "\n");
             }
         }
@@ -194,7 +198,11 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
     protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor, String reason,
                                             boolean uncompressAccordingToContentDisposition) throws OsmTransferException {
         try {
-            return super.getInputStreamRaw(urlStr, progressMonitor, reason, uncompressAccordingToContentDisposition);
+            int index = urlStr.indexOf(DATA_PREFIX);
+            // Make an HTTP POST request instead of a simple GET, allows more complex queries
+            return super.getInputStreamRaw(urlStr.substring(0, index),
+                    progressMonitor, reason, uncompressAccordingToContentDisposition,
+                    "POST", Utils.decodeUrl(urlStr.substring(index + DATA_PREFIX.length())).getBytes(StandardCharsets.UTF_8));
         } catch (OsmApiException ex) {
             final String errorIndicator = "Error</strong>: ";
             if (ex.getMessage() != null && ex.getMessage().contains(errorIndicator)) {
@@ -236,7 +244,7 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
                 try {
                     reader = readerClass.getDeclaredConstructor().newInstance();
                 } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/io/ProgressInputStream.java b/src/org/openstreetmap/josm/io/ProgressInputStream.java
index e571d8d..e0c1f2b 100644
--- a/src/org/openstreetmap/josm/io/ProgressInputStream.java
+++ b/src/org/openstreetmap/josm/io/ProgressInputStream.java
@@ -44,7 +44,9 @@ public class ProgressInputStream extends InputStream {
      * @param con the connection to monitor
      * @param progressMonitor the monitor to report to
      * @throws OsmTransferException if any I/O error occurs
+     * @deprecated use {@link org.openstreetmap.josm.tools.HttpClient.Response#getContent}
      */
+    @Deprecated
     public ProgressInputStream(URLConnection con, ProgressMonitor progressMonitor) throws OsmTransferException {
         if (progressMonitor == null) {
             progressMonitor = NullProgressMonitor.INSTANCE;
diff --git a/src/org/openstreetmap/josm/io/ProgressOutputStream.java b/src/org/openstreetmap/josm/io/ProgressOutputStream.java
index 0c3af4b..c9a69f1 100644
--- a/src/org/openstreetmap/josm/io/ProgressOutputStream.java
+++ b/src/org/openstreetmap/josm/io/ProgressOutputStream.java
@@ -30,8 +30,22 @@ public class ProgressOutputStream extends OutputStream {
      * @since 10302
      */
     public ProgressOutputStream(OutputStream out, long size, ProgressMonitor progressMonitor, boolean finishOnClose) {
+        this(out, size, progressMonitor, tr("Uploading data ..."), finishOnClose);
+    }
+
+    /**
+     * Constructs a new {@code ProgressOutputStream}.
+     *
+     * @param out the stream to monitor
+     * @param size the total size which will be sent
+     * @param progressMonitor the monitor to report to
+     * @param message the message that will be displayed by the inner {@link StreamProgressUpdater}
+     * @param finishOnClose whether to call {@link ProgressMonitor#finishTask} when this stream is closed
+     * @since 12711
+     */
+    public ProgressOutputStream(OutputStream out, long size, ProgressMonitor progressMonitor, String message, boolean finishOnClose) {
         this.updater = new StreamProgressUpdater(size,
-                progressMonitor != null ? progressMonitor : NullProgressMonitor.INSTANCE, tr("Uploading data ..."));
+                progressMonitor != null ? progressMonitor : NullProgressMonitor.INSTANCE, message);
         this.out = out;
         this.finishOnClose = finishOnClose;
     }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadStrategy.java b/src/org/openstreetmap/josm/io/UploadStrategy.java
similarity index 93%
rename from src/org/openstreetmap/josm/gui/io/UploadStrategy.java
rename to src/org/openstreetmap/josm/io/UploadStrategy.java
index 1ae798d..138dd5e 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadStrategy.java
+++ b/src/org/openstreetmap/josm/io/UploadStrategy.java
@@ -1,14 +1,16 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.io;
+package org.openstreetmap.josm.io;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.Locale;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * The chunk mode to use when uploading
+ * @since 12687 (moved from {@code gui.io} package)
  */
 public enum UploadStrategy {
     /**
@@ -95,7 +97,7 @@ public enum UploadStrategy {
         }
         UploadStrategy strategy = fromPreference(v);
         if (strategy == null) {
-            Main.warn(tr("Unexpected value for key ''{0}'' in preferences, got ''{1}''", "osm-server.upload-strategy", v));
+            Logging.warn(tr("Unexpected value for key ''{0}'' in preferences, got ''{1}''", "osm-server.upload-strategy", v));
             return DEFAULT_UPLOAD_STRATEGY;
         }
         return strategy;
diff --git a/src/org/openstreetmap/josm/gui/io/UploadStrategySpecification.java b/src/org/openstreetmap/josm/io/UploadStrategySpecification.java
similarity index 98%
rename from src/org/openstreetmap/josm/gui/io/UploadStrategySpecification.java
rename to src/org/openstreetmap/josm/io/UploadStrategySpecification.java
index 0dfcafa..3aeaba3 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadStrategySpecification.java
+++ b/src/org/openstreetmap/josm/io/UploadStrategySpecification.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.io;
+package org.openstreetmap.josm.io;
 
 import java.util.Objects;
 
@@ -13,6 +13,7 @@ import java.util.Objects;
  * <li>the upload chunk size</li>
  * <li>whether to close the changeset used after the upload</li>
  * </ul>
+ * @since 12687 (moved from {@code gui.io} package)
  */
 public class UploadStrategySpecification {
     /** indicates that the chunk size isn't specified */
diff --git a/src/org/openstreetmap/josm/io/ValidatorErrorWriter.java b/src/org/openstreetmap/josm/io/ValidatorErrorWriter.java
new file mode 100644
index 0000000..c8f6eb9
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/ValidatorErrorWriter.java
@@ -0,0 +1,147 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io;
+
+import java.io.BufferedWriter;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.stream.Collectors;
+
+import org.openstreetmap.josm.command.AddPrimitivesCommand;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.ChangePropertyKeyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.validation.OsmValidator;
+import org.openstreetmap.josm.data.validation.Severity;
+import org.openstreetmap.josm.data.validation.Test;
+import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.date.DateUtils;
+
+/**
+ * Class to write a collection of validator errors out to XML.
+ * The format is inspired by the
+ * <a href="https://wiki.openstreetmap.org/wiki/Osmose#Issues_file_format">Osmose API issues file format</a>
+ * @since 12667
+ */
+public class ValidatorErrorWriter extends XmlWriter {
+
+    /**
+     * Constructs a new {@code ValidatorErrorWriter} that will write to the given {@link PrintWriter}.
+     * @param out PrintWriter to write XML to
+     */
+    public ValidatorErrorWriter(PrintWriter out) {
+        super(out);
+    }
+
+    /**
+     * Constructs a new {@code ValidatorErrorWriter} that will write to a given {@link OutputStream}.
+     * @param out OutputStream to write XML to
+     */
+    public ValidatorErrorWriter(OutputStream out) {
+        super(new PrintWriter(new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8))));
+    }
+
+    /**
+     * Write validator errors to designated output target
+     * @param validationErrors Test error collection to write
+     */
+    public void write(Collection<TestError> validationErrors) {
+        Set<Test> analysers = validationErrors.stream().map(TestError::getTester).collect(Collectors.toCollection(TreeSet::new));
+        String timestamp = DateUtils.fromDate(new Date());
+
+        out.println("<?xml version='1.0' encoding='UTF-8'?>");
+        out.println("<analysers generator='JOSM' timestamp='"+timestamp+"'>");
+
+        OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(out, true, OsmChangeBuilder.DEFAULT_API_VERSION);
+        String lang = LanguageInfo.getJOSMLocaleCode();
+
+        for (Test test : analysers) {
+            out.println("  <analyser timestamp='"+timestamp+"' name='"+XmlWriter.encode(test.getName())+"'>");
+            // Build map of test error classes for the current test
+            Map<ErrorClass, List<TestError>> map = new HashMap<>();
+            for (Entry<Severity, Map<String, Map<String, List<TestError>>>> e1 :
+                OsmValidator.getErrorsBySeverityMessageDescription(validationErrors, e -> e.getTester() == test).entrySet()) {
+                for (Entry<String, Map<String, List<TestError>>> e2 : e1.getValue().entrySet()) {
+                    ErrorClass errorClass = new ErrorClass(e1.getKey(), e2.getKey());
+                    List<TestError> list = map.get(errorClass);
+                    if (list == null) {
+                        list = new ArrayList<>();
+                        map.put(errorClass, list);
+                    }
+                    e2.getValue().values().stream().forEach(list::addAll);
+                }
+            }
+            // Write classes
+            for (ErrorClass ec : map.keySet()) {
+                out.println("    <class id='"+ec.id+"' level='"+ec.severity.getLevel()+"'>");
+                out.println("      <classtext lang='"+XmlWriter.encode(lang)+"' title='"+XmlWriter.encode(ec.message)+"'/>");
+                out.println("    </class>");
+            }
+
+            // Write errors
+            for (Entry<ErrorClass, List<TestError>> entry : map.entrySet()) {
+                for (TestError error : entry.getValue()) {
+                    LatLon ll = error.getPrimitives().iterator().next().getBBox().getCenter();
+                    out.println("    <error class='"+entry.getKey().id+"'>");
+                    out.print("      <location");
+                    osmWriter.writeLatLon(ll);
+                    out.println("/>");
+                    for (OsmPrimitive p : error.getPrimitives()) {
+                        p.accept(osmWriter);
+                    }
+                    out.println("      <text lang='"+XmlWriter.encode(lang)+"' value='"+XmlWriter.encode(error.getDescription())+"'/>");
+                    if (error.isFixable()) {
+                        out.println("      <fixes>");
+                        Command fix = error.getFix();
+                        if (fix instanceof AddPrimitivesCommand) {
+                            Logging.info("TODO: {0}", fix);
+                        } else if (fix instanceof DeleteCommand) {
+                            Logging.info("TODO: {0}", fix);
+                        } else if (fix instanceof ChangePropertyCommand) {
+                            Logging.info("TODO: {0}", fix);
+                        } else if (fix instanceof ChangePropertyKeyCommand) {
+                            Logging.info("TODO: {0}", fix);
+                        } else {
+                            Logging.warn("Unsupported command type: {0}", fix);
+                        }
+                        out.println("      </fixes>");
+                    }
+                    out.println("    </error>");
+                }
+            }
+
+            out.println("  </analyser>");
+        }
+
+        out.println("</analysers>");
+        out.flush();
+    }
+
+    private static class ErrorClass {
+        static int idCounter;
+        final Severity severity;
+        final String message;
+        final int id;
+
+        ErrorClass(Severity severity, String message) {
+            this.severity = severity;
+            this.message = message;
+            this.id = ++idCounter;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/io/audio/AudioPlayer.java b/src/org/openstreetmap/josm/io/audio/AudioPlayer.java
index 90bd2c9..697b95f 100644
--- a/src/org/openstreetmap/josm/io/audio/AudioPlayer.java
+++ b/src/org/openstreetmap/josm/io/audio/AudioPlayer.java
@@ -6,6 +6,7 @@ import java.net.URL;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Creates and controls a separate audio player thread.
@@ -167,7 +168,7 @@ public final class AudioPlayer extends Thread implements AudioListener {
      */
     public static boolean paused() {
         AudioPlayer instance = AudioPlayer.getInstance();
-        return instance == null ? false : (instance.state == State.PAUSED);
+        return instance != null && instance.state == State.PAUSED;
     }
 
     /**
@@ -176,7 +177,7 @@ public final class AudioPlayer extends Thread implements AudioListener {
      */
     public static boolean playing() {
         AudioPlayer instance = AudioPlayer.getInstance();
-        return instance == null ? false : (instance.state == State.PLAYING);
+        return instance != null && instance.state == State.PLAYING;
     }
 
     /**
@@ -209,7 +210,7 @@ public final class AudioPlayer extends Thread implements AudioListener {
             audioPlayer = new AudioPlayer();
             return audioPlayer;
         } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException ex) {
-            Main.error(ex);
+            Logging.error(ex);
             return null;
         }
     }
@@ -222,7 +223,7 @@ public final class AudioPlayer extends Thread implements AudioListener {
             try {
                 pause();
             } catch (InterruptedException | IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
             audioPlayer.playingUrl = null;
         }
@@ -237,8 +238,8 @@ public final class AudioPlayer extends Thread implements AudioListener {
         try {
             soundPlayer = new JavaFxMediaPlayer();
         } catch (NoClassDefFoundError | InterruptedException e) {
-            Main.debug(e);
-            Main.warn("Java FX is unavailable. Falling back to Java Sound API");
+            Logging.debug(e);
+            Logging.warn("Java FX is unavailable. Falling back to Java Sound API");
             soundPlayer = new JavaSoundPlayer(leadIn, calibration);
         }
         soundPlayer.addAudioListener(this);
@@ -297,12 +298,12 @@ public final class AudioPlayer extends Thread implements AudioListener {
                     }
                     command.ok(stateChange);
                 } catch (AudioException | IOException | SecurityException | IllegalArgumentException startPlayingException) {
-                    Main.error(startPlayingException);
+                    Logging.error(startPlayingException);
                     command.failed(startPlayingException); // sets state
                 }
             } catch (AudioException | IOException e) {
                 state = State.NOTPLAYING;
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/io/audio/AudioUtil.java b/src/org/openstreetmap/josm/io/audio/AudioUtil.java
index 2dd568a..ff03b03 100644
--- a/src/org/openstreetmap/josm/io/audio/AudioUtil.java
+++ b/src/org/openstreetmap/josm/io/audio/AudioUtil.java
@@ -15,6 +15,7 @@ import javax.sound.sampled.UnsupportedAudioFileException;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Utils functions for audio.
@@ -45,7 +46,7 @@ public final class AudioUtil {
             double calibration = Main.pref.getDouble("audio.calibration", 1.0 /* default, ratio */);
             return naturalLength / calibration;
         } catch (UnsupportedAudioFileException | IOException e) {
-            Main.debug(e);
+            Logging.debug(e);
             return 0.0;
         }
     }
@@ -61,7 +62,7 @@ public final class AudioUtil {
             msg = tr("unspecified reason");
         else
             msg = tr(msg);
-        Main.error(msg);
+        Logging.error(msg);
         if (!GraphicsEnvironment.isHeadless()) {
             JOptionPane.showMessageDialog(Main.parent,
                     "<html><p>" + msg + "</p></html>",
diff --git a/src/org/openstreetmap/josm/io/audio/JavaSoundPlayer.java b/src/org/openstreetmap/josm/io/audio/JavaSoundPlayer.java
index 303bf36..6bc5042 100644
--- a/src/org/openstreetmap/josm/io/audio/JavaSoundPlayer.java
+++ b/src/org/openstreetmap/josm/io/audio/JavaSoundPlayer.java
@@ -14,10 +14,10 @@ import javax.sound.sampled.LineUnavailableException;
 import javax.sound.sampled.SourceDataLine;
 import javax.sound.sampled.UnsupportedAudioFileException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.audio.AudioPlayer.Execute;
 import org.openstreetmap.josm.io.audio.AudioPlayer.State;
 import org.openstreetmap.josm.tools.ListenerList;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -89,7 +89,7 @@ class JavaSoundPlayer implements SoundPlayer {
                     bytesToSkip -= skippedBytes;
                     if (skippedBytes == 0) {
                         // Avoid inifinite loop
-                        Main.warn("Unable to skip bytes from audio input stream");
+                        Logging.warn("Unable to skip bytes from audio input stream");
                         bytesToSkip = 0;
                     }
                 }
diff --git a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
index 8cdb4f8..a8e5a32 100644
--- a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
+++ b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
@@ -10,6 +10,12 @@ import java.util.Map;
 import org.openstreetmap.josm.gui.io.CredentialDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
+/**
+ * Partial implementation of the {@link CredentialsAgent} interface.
+ * <p>
+ * Provides a memory cache for the credentials and means to query the information 
+ * from the user.
+ */
 public abstract class AbstractCredentialsAgent implements CredentialsAgent {
 
     protected Map<RequestorType, PasswordAuthentication> memoryCredentialsCache = new EnumMap<>(RequestorType.class);
diff --git a/src/org/openstreetmap/josm/io/auth/CredentialsAgentException.java b/src/org/openstreetmap/josm/io/auth/CredentialsAgentException.java
index 0816f1d..2fc7789 100644
--- a/src/org/openstreetmap/josm/io/auth/CredentialsAgentException.java
+++ b/src/org/openstreetmap/josm/io/auth/CredentialsAgentException.java
@@ -1,6 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.auth;
 
+/**
+ * Exception thrown for errors while handling credentials.
+ * <p>
+ * Missing credentials and discarded password dialog are not considered an error.
+ * At time of writing, methods return <code>null</code> in this case.
+ * @see CredentialsAgent
+ */
 public class CredentialsAgentException extends Exception {
 
     /**
diff --git a/src/org/openstreetmap/josm/io/auth/CredentialsManager.java b/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
index 8c0d98c..0c93610 100644
--- a/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
+++ b/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
@@ -6,11 +6,11 @@ import java.net.Authenticator.RequestorType;
 import java.net.PasswordAuthentication;
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * CredentialManager is a factory for the single credential agent used.
@@ -103,7 +103,7 @@ public class CredentialsManager implements CredentialsAgent {
                 username = auth.getUserName();
             }
         } catch (CredentialsAgentException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
             return null;
         }
         if (username == null) return null;
diff --git a/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java b/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
index 246ed47..884fb61 100644
--- a/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
+++ b/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
@@ -7,8 +7,8 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Objects;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
 /**
@@ -64,7 +64,7 @@ public final class DefaultAuthenticator extends Authenticator {
             }
             return new PasswordAuthentication(response.getUsername(), response.getPassword());
         } catch (CredentialsAgentException e) {
-            Main.error(e);
+            Logging.error(e);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
index f62fd68..8a6862d 100644
--- a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
+++ b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
@@ -14,7 +14,6 @@ import java.util.Stack;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryBounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
@@ -23,6 +22,7 @@ import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.Attributes;
@@ -96,7 +96,7 @@ public class ImageryReader implements Closeable {
         } catch (SAXException e) {
             throw e;
         } catch (ParserConfigurationException e) {
-            Main.error(e); // broken SAXException chaining
+            Logging.error(e); // broken SAXException chaining
             throw new SAXException(e);
         }
     }
@@ -218,7 +218,7 @@ public class ImageryReader implements Closeable {
                                         atts.getValue("max-lat") + ',' +
                                         atts.getValue("max-lon"), ",");
                     } catch (IllegalArgumentException e) {
-                        Main.trace(e);
+                        Logging.trace(e);
                         break;
                     }
                     newState = State.BOUNDS;
@@ -251,7 +251,7 @@ public class ImageryReader implements Closeable {
                     try {
                         shape.addPoint(atts.getValue("lat"), atts.getValue("lon"));
                     } catch (IllegalArgumentException e) {
-                        Main.trace(e);
+                        Logging.trace(e);
                         break;
                     }
                 }
diff --git a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
index 0168b38..397881f 100644
--- a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
+++ b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
@@ -24,11 +24,12 @@ import javax.imageio.ImageIO;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.HttpClient.Response;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -221,18 +222,23 @@ public class WMSImagery {
             }
             serviceUrl = new URL(serviceUrlStr);
         } catch (HeadlessException e) {
-            Main.warn(e);
+            Logging.warn(e);
             return;
         }
 
-        final String incomingData = HttpClient.create(getCapabilitiesUrl).connect().fetchContent();
-        Main.debug("Server response to Capabilities request:");
-        Main.debug(incomingData);
+        final Response response = HttpClient.create(getCapabilitiesUrl).connect();
+        final String incomingData = response.fetchContent();
+        Logging.debug("Server response to Capabilities request:");
+        Logging.debug(incomingData);
+
+        if (response.getResponseCode() >= 400) {
+            throw new WMSGetCapabilitiesException(response.getResponseMessage(), incomingData);
+        }
 
         try {
             DocumentBuilder builder = Utils.newSafeDOMBuilder();
             builder.setEntityResolver((publicId, systemId) -> {
-                Main.info("Ignoring DTD " + publicId + ", " + systemId);
+                Logging.info("Ignoring DTD " + publicId + ", " + systemId);
                 return new InputSource(new StringReader(""));
             });
             Document document = builder.parse(new InputSource(new StringReader(incomingData)));
@@ -260,7 +266,7 @@ public class WMSImagery {
             if (child != null) {
                 String baseURL = child.getAttribute("xlink:href");
                 if (!baseURL.equals(serviceUrlStr)) {
-                    Main.info("GetCapabilities specifies a different service URL: " + baseURL);
+                    Logging.info("GetCapabilities specifies a different service URL: " + baseURL);
                     serviceUrl = new URL(baseURL);
                 }
             }
@@ -276,7 +282,7 @@ public class WMSImagery {
     private static boolean isImageFormatSupportedWarn(String format) {
         boolean isFormatSupported = isImageFormatSupported(format);
         if (!isFormatSupported) {
-            Main.info("Skipping unsupported image format {0}", format);
+            Logging.info("Skipping unsupported image format {0}", format);
         }
         return isFormatSupported;
     }
diff --git a/src/org/openstreetmap/josm/io/nmea/NmeaReader.java b/src/org/openstreetmap/josm/io/nmea/NmeaReader.java
index e7ec9dc..e0a6a48 100644
--- a/src/org/openstreetmap/josm/io/nmea/NmeaReader.java
+++ b/src/org/openstreetmap/josm/io/nmea/NmeaReader.java
@@ -15,14 +15,13 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.Optional;
 
-import org.openstreetmap.josm.Main;
 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.ImmutableGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -134,11 +133,11 @@ public class NmeaReader {
     private final SimpleDateFormat rmcTimeFmt = new SimpleDateFormat("ddMMyyHHmmss.SSS", Locale.ENGLISH);
     private final SimpleDateFormat rmcTimeFmtStd = new SimpleDateFormat("ddMMyyHHmmss", Locale.ENGLISH);
 
-    private Date readTime(String p) {
+    private Date readTime(String p) throws IllegalDataException {
         Date d = Optional.ofNullable(rmcTimeFmt.parse(p, new ParsePosition(0)))
                 .orElseGet(() -> rmcTimeFmtStd.parse(p, new ParsePosition(0)));
         if (d == null)
-            throw new JosmRuntimeException("Date is malformed");
+            throw new IllegalDataException("Date is malformed: '" + p + "'");
         return d;
     }
 
@@ -209,7 +208,7 @@ public class NmeaReader {
             data.tracks.add(new ImmutableGpxTrack(currentTrack, Collections.<String, Object>emptyMap()));
 
         } catch (IllegalDataException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
@@ -479,8 +478,11 @@ public class NmeaReader {
             return true;
 
         } catch (IllegalArgumentException | IndexOutOfBoundsException | IllegalDataException ex) {
-            // out of bounds and such
-            Main.debug(ex);
+            if (ps.malformed < 5) {
+                Logging.warn(ex);
+            } else {
+                Logging.debug(ex);
+            }
             ps.malformed++;
             ps.pWp = null;
             return false;
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
index 362775a..e08a2d1 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.tools.GBC;
@@ -250,13 +251,13 @@ public class AddTagsDialog extends ExtendedDialog {
     @Override
     protected void buttonAction(int buttonIndex, ActionEvent evt) {
         // if layer all layers were closed, ignore all actions
-        if (buttonIndex != 2 && Main.getLayerManager().getEditDataSet() != null) {
+        if (buttonIndex != 2 && MainApplication.getLayerManager().getEditDataSet() != null) {
             TableModel tm = propertyTable.getModel();
             for (int i = 0; i < tm.getRowCount(); i++) {
                 if (buttonIndex == 1 || (Boolean) tm.getValueAt(i, 0)) {
                     String key = (String) tm.getValueAt(i, 1);
                     Object value = tm.getValueAt(i, 2);
-                    Main.main.undoRedo.add(new ChangePropertyCommand(sel,
+                    MainApplication.undoRedo.add(new ChangePropertyCommand(sel,
                             key, value instanceof String ? (String) value : ""));
                 }
             }
@@ -308,9 +309,9 @@ public class AddTagsDialog extends ExtendedDialog {
      */
     public static void addTags(String[][] keyValue, String sender, Collection<? extends OsmPrimitive> primitives) {
         if (trustedSenders.contains(sender)) {
-            if (Main.getLayerManager().getEditDataSet() != null) {
+            if (MainApplication.getLayerManager().getEditDataSet() != null) {
                 for (String[] row : keyValue) {
-                    Main.main.undoRedo.add(new ChangePropertyCommand(primitives, row[0], row[1]));
+                    MainApplication.undoRedo.add(new ChangePropertyCommand(primitives, row[0], row[1]));
                 }
             }
         } else {
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
index 321a335..3373873 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
@@ -10,6 +10,7 @@ import java.net.UnknownHostException;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Manager class for remote control operations.
@@ -46,7 +47,9 @@ public class RemoteControl {
      */
     public static void start() {
         RemoteControlHttpServer.restartRemoteControlHttpServer();
-        RemoteControlHttpsServer.restartRemoteControlHttpsServer();
+        if (supportsHttps()) {
+            RemoteControlHttpsServer.restartRemoteControlHttpsServer();
+        }
     }
 
     /**
@@ -55,7 +58,23 @@ public class RemoteControl {
      */
     public static void stop() {
         RemoteControlHttpServer.stopRemoteControlHttpServer();
-        RemoteControlHttpsServer.stopRemoteControlHttpsServer();
+        if (supportsHttps()) {
+            RemoteControlHttpsServer.stopRemoteControlHttpsServer();
+        }
+    }
+
+    /**
+     * Determines if the current JVM support HTTPS remote control.
+     * @return {@code true} if the JVM provides {@code sun.security.x509} classes
+     * @since 12703
+     */
+    public static boolean supportsHttps() {
+        try {
+            return Class.forName("sun.security.x509.GeneralName") != null;
+        } catch (ClassNotFoundException e) {
+            Logging.trace(e);
+            return false;
+        }
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
index 899507b..b4d85cf 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
@@ -9,6 +9,7 @@ import java.net.Socket;
 import java.net.SocketException;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Simple HTTP server that spawns a {@link RequestProcessor} for every
@@ -36,8 +37,8 @@ public class RemoteControlHttpServer extends Thread {
             instance4 = new RemoteControlHttpServer(port, false);
             instance4.start();
         } catch (IOException ex) {
-            Main.debug(ex);
-            Main.warn(marktr("Cannot start IPv4 remotecontrol server on port {0}: {1}"),
+            Logging.debug(ex);
+            Logging.warn(marktr("Cannot start IPv4 remotecontrol server on port {0}: {1}"),
                     Integer.toString(port), ex.getLocalizedMessage());
         }
         try {
@@ -46,8 +47,8 @@ public class RemoteControlHttpServer extends Thread {
         } catch (IOException ex) {
             /* only show error when we also have no IPv4 */
             if (instance4 == null) {
-                Main.debug(ex);
-                Main.warn(marktr("Cannot start IPv6 remotecontrol server on port {0}: {1}"),
+                Logging.debug(ex);
+                Logging.warn(marktr("Cannot start IPv6 remotecontrol server on port {0}: {1}"),
                     Integer.toString(port), ex.getLocalizedMessage());
             }
         }
@@ -62,7 +63,7 @@ public class RemoteControlHttpServer extends Thread {
             try {
                 instance4.stopServer();
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
             instance4 = null;
         }
@@ -70,7 +71,7 @@ public class RemoteControlHttpServer extends Thread {
             try {
                 instance6.stopServer();
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
             instance6 = null;
         }
@@ -95,7 +96,7 @@ public class RemoteControlHttpServer extends Thread {
      */
     @Override
     public void run() {
-        Main.info(marktr("RemoteControl::Accepting remote connections on {0}:{1}"),
+        Logging.info(marktr("RemoteControl::Accepting remote connections on {0}:{1}"),
                 server.getInetAddress(), Integer.toString(server.getLocalPort()));
         while (true) {
             try {
@@ -104,13 +105,13 @@ public class RemoteControlHttpServer extends Thread {
                 RequestProcessor.processRequest(request);
             } catch (SocketException e) {
                 if (!server.isClosed()) {
-                    Main.error(e);
+                    Logging.error(e);
                 } else {
                     // stop the thread automatically if server is stopped
                     return;
                 }
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
         }
     }
@@ -121,7 +122,7 @@ public class RemoteControlHttpServer extends Thread {
      * @throws IOException if any I/O error occurs
      */
     public void stopServer() throws IOException {
-        Main.info(marktr("RemoteControl::Server {0}:{1} stopped."),
+        Logging.info(marktr("RemoteControl::Server {0}:{1} stopped."),
         server.getInetAddress(), Integer.toString(server.getLocalPort()));
         server.close();
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
index d387f50..7eabc16 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
@@ -40,6 +40,7 @@ import javax.net.ssl.TrustManagerFactory;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.tools.Logging;
 
 import sun.security.util.ObjectIdentifier;
 import sun.security.x509.AlgorithmId;
@@ -207,7 +208,7 @@ public class RemoteControlHttpsServer extends Thread {
         Files.createDirectories(dir);
 
         if (!path.toFile().exists()) {
-            Main.debug("No keystore found, creating a new one");
+            Logging.debug("No keystore found, creating a new one");
 
             // Create new keystore like previous one generated with JDK keytool as follows:
             // keytool -genkeypair -storepass josm_ssl -keypass josm_ssl -alias josm_localhost -dname "CN=localhost, OU=JOSM, O=OpenStreetMap"
@@ -251,9 +252,9 @@ public class RemoteControlHttpsServer extends Thread {
             KeyStore ks = KeyStore.getInstance("JKS");
             ks.load(in, KEYSTORE_PASSWORD.get().toCharArray());
 
-            if (Main.isDebugEnabled()) {
+            if (Logging.isDebugEnabled()) {
                 for (Enumeration<String> aliases = ks.aliases(); aliases.hasMoreElements();) {
-                    Main.debug("Alias in JOSM keystore: "+aliases.nextElement());
+                    Logging.debug("Alias in JOSM keystore: {0}", aliases.nextElement());
                 }
             }
             return ks;
@@ -277,9 +278,9 @@ public class RemoteControlHttpsServer extends Thread {
         sslContext = SSLContext.getInstance("TLS");
         sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
 
-        if (Main.isTraceEnabled()) {
-            Main.trace("SSL Context protocol: " + sslContext.getProtocol());
-            Main.trace("SSL Context provider: " + sslContext.getProvider());
+        if (Logging.isTraceEnabled()) {
+            Logging.trace("SSL Context protocol: {0}", sslContext.getProtocol());
+            Logging.trace("SSL Context provider: {0}", sslContext.getProvider());
         }
 
         setupPlatform(ks);
@@ -315,8 +316,8 @@ public class RemoteControlHttpsServer extends Thread {
                 instance4 = new RemoteControlHttpsServer(port, false);
                 instance4.start();
             } catch (IOException | GeneralSecurityException ex) {
-                Main.debug(ex);
-                Main.warn(marktr("Cannot start IPv4 remotecontrol https server on port {0}: {1}"),
+                Logging.debug(ex);
+                Logging.warn(marktr("Cannot start IPv4 remotecontrol https server on port {0}: {1}"),
                         Integer.toString(port), ex.getLocalizedMessage());
             }
             try {
@@ -325,8 +326,8 @@ public class RemoteControlHttpsServer extends Thread {
             } catch (IOException | GeneralSecurityException ex) {
                 /* only show error when we also have no IPv4 */
                 if (instance4 == null) {
-                    Main.debug(ex);
-                    Main.warn(marktr("Cannot start IPv6 remotecontrol https server on port {0}: {1}"),
+                    Logging.debug(ex);
+                    Logging.warn(marktr("Cannot start IPv6 remotecontrol https server on port {0}: {1}"),
                         Integer.toString(port), ex.getLocalizedMessage());
                 }
             }
@@ -341,7 +342,7 @@ public class RemoteControlHttpsServer extends Thread {
             try {
                 instance4.stopServer();
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
             instance4 = null;
         }
@@ -349,7 +350,7 @@ public class RemoteControlHttpsServer extends Thread {
             try {
                 instance6.stopServer();
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
             instance6 = null;
         }
@@ -371,21 +372,21 @@ public class RemoteControlHttpsServer extends Thread {
 
         // Create SSL Server factory
         SSLServerSocketFactory factory = sslContext.getServerSocketFactory();
-        if (Main.isTraceEnabled()) {
-            Main.trace("SSL factory - Supported Cipher suites: "+Arrays.toString(factory.getSupportedCipherSuites()));
+        if (Logging.isTraceEnabled()) {
+            Logging.trace("SSL factory - Supported Cipher suites: {0}", Arrays.toString(factory.getSupportedCipherSuites()));
         }
 
         this.server = factory.createServerSocket(port, 1, ipv6 ?
             RemoteControl.getInet6Address() : RemoteControl.getInet4Address());
 
-        if (Main.isTraceEnabled() && server instanceof SSLServerSocket) {
+        if (Logging.isTraceEnabled() && server instanceof SSLServerSocket) {
             SSLServerSocket sslServer = (SSLServerSocket) server;
-            Main.trace("SSL server - Enabled Cipher suites: "+Arrays.toString(sslServer.getEnabledCipherSuites()));
-            Main.trace("SSL server - Enabled Protocols: "+Arrays.toString(sslServer.getEnabledProtocols()));
-            Main.trace("SSL server - Enable Session Creation: "+sslServer.getEnableSessionCreation());
-            Main.trace("SSL server - Need Client Auth: "+sslServer.getNeedClientAuth());
-            Main.trace("SSL server - Want Client Auth: "+sslServer.getWantClientAuth());
-            Main.trace("SSL server - Use Client Mode: "+sslServer.getUseClientMode());
+            Logging.trace("SSL server - Enabled Cipher suites: {0}", Arrays.toString(sslServer.getEnabledCipherSuites()));
+            Logging.trace("SSL server - Enabled Protocols: {0}", Arrays.toString(sslServer.getEnabledProtocols()));
+            Logging.trace("SSL server - Enable Session Creation: {0}", sslServer.getEnableSessionCreation());
+            Logging.trace("SSL server - Need Client Auth: {0}", sslServer.getNeedClientAuth());
+            Logging.trace("SSL server - Want Client Auth: {0}", sslServer.getWantClientAuth());
+            Logging.trace("SSL server - Use Client Mode: {0}", sslServer.getUseClientMode());
         }
     }
 
@@ -394,29 +395,29 @@ public class RemoteControlHttpsServer extends Thread {
      */
     @Override
     public void run() {
-        Main.info(marktr("RemoteControl::Accepting secure remote connections on {0}:{1}"),
+        Logging.info(marktr("RemoteControl::Accepting secure remote connections on {0}:{1}"),
                 server.getInetAddress(), Integer.toString(server.getLocalPort()));
         while (true) {
             try {
                 @SuppressWarnings("resource")
                 Socket request = server.accept();
-                if (Main.isTraceEnabled() && request instanceof SSLSocket) {
+                if (Logging.isTraceEnabled() && request instanceof SSLSocket) {
                     SSLSocket sslSocket = (SSLSocket) request;
-                    Main.trace("SSL socket - Enabled Cipher suites: "+Arrays.toString(sslSocket.getEnabledCipherSuites()));
-                    Main.trace("SSL socket - Enabled Protocols: "+Arrays.toString(sslSocket.getEnabledProtocols()));
-                    Main.trace("SSL socket - Enable Session Creation: "+sslSocket.getEnableSessionCreation());
-                    Main.trace("SSL socket - Need Client Auth: "+sslSocket.getNeedClientAuth());
-                    Main.trace("SSL socket - Want Client Auth: "+sslSocket.getWantClientAuth());
-                    Main.trace("SSL socket - Use Client Mode: "+sslSocket.getUseClientMode());
-                    Main.trace("SSL socket - Session: "+sslSocket.getSession());
+                    Logging.trace("SSL socket - Enabled Cipher suites: {0}", Arrays.toString(sslSocket.getEnabledCipherSuites()));
+                    Logging.trace("SSL socket - Enabled Protocols: {0}", Arrays.toString(sslSocket.getEnabledProtocols()));
+                    Logging.trace("SSL socket - Enable Session Creation: {0}", sslSocket.getEnableSessionCreation());
+                    Logging.trace("SSL socket - Need Client Auth: {0}", sslSocket.getNeedClientAuth());
+                    Logging.trace("SSL socket - Want Client Auth: {0}", sslSocket.getWantClientAuth());
+                    Logging.trace("SSL socket - Use Client Mode: {0}", sslSocket.getUseClientMode());
+                    Logging.trace("SSL socket - Session: {0}", sslSocket.getSession());
                 }
                 RequestProcessor.processRequest(request);
             } catch (SocketException e) {
                 if (!server.isClosed()) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             } catch (IOException ioe) {
-                Main.error(ioe);
+                Logging.error(ioe);
             }
         }
     }
@@ -427,7 +428,7 @@ public class RemoteControlHttpsServer extends Thread {
      * @throws IOException if any I/O error occurs
      */
     public void stopServer() throws IOException {
-        Main.info(marktr("RemoteControl::Server {0}:{1} stopped."),
+        Logging.info(marktr("RemoteControl::Server {0}:{1} stopped."),
         server.getInetAddress(), Integer.toString(server.getLocalPort()));
         server.close();
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
index 61b267b..26394e7 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
@@ -24,7 +24,6 @@ import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.io.remotecontrol.handler.AddNodeHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.AddWayHandler;
@@ -40,6 +39,7 @@ import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHan
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerErrorException;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerForbiddenException;
 import org.openstreetmap.josm.io.remotecontrol.handler.VersionHandler;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -118,11 +118,11 @@ public class RequestProcessor extends Thread {
         }
         String commandWithSlash = '/' + command;
         if (handlers.get(commandWithSlash) != null) {
-            Main.info("RemoteControl: ignoring duplicate command " + command
+            Logging.info("RemoteControl: ignoring duplicate command " + command
                     + " with handler " + handler.getName());
         } else {
             if (!silent) {
-                Main.info("RemoteControl: adding command \"" +
+                Logging.info("RemoteControl: adding command \"" +
                     command + "\" (handled by " + handler.getSimpleName() + ')');
             }
             handlers.put(commandWithSlash, handler);
@@ -160,7 +160,7 @@ public class RequestProcessor extends Thread {
                 sendError(out);
                 return;
             }
-            Main.info("RemoteControl received: " + get);
+            Logging.info("RemoteControl received: " + get);
 
             StringTokenizer st = new StringTokenizer(get);
             if (!st.hasMoreTokens()) {
@@ -246,31 +246,31 @@ public class RequestProcessor extends Thread {
                     out.write(handler.getContent());
                     out.flush();
                 } catch (RequestHandlerErrorException ex) {
-                    Main.debug(ex);
+                    Logging.debug(ex);
                     sendError(out);
                 } catch (RequestHandlerBadRequestException ex) {
-                    Main.debug(ex);
+                    Logging.debug(ex);
                     sendBadRequest(out, ex.getMessage());
                 } catch (RequestHandlerForbiddenException ex) {
-                    Main.debug(ex);
+                    Logging.debug(ex);
                     sendForbidden(out, ex.getMessage());
                 }
             }
 
         } catch (IOException ioe) {
-            Main.debug(Main.getErrorMessage(ioe));
+            Logging.debug(Logging.getErrorMessage(ioe));
         } catch (ReflectiveOperationException e) {
-            Main.error(e);
+            Logging.error(e);
             try {
                 sendError(out);
             } catch (IOException e1) {
-                Main.warn(e1);
+                Logging.warn(e1);
             }
         } finally {
             try {
                 request.close();
             } catch (IOException e) {
-                Main.debug(Main.getErrorMessage(e));
+                Logging.debug(Logging.getErrorMessage(e));
             }
         }
     }
@@ -401,7 +401,7 @@ public class RequestProcessor extends Thread {
                 if (c == null) return null;
                 handler = handlers.get(cmd).getConstructor().newInstance();
             } catch (ReflectiveOperationException ex) {
-                Main.error(ex);
+                Logging.error(ex);
                 return null;
             }
 
@@ -409,7 +409,7 @@ public class RequestProcessor extends Thread {
             printJsonInfo(cmd, r, handler);
             return w.toString();
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
index 965e55d..5a77a0f 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
@@ -13,9 +13,12 @@ import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Handler for add_node request.
@@ -76,16 +79,17 @@ public class AddNodeHandler extends RequestHandler {
     private void addNode(Map<String, String> args) {
 
         // Parse the arguments
-        Main.info("Adding node at (" + lat + ", " + lon + ')');
+        Logging.info("Adding node at (" + lat + ", " + lon + ')');
 
         // Create a new node
         LatLon ll = new LatLon(lat, lon);
 
         Node node = null;
 
-        if (Main.isDisplayingMapView()) {
-            Point p = Main.map.mapView.getPoint(ll);
-            node = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            Point p = mapView.getPoint(ll);
+            node = mapView.getNearestNode(p, OsmPrimitive::isUsable);
             if (node != null && node.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remotecontrol.tolerance", 0.1)) {
                 node = null; // node is too far
             }
@@ -94,14 +98,14 @@ public class AddNodeHandler extends RequestHandler {
         if (node == null) {
             node = new Node(ll);
             // Now execute the commands to add this node.
-            Main.main.undoRedo.add(new AddCommand(node));
+            MainApplication.undoRedo.add(new AddCommand(node));
         }
 
-        Main.getLayerManager().getEditDataSet().setSelected(node);
+        MainApplication.getLayerManager().getEditDataSet().setSelected(node);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
         } else {
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
         // parse parameter addtags=tag1=value1|tag2=vlaue2
         AddTagsDialog.addTags(args, sender, Collections.singleton(node));
@@ -115,7 +119,7 @@ public class AddNodeHandler extends RequestHandler {
         } catch (NumberFormatException e) {
             throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
              throw new RequestHandlerBadRequestException(tr("There is no layer opened to add node"));
         }
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
index f27ab8f..9f4c790 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.io.remotecontrol.handler;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Point;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -22,6 +21,8 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
@@ -109,7 +110,7 @@ public class AddWayHandler extends RequestHandler {
         } else if (allCoordinates.size() == 1) {
             throw new RequestHandlerBadRequestException(tr("One node ways"));
         }
-        if (Main.getLayerManager().getEditLayer() == null) {
+        if (MainApplication.getLayerManager().getEditLayer() == null) {
              throw new RequestHandlerBadRequestException(tr("There is no layer opened to add way"));
         }
     }
@@ -124,9 +125,9 @@ public class AddWayHandler extends RequestHandler {
     Node findOrCreateNode(LatLon ll, List<Command> commands) {
         Node nd = null;
 
-        if (Main.isDisplayingMapView()) {
-            Point p = Main.map.mapView.getPoint(ll);
-            nd = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            nd = mapView.getNearestNode(mapView.getPoint(ll), OsmPrimitive::isUsable);
             if (nd != null && nd.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remote.tolerance", 0.1)) {
                 nd = null; // node is too far
             }
@@ -165,12 +166,12 @@ public class AddWayHandler extends RequestHandler {
         }
         allCoordinates.clear();
         commands.add(new AddCommand(way));
-        Main.main.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
-        Main.getLayerManager().getEditDataSet().setSelected(way);
+        MainApplication.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
+        MainApplication.getLayerManager().getEditDataSet().setSelected(way);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
         } else {
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
         return way;
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
index 4f68860..35b517d 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
@@ -3,9 +3,9 @@ package org.openstreetmap.josm.io.remotecontrol.handler;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 import org.openstreetmap.josm.io.remotecontrol.RequestProcessor;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Reports available commands, their parameters and examples
@@ -36,7 +36,7 @@ public class FeaturesHandler extends RequestHandler {
                if (info != null) {
                    buf.append(info);
                } else {
-                   Main.warn("Unknown handler {0} passed to /features request", s);
+                   Logging.warn("Unknown handler {0} passed to /features request", s);
                }
             }
             buf.append(']');
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
index d50884e..77798dc 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
@@ -5,13 +5,14 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.Arrays;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -76,7 +77,7 @@ public class ImageryHandler extends RequestHandler.RawURLParseRequestHandler {
             try {
                 imgInfo.setDefaultMinZoom(Integer.parseInt(minZoom));
             } catch (NumberFormatException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         String maxZoom = args.get("max_zoom");
@@ -84,7 +85,7 @@ public class ImageryHandler extends RequestHandler.RawURLParseRequestHandler {
             try {
                 imgInfo.setDefaultMaxZoom(Integer.parseInt(maxZoom));
             } catch (NumberFormatException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         return imgInfo;
@@ -93,19 +94,19 @@ public class ImageryHandler extends RequestHandler.RawURLParseRequestHandler {
     @Override
     protected void handleRequest() throws RequestHandlerErrorException {
         final ImageryInfo imgInfo = buildImageryInfo();
-        if (Main.isDisplayingMapView()) {
-            for (ImageryLayer layer : Main.getLayerManager().getLayersOfType(ImageryLayer.class)) {
+        if (MainApplication.isDisplayingMapView()) {
+            for (ImageryLayer layer : MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class)) {
                 if (layer.getInfo().equals(imgInfo)) {
-                    Main.info("Imagery layer already exists: "+imgInfo);
+                    Logging.info("Imagery layer already exists: "+imgInfo);
                     return;
                 }
             }
         }
         GuiHelper.runInEDT(() -> {
             try {
-                Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
+                MainApplication.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
             } catch (IllegalArgumentException e) {
-                Main.error(e, false);
+                Logging.log(Logging.LEVEL_ERROR, e);
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
index 7190516..31a7623 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandler.java
@@ -12,7 +12,9 @@ import java.util.Set;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -35,11 +37,11 @@ public class ImportHandler extends RequestHandler.RawURLParseRequestHandler {
                 // It should maybe be better to reject the request in that case ?
                 // For compatibility reasons with older instances of JOSM, arbitrary choice of DownloadOsmTask
                 // As of 2015-04, Overpass Turbo requires this branch of code ...
-                Main.debug("Remote control, /import: defaulting to DownloadOsmTask");
+                Logging.debug("Remote control, /import: defaulting to DownloadOsmTask");
                 new DownloadOsmTask().loadUrl(isLoadInNewLayer(), url.toExternalForm(), null);
             } else if (Main.pref.getBoolean("remotecontrol.import.interactive", true)) {
                 // OpenLocationAction queries the user if more than one task is suitable
-                Main.main.menu.openLocation.openUrl(isLoadInNewLayer(), url.toExternalForm());
+                MainApplication.getMenu().openLocation.openUrl(isLoadInNewLayer(), url.toExternalForm());
             } else {
                 // Otherwise perform all tasks
                 for (DownloadTask task : suitableDownloadTasks) {
@@ -47,8 +49,8 @@ public class ImportHandler extends RequestHandler.RawURLParseRequestHandler {
                 }
             }
         } catch (RuntimeException ex) { // NOPMD
-            Main.warn("RemoteControl: Error parsing import remote control request:");
-            Main.error(ex);
+            Logging.warn("RemoteControl: Error parsing import remote control request:");
+            Logging.error(ex);
             throw new RequestHandlerErrorException(ex);
         }
     }
@@ -108,6 +110,6 @@ public class ImportHandler extends RequestHandler.RawURLParseRequestHandler {
             throw new RequestHandlerBadRequestException("MalformedURLException: "+e.getMessage(), e);
         }
         // Find download tasks for the given URL
-        suitableDownloadTasks = Main.main.menu.openLocation.findDownloadTasks(urlString, true);
+        suitableDownloadTasks = MainApplication.getMenu().openLocation.findDownloadTasks(urlString, true);
     }
 }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
index e8ccd69..fa9f2dd 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
@@ -11,12 +11,10 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.Future;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.BBox;
@@ -24,10 +22,15 @@ 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.SimplePrimitiveId;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -113,13 +116,13 @@ public class LoadAndZoomHandler extends RequestHandler {
 
             if (command.equals(myCommand)) {
                 if (!PermissionPrefWithDefault.LOAD_DATA.isAllowed()) {
-                    Main.info("RemoteControl: download forbidden by preferences");
+                    Logging.info("RemoteControl: download forbidden by preferences");
                 } else {
                     Area toDownload = null;
                     if (!newLayer) {
                         // find out whether some data has already been downloaded
                         Area present = null;
-                        DataSet ds = Main.getLayerManager().getEditDataSet();
+                        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                         if (ds != null) {
                             present = ds.getDataSourceArea();
                         }
@@ -137,17 +140,17 @@ public class LoadAndZoomHandler extends RequestHandler {
                         }
                     }
                     if (toDownload != null && toDownload.isEmpty()) {
-                        Main.info("RemoteControl: no download necessary");
+                        Logging.info("RemoteControl: no download necessary");
                     } else {
                         Future<?> future = osmTask.download(newLayer, new Bounds(minlat, minlon, maxlat, maxlon),
                                 null /* let the task manage the progress monitor */);
-                        Main.worker.submit(new PostDownloadHandler(osmTask, future));
+                        MainApplication.worker.submit(new PostDownloadHandler(osmTask, future));
                     }
                 }
             }
         } catch (RuntimeException ex) { // NOPMD
-            Main.warn("RemoteControl: Error parsing load_and_zoom remote control request:");
-            Main.error(ex);
+            Logging.warn("RemoteControl: Error parsing load_and_zoom remote control request:");
+            Logging.error(ex);
             throw new RequestHandlerErrorException(ex);
         }
 
@@ -156,7 +159,7 @@ public class LoadAndZoomHandler extends RequestHandler {
          */
         if (args.containsKey("addtags")) {
             GuiHelper.executeByMainWorkerInEDT(() -> {
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) // e.g. download failed
                     return;
                 ds.clearSelection();
@@ -169,7 +172,7 @@ public class LoadAndZoomHandler extends RequestHandler {
             // select objects after downloading, zoom to selection.
             GuiHelper.executeByMainWorkerInEDT(() -> {
                 Set<OsmPrimitive> newSel = new HashSet<>();
-                DataSet ds = Main.getLayerManager().getEditDataSet();
+                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) // e.g. download failed
                     return;
                 for (SimplePrimitiveId id : toSelect) {
@@ -182,24 +185,25 @@ public class LoadAndZoomHandler extends RequestHandler {
                 toSelect.clear();
                 ds.setSelected(newSel);
                 zoom(newSel, bbox);
-                if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
-                    Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
-                    Main.map.relationListDialog.dataChanged(null);
-                    Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
+                MapFrame map = MainApplication.getMap();
+                if (MainApplication.isDisplayingMapView() && map.relationListDialog != null) {
+                    map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
+                    map.relationListDialog.dataChanged(null);
+                    map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
                 }
             });
         } else if (args.containsKey("search") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             try {
                 final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
-                Main.worker.submit(() -> {
-                    final DataSet ds = Main.getLayerManager().getEditDataSet();
+                MainApplication.worker.submit(() -> {
+                    final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                     final Collection<OsmPrimitive> filteredPrimitives = SubclassFilteredCollection.filter(ds.allPrimitives(), search);
                     ds.setSelected(filteredPrimitives);
                     forTagAdd.addAll(filteredPrimitives);
                     zoom(filteredPrimitives, bbox);
                 });
-            } catch (SearchCompiler.ParseError ex) {
-                Main.error(ex);
+            } catch (SearchParseError ex) {
+                Logging.error(ex);
                 throw new RequestHandlerErrorException(ex);
             }
         } else {
@@ -209,13 +213,13 @@ public class LoadAndZoomHandler extends RequestHandler {
 
         // add changeset tags after download if necessary
         if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
-            Main.worker.submit(() -> {
-                if (Main.getLayerManager().getEditDataSet() != null) {
+            MainApplication.worker.submit(() -> {
+                if (MainApplication.getLayerManager().getEditDataSet() != null) {
                     if (args.containsKey("changeset_comment")) {
-                        Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
+                        MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
                     }
                     if (args.containsKey("changeset_source")) {
-                        Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
+                        MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
                     }
                 }
             });
@@ -231,12 +235,12 @@ public class LoadAndZoomHandler extends RequestHandler {
         // zoom_mode=(download|selection), defaults to selection
         if (!"download".equals(args.get("zoom_mode")) && !primitives.isEmpty()) {
             AutoScaleAction.autoScale("selection");
-        } else if (Main.isDisplayingMapView()) {
+        } else if (MainApplication.isDisplayingMapView()) {
             // make sure this isn't called unless there *is* a MapView
             GuiHelper.executeByMainWorkerInEDT(() -> {
                 BoundingXYVisitor bbox1 = new BoundingXYVisitor();
                 bbox1.visit(bbox);
-                Main.map.mapView.zoomTo(bbox1);
+                MainApplication.getMap().mapView.zoomTo(bbox1);
             });
         }
     }
@@ -283,7 +287,7 @@ public class LoadAndZoomHandler extends RequestHandler {
                     try {
                         toSelect.add(SimplePrimitiveId.fromString(item));
                     } catch (IllegalArgumentException ex) {
-                        Main.warn(ex, "RemoteControl: invalid selection '" + item + "' ignored");
+                        Logging.log(Logging.LEVEL_WARN, "RemoteControl: invalid selection '" + item + "' ignored", ex);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
index e822ad7..7967d45 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
@@ -6,9 +6,9 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
@@ -39,7 +39,7 @@ public class LoadDataHandler extends RequestHandler {
 
     @Override
     protected void handleRequest() throws RequestHandlerErrorException {
-        Main.worker.submit(new LoadDataTask(isLoadInNewLayer(), dataSet, args.get("layer_name")));
+        MainApplication.worker.submit(new LoadDataTask(isLoadInNewLayer(), dataSet, args.get("layer_name")));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
index defdfb9..0641510 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
@@ -8,15 +8,16 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 
-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.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Loads OSM primitives using their ID
@@ -58,7 +59,7 @@ public class LoadObjectHandler extends RequestHandler {
     @Override
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
         if (!PermissionPrefWithDefault.LOAD_DATA.isAllowed()) {
-            Main.info("RemoteControl: download forbidden by preferences");
+            Logging.info("RemoteControl: download forbidden by preferences");
         }
         if (!ps.isEmpty()) {
             final boolean newLayer = isLoadInNewLayer();
@@ -66,10 +67,10 @@ public class LoadObjectHandler extends RequestHandler {
             final boolean referrers = Boolean.parseBoolean(args.get("referrers"));
             final DownloadPrimitivesWithReferrersTask task = new DownloadPrimitivesWithReferrersTask(
                     newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
-            Main.worker.submit(task);
-            Main.worker.submit(() -> {
+            MainApplication.worker.submit(task);
+            MainApplication.worker.submit(() -> {
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
-                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                final DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (downloaded != null) {
                     GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
                     Collection<OsmPrimitive> downlPrim = new HashSet<>();
@@ -101,7 +102,7 @@ public class LoadObjectHandler extends RequestHandler {
                 try {
                     ps.add(SimplePrimitiveId.fromString(i));
                 } catch (IllegalArgumentException e) {
-                    Main.warn(e, "RemoteControl: invalid selection '"+i+"' ignored.");
+                    Logging.log(Logging.LEVEL_WARN, "RemoteControl: invalid selection '"+i+"' ignored.", e);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
index 5850305..86f9bf5 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
@@ -19,6 +19,7 @@ import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -147,7 +148,7 @@ public abstract class RequestHandler {
         PermissionPrefWithDefault permissionPref = getPermissionPref();
         if (permissionPref != null && permissionPref.pref != null && !Main.pref.getBoolean(permissionPref.pref, permissionPref.defaultVal)) {
             String err = MessageFormat.format("RemoteControl: ''{0}'' forbidden by preferences", myCommand);
-            Main.info(err);
+            Logging.info(err);
             throw new RequestHandlerForbiddenException(err);
         }
 
@@ -227,7 +228,7 @@ public abstract class RequestHandler {
                 String value = args.get(key);
                 if (value == null || value.isEmpty()) {
                     error = true;
-                    Main.warn('\'' + myCommand + "' remote control request must have '" + key + "' parameter");
+                    Logging.warn('\'' + myCommand + "' remote control request must have '" + key + "' parameter");
                     missingKeys.add(key);
                 }
             }
@@ -240,7 +241,7 @@ public abstract class RequestHandler {
         if (args != null) {
             for (String par: args.keySet()) {
                 if (!knownParams.contains(par)) {
-                    Main.warn("Unknown remote control parameter {0}, skipping it", par);
+                    Logging.warn("Unknown remote control parameter {0}, skipping it", par);
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java b/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
index 34fbea1..19e339e 100644
--- a/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
@@ -11,11 +11,11 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.SwingConstants;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.layer.geoimage.ImageEntry;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 import org.w3c.dom.Element;
 
 /**
@@ -65,7 +65,7 @@ public class GeoImageSessionExporter extends AbstractSessionExporter<GeoImageLay
             Element imgElem = support.createElement("geoimage");
 
             if (entry.getFile() == null) {
-                Main.warn("No file attribute for image - skipping entry");
+                Logging.warn("No file attribute for image - skipping entry");
                 break;
             }
             addAttr("file", entry.getFile().getPath(), imgElem, support);
diff --git a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
index 325ca4b..c9779a3 100644
--- a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
@@ -9,7 +9,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -17,6 +16,7 @@ import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.layer.geoimage.ImageEntry;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.tools.Logging;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -116,7 +116,7 @@ public class GeoImageSessionImporter implements SessionLayerImporter {
             }
             // TODO: handle thumbnail loading
         } catch (NumberFormatException e) {
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/io/session/GpxTracksSessionImporter.java b/src/org/openstreetmap/josm/io/session/GpxTracksSessionImporter.java
index 4c4dc7a..6caf671 100644
--- a/src/org/openstreetmap/josm/io/session/GpxTracksSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/GpxTracksSessionImporter.java
@@ -12,12 +12,12 @@ import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
+import org.openstreetmap.josm.gui.io.importexport.NMEAImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.io.GpxImporter;
 import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.io.NMEAImporter;
 import org.w3c.dom.Element;
 
 /**
diff --git a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
index 5d83041..e887ebb 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.io.session;
 import java.awt.Component;
 import java.awt.GridBagLayout;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -19,8 +20,10 @@ import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.layer.WMTSLayer;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Element;
 
 /**
@@ -81,18 +84,33 @@ public class ImagerySessionExporter extends AbstractSessionExporter<ImageryLayer
         layerElem.setAttribute("version", "0.1");
         ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
         Map<String, String> data = new LinkedHashMap<>(Preferences.serializeStruct(e, ImageryPreferenceEntry.class));
-        if (layer instanceof AbstractTileSourceLayer) {
-            ((AbstractTileSourceLayer<?>) layer).getDisplaySettings().storeTo(data);
-        }
+        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
+            data.putAll(tsLayer.getDisplaySettings().toPropertiesMap());
+            if (!tsLayer.getDisplaySettings().isAutoZoom()) {
+                data.put("zoom-level", Integer.toString(tsLayer.getZoomLevel()));
+            }
+        });
         addAttributes(layerElem, data, support);
-        if (layer instanceof AbstractTileSourceLayer) {
-            OffsetBookmark offset = ((AbstractTileSourceLayer<?>) layer).getDisplaySettings().getOffsetBookmark();
+        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
+            OffsetBookmark offset = tsLayer.getDisplaySettings().getOffsetBookmark();
             if (offset != null) {
                 Map<String, String> offsetProps = offset.toPropertiesMap();
                 Element offsetEl = support.createElement("offset");
                 layerElem.appendChild(offsetEl);
                 addAttributes(offsetEl, offsetProps, support);
             }
+        });
+        ImageryFilterSettings filters = layer.getFilterSettings();
+        if (filters != null) {
+            Map<String, String> filterProps = new HashMap<>();
+            filters.getProcessors().stream()
+                    .flatMap(Utils.castToStream(SessionAwareReadApply.class))
+                    .forEach(proc -> filterProps.putAll(proc.toPropertiesMap()));
+            if (!filterProps.isEmpty()) {
+                Element filterEl = support.createElement("filters");
+                layerElem.appendChild(filterEl);
+                addAttributes(filterEl, filterProps, support);
+            }
         }
         return layerElem;
     }
diff --git a/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java b/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
index bbca54d..fa550b7 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
@@ -17,9 +17,12 @@ import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.layer.WMTSLayer;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -41,23 +44,47 @@ public class ImagerySessionImporter implements SessionLayerImporter {
         ImageryPreferenceEntry prefEntry = Preferences.deserializeStruct(attributes, ImageryPreferenceEntry.class);
         ImageryInfo info = new ImageryInfo(prefEntry);
         ImageryLayer layer = ImageryLayer.create(info);
-        if (layer instanceof AbstractTileSourceLayer) {
-            AbstractTileSourceLayer<?> tsLayer = (AbstractTileSourceLayer<?>) layer;
-            tsLayer.getDisplaySettings().loadFrom(attributes);
-            NodeList nodes = elem.getChildNodes();
-            for (int i = 0; i < nodes.getLength(); ++i) {
-                Node node = nodes.item(i);
-                if (node.getNodeType() == Node.ELEMENT_NODE && "offset".equals(node.getLocalName())) {
-                    Map<String, String> offsetAttributes = readProperties((Element) node);
-                    OffsetBookmark offset = OffsetBookmark.fromPropertiesMap(offsetAttributes);
-                    tsLayer.getDisplaySettings().setOffsetBookmark(offset);
-                    break;
+        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
+            tsLayer.getDisplaySettings().applyFromPropertiesMap(attributes);
+            if (!tsLayer.getDisplaySettings().isAutoZoom()) {
+                String zoomStr = attributes.get("zoom-level");
+                if (zoomStr != null) {
+                    support.addPostLayersTask(() -> {
+                        try {
+                            tsLayer.setZoomLevel(Integer.parseInt(zoomStr));
+                        } catch (NumberFormatException e) {
+                            Logging.warn(e);
+                        }
+                    });
                 }
             }
+            Element offsetEl = getFirstElementByTagName(elem, "offset");
+            if (offsetEl != null) {
+                Map<String, String> offsetAttributes = readProperties(offsetEl);
+                OffsetBookmark offset = OffsetBookmark.fromPropertiesMap(offsetAttributes);
+                tsLayer.getDisplaySettings().setOffsetBookmark(offset);
+            }
+        });
+        Element filtersEl = getFirstElementByTagName(elem, "filters");
+        if (filtersEl != null) {
+            ImageryFilterSettings filterSettings = layer.getFilterSettings();
+            if (filterSettings != null) {
+                Map<String, String> filtersProps = readProperties(filtersEl);
+                filterSettings.getProcessors().stream()
+                        .flatMap(Utils.castToStream(SessionAwareReadApply.class))
+                        .forEach(proc -> proc.applyFromPropertiesMap(filtersProps));
+            }
         }
         return layer;
     }
 
+    private static Element getFirstElementByTagName(Element el, String name) {
+        NodeList nl = el.getElementsByTagName(name);
+        if (nl.getLength() == 0)
+            return null;
+        return (Element) nl.item(0);
+    }
+
     private static Map<String, String> readProperties(Element elem) {
         Map<String, String> attributes = new HashMap<>();
         NodeList nodes = elem.getChildNodes();
diff --git a/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java b/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java
index 838997d..93bc9b1 100644
--- a/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/MarkerSessionExporter.java
@@ -16,8 +16,8 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.SwingConstants;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -43,7 +43,7 @@ public class MarkerSessionExporter extends AbstractSessionExporter<MarkerLayer>
     @Override
     public Collection<Layer> getDependencies() {
         Layer gpxLayer = layer.fromLayer;
-        if (gpxLayer != null && Main.getLayerManager().containsLayer(gpxLayer))
+        if (gpxLayer != null && MainApplication.getLayerManager().containsLayer(gpxLayer))
             return Collections.singleton(gpxLayer);
         return Collections.emptySet();
     }
diff --git a/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java b/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
index a87b147..23af57a 100644
--- a/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
@@ -13,11 +13,11 @@ import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.io.GpxImporter;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
 import org.w3c.dom.Element;
diff --git a/src/org/openstreetmap/josm/io/session/NoteSessionImporter.java b/src/org/openstreetmap/josm/io/session/NoteSessionImporter.java
index 02fabe7..f893707 100644
--- a/src/org/openstreetmap/josm/io/session/NoteSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/NoteSessionImporter.java
@@ -12,11 +12,11 @@ import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import org.openstreetmap.josm.gui.io.importexport.NoteImporter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.io.NoteImporter;
 import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
diff --git a/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java b/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java
index ec6d058..dfc5c81 100644
--- a/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/OsmDataSessionImporter.java
@@ -12,11 +12,11 @@ import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.io.OsmImporter;
 import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
 import org.w3c.dom.Element;
 
diff --git a/src/org/openstreetmap/josm/io/session/SessionAwareReadApply.java b/src/org/openstreetmap/josm/io/session/SessionAwareReadApply.java
new file mode 100644
index 0000000..6ae5637
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/session/SessionAwareReadApply.java
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io.session;
+
+import java.util.Map;
+
+/**
+ * Interface to support export to session file (and import back) for a class that
+ * stores customizable user settings.
+ *
+ * @since 12594
+ */
+public interface SessionAwareReadApply {
+
+    /**
+     * Export settings to a map of properties.
+     * @return map of properties
+     */
+    Map<String, String> toPropertiesMap();
+
+    /**
+     * Import settings from a map of properties.
+     * @param properties properties map
+     */
+    void applyFromPropertiesMap(Map<String, String> properties);
+}
diff --git a/src/org/openstreetmap/josm/io/session/SessionImporter.java b/src/org/openstreetmap/josm/io/session/SessionImporter.java
index 4151506..18f8cc0 100644
--- a/src/org/openstreetmap/josm/io/session/SessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionImporter.java
@@ -6,11 +6,11 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.io.File;
 import java.io.IOException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.io.importexport.FileImporter;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.io.FileImporter;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -36,6 +36,6 @@ public class SessionImporter extends FileImporter {
     @Override
     public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
         boolean zip = Utils.hasExtension(file, "joz");
-        Main.worker.submit(new Loader(file, zip));
+        MainApplication.worker.submit(new Loader(file, zip));
     }
 }
diff --git a/src/org/openstreetmap/josm/io/session/SessionReader.java b/src/org/openstreetmap/josm/io/session/SessionReader.java
index c032cd5..da76474 100644
--- a/src/org/openstreetmap/josm/io/session/SessionReader.java
+++ b/src/org/openstreetmap/josm/io/session/SessionReader.java
@@ -44,6 +44,7 @@ import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -446,7 +447,7 @@ public class SessionReader {
         try {
             active = !activeAtt.isEmpty() ? (Integer.parseInt(activeAtt)-1) : -1;
         } catch (NumberFormatException e) {
-            Main.warn("Unsupported value for 'active' layer attribute. Ignoring it. Error was: "+e.getMessage());
+            Logging.warn("Unsupported value for 'active' layer attribute. Ignoring it. Error was: "+e.getMessage());
             active = -1;
         }
 
@@ -467,7 +468,7 @@ public class SessionReader {
                     try {
                         idx = Integer.valueOf(e.getAttribute("index"));
                     } catch (NumberFormatException ex) {
-                        Main.warn(ex);
+                        Logging.warn(ex);
                     }
                     if (idx == null) {
                         error(tr("unexpected format of attribute ''index'' for element ''layer''"));
@@ -484,7 +485,7 @@ public class SessionReader {
                             try {
                                 d = Integer.valueOf(sd);
                             } catch (NumberFormatException ex) {
-                                Main.warn(ex);
+                                Logging.warn(ex);
                             }
                             if (d != null) {
                                 deps.put(idx, d);
@@ -566,7 +567,7 @@ public class SessionReader {
                     exception = ex;
                 }
                 if (exception != null) {
-                    Main.error(exception);
+                    Logging.error(exception);
                     if (!GraphicsEnvironment.isHeadless()) {
                         CancelOrContinueDialog dialog = new CancelOrContinueDialog();
                         dialog.show(
@@ -606,7 +607,7 @@ public class SessionReader {
                     double opacity = Double.parseDouble(el.getAttribute("opacity"));
                     layer.setOpacity(opacity);
                 } catch (NumberFormatException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                 }
             }
             layer.setName(names.get(entry.getKey()));
@@ -624,7 +625,7 @@ public class SessionReader {
             center = new LatLon(Double.parseDouble(centerEl.getAttribute("lat")),
                     Double.parseDouble(centerEl.getAttribute("lon")));
         } catch (NumberFormatException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
         }
         if (center == null) return null;
         Element scaleEl = getElementByTagName(viewportEl, "scale");
@@ -633,7 +634,7 @@ public class SessionReader {
             double scale = Double.parseDouble(scaleEl.getAttribute("meter-per-pixel"));
             return new SessionViewportData(center, scale);
         } catch (NumberFormatException ex) {
-            Main.warn(ex);
+            Logging.warn(ex);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/io/session/SessionWriter.java b/src/org/openstreetmap/josm/io/session/SessionWriter.java
index 7851a5c..ecfbb5c 100644
--- a/src/org/openstreetmap/josm/io/session/SessionWriter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionWriter.java
@@ -31,6 +31,8 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
@@ -42,6 +44,7 @@ import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -240,7 +243,7 @@ public class SessionWriter {
                 for (Layer depLayer : deps) {
                     int depIndex = layers.indexOf(depLayer);
                     if (depIndex == -1) {
-                        Main.warn("Unable to find " + depLayer);
+                        Logging.warn("Unable to find " + depLayer);
                     } else {
                         depsInt.add(depIndex+1);
                     }
@@ -260,13 +263,14 @@ public class SessionWriter {
         root.appendChild(viewportEl);
         Element centerEl = doc.createElement("center");
         viewportEl.appendChild(centerEl);
-        EastNorth center = Main.map.mapView.getCenter();
+        MapView mapView = MainApplication.getMap().mapView;
+        EastNorth center = mapView.getCenter();
         LatLon centerLL = Projections.inverseProject(center);
         centerEl.setAttribute("lat", Double.toString(centerLL.lat()));
         centerEl.setAttribute("lon", Double.toString(centerLL.lon()));
         Element scale = doc.createElement("scale");
         viewportEl.appendChild(scale);
-        double dist100px = Main.map.mapView.getDist100Pixel();
+        double dist100px = mapView.getDist100Pixel();
         scale.setAttribute("meter-per-pixel", Double.toString(dist100px / 100));
     }
 
diff --git a/src/org/openstreetmap/josm/plugins/Plugin.java b/src/org/openstreetmap/josm/plugins/Plugin.java
index 55abcb6..9bd44ab 100644
--- a/src/org/openstreetmap/josm/plugins/Plugin.java
+++ b/src/org/openstreetmap/josm/plugins/Plugin.java
@@ -146,6 +146,6 @@ public abstract class Plugin implements MapFrameListener {
         File pluginJar = new File(pluginDir, info.name + ".jar");
         final URL pluginJarUrl = Utils.fileToURL(pluginJar);
         return AccessController.doPrivileged((PrivilegedAction<ClassLoader>)
-                () -> new URLClassLoader(new URL[] {pluginJarUrl}, Main.class.getClassLoader()));
+                () -> new URLClassLoader(new URL[] {pluginJarUrl}, Plugin.class.getClassLoader()));
     }
 }
diff --git a/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java b/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
index f8f722b..40231cb 100644
--- a/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
+++ b/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
@@ -22,6 +22,7 @@ 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.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -116,7 +117,7 @@ public class PluginDownloadTask extends PleaseWaitRunnable {
         try {
             if (pi.downloadlink == null) {
                 String msg = tr("Cannot download plugin ''{0}''. Its download link is not known. Skipping download.", pi.name);
-                Main.warn(msg);
+                Logging.warn(msg);
                 throw new PluginDownloadException(msg);
             }
             URL url = new URL(pi.downloadlink);
@@ -130,7 +131,7 @@ public class PluginDownloadTask extends PleaseWaitRunnable {
         } catch (MalformedURLException e) {
             String msg = tr("Cannot download plugin ''{0}''. Its download link ''{1}'' is not a valid URL. Skipping download.",
                     pi.name, pi.downloadlink);
-            Main.warn(msg);
+            Logging.warn(msg);
             throw new PluginDownloadException(msg, e);
         } catch (IOException e) {
             if (canceled)
@@ -149,7 +150,7 @@ public class PluginDownloadTask extends PleaseWaitRunnable {
         if (!pluginDir.exists() && !pluginDir.mkdirs()) {
             String message = tr("Failed to create plugin directory ''{0}''", pluginDir.toString());
             lastException = new PluginDownloadException(message);
-            Main.error(message);
+            Logging.error(message);
             failed.addAll(toUpdate);
             return;
         }
@@ -158,7 +159,7 @@ public class PluginDownloadTask extends PleaseWaitRunnable {
             if (canceled)
                 return;
             String message = tr("Downloading Plugin {0}...", d.name);
-            Main.info(message);
+            Logging.info(message);
             progressMonitor.subTask(message);
             progressMonitor.worked(1);
             File pluginFile = new File(pluginDir, d.name + ".jar.new");
@@ -166,7 +167,7 @@ public class PluginDownloadTask extends PleaseWaitRunnable {
                 download(d, pluginFile);
             } catch (PluginDownloadException e) {
                 lastException = e;
-                Main.error(e);
+                Logging.error(e);
                 failed.add(d);
                 continue;
             }
diff --git a/src/org/openstreetmap/josm/plugins/PluginHandler.java b/src/org/openstreetmap/josm/plugins/PluginHandler.java
index 50dcfc9..222dc50 100644
--- a/src/org/openstreetmap/josm/plugins/PluginHandler.java
+++ b/src/org/openstreetmap/josm/plugins/PluginHandler.java
@@ -56,6 +56,7 @@ import org.openstreetmap.josm.actions.RestartAction;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.download.DownloadSelection;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -68,6 +69,7 @@ import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -286,7 +288,7 @@ public final class PluginHandler {
     /**
      * All exceptions that occured during plugin loading
      */
-    static final Map<String, Exception> pluginLoadingExceptions = new HashMap<>();
+    static final Map<String, Throwable> pluginLoadingExceptions = new HashMap<>();
 
     /**
      * Class loader to locate resources from plugins.
@@ -303,7 +305,7 @@ public final class PluginHandler {
             sources.add(ClassLoader.getSystemClassLoader());
             sources.add(org.openstreetmap.josm.gui.MainApplication.class.getClassLoader());
         } catch (SecurityException ex) {
-            Main.debug(ex);
+            Logging.debug(ex);
             sources.add(ImageProvider.class.getClassLoader());
         }
     }
@@ -413,7 +415,7 @@ public final class PluginHandler {
      */
     public static boolean checkAndConfirmPluginUpdate(Component parent) {
         if (!checkOfflineAccess()) {
-            Main.info(tr("{0} not available (offline mode)", tr("Plugin update")));
+            Logging.info(tr("{0} not available (offline mode)", tr("Plugin update")));
             return false;
         }
         String message = null;
@@ -455,17 +457,17 @@ public final class PluginHandler {
         switch(policy) {
         case "never":
             if ("pluginmanager.version-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Skipping plugin update after JOSM upgrade. Automatic update at startup is disabled."));
+                Logging.info(tr("Skipping plugin update after JOSM upgrade. Automatic update at startup is disabled."));
             } else if ("pluginmanager.time-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Skipping plugin update after elapsed update interval. Automatic update at startup is disabled."));
+                Logging.info(tr("Skipping plugin update after elapsed update interval. Automatic update at startup is disabled."));
             }
             return false;
 
         case "always":
             if ("pluginmanager.version-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Running plugin update after JOSM upgrade. Automatic update at startup is enabled."));
+                Logging.info(tr("Running plugin update after JOSM upgrade. Automatic update at startup is enabled."));
             } else if ("pluginmanager.time-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Running plugin update after elapsed update interval. Automatic update at startup is disabled."));
+                Logging.info(tr("Running plugin update after elapsed update interval. Automatic update at startup is disabled."));
             }
             return true;
 
@@ -473,7 +475,7 @@ public final class PluginHandler {
             break;
 
         default:
-            Main.warn(tr("Unexpected value ''{0}'' for preference ''{1}''. Assuming value ''ask''.", policy, togglePreferenceKey));
+            Logging.warn(tr("Unexpected value ''{0}'' for preference ''{1}''. Assuming value ''ask''.", policy, togglePreferenceKey));
         }
 
         ButtonSpec[] options = new ButtonSpec[] {
@@ -528,7 +530,7 @@ public final class PluginHandler {
                 try {
                     OnlineResource.JOSM_WEBSITE.checkOfflineAccess(updateSite, Main.getJOSMWebsite());
                 } catch (OfflineAccessException e) {
-                    Main.trace(e);
+                    Logging.trace(e);
                     return false;
                 }
             }
@@ -588,10 +590,10 @@ public final class PluginHandler {
         // Update plugin list
         final ReadRemotePluginInformationTask pluginInfoDownloadTask = new ReadRemotePluginInformationTask(
                 Main.pref.getOnlinePluginSites());
-        Main.worker.submit(pluginInfoDownloadTask);
+        MainApplication.worker.submit(pluginInfoDownloadTask);
 
         // Continuation
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(() -> {
             // Build list of plugins to download
             Set<PluginInformation> toDownload = new HashSet<>(pluginInfoDownloadTask.getAvailablePlugins());
             toDownload.removeIf(info -> !missingRequiredPlugin.contains(info.getName()));
@@ -599,8 +601,8 @@ public final class PluginHandler {
             if (!toDownload.isEmpty()) {
                 // download plugins
                 final PluginDownloadTask task = new PluginDownloadTask(parent, toDownload, tr("Download plugins"));
-                Main.worker.submit(task);
-                Main.worker.submit(() -> {
+                MainApplication.worker.submit(task);
+                MainApplication.worker.submit(() -> {
                     // restart if some plugins have been downloaded
                     if (!task.getDownloadedPlugins().isEmpty()) {
                         // update plugin list in preferences
@@ -613,14 +615,14 @@ public final class PluginHandler {
                         try {
                             RestartAction.restartJOSM();
                         } catch (IOException e) {
-                            Main.error(e);
+                            Logging.error(e);
                         }
                     } else {
-                        Main.warn("No plugin downloaded, restart canceled");
+                        Logging.warn("No plugin downloaded, restart canceled");
                     }
                 });
             } else {
-                Main.warn("No plugin to download, operation canceled");
+                Logging.warn("No plugin to download, operation canceled");
             }
         });
     }
@@ -732,7 +734,7 @@ public final class PluginHandler {
     private static synchronized DynamicURLClassLoader getJoinedPluginResourceCL() {
         if (joinedPluginResourceCL == null) {
             joinedPluginResourceCL = AccessController.doPrivileged((PrivilegedAction<DynamicURLClassLoader>)
-                    () -> new DynamicURLClassLoader(new URL[0], Main.class.getClassLoader()));
+                    () -> new DynamicURLClassLoader(new URL[0], PluginHandler.class.getClassLoader()));
             sources.add(0, joinedPluginResourceCL);
         }
         return joinedPluginResourceCL;
@@ -775,22 +777,22 @@ public final class PluginHandler {
         try {
             Class<?> klass = plugin.loadClass(pluginClassLoader);
             if (klass != null) {
-                Main.info(tr("loading plugin ''{0}'' (version {1})", plugin.name, plugin.localversion));
+                Logging.info(tr("loading plugin ''{0}'' (version {1})", plugin.name, plugin.localversion));
                 PluginProxy pluginProxy = plugin.load(klass, pluginClassLoader);
                 pluginList.add(pluginProxy);
-                Main.addAndFireMapFrameListener(pluginProxy);
+                MainApplication.addAndFireMapFrameListener(pluginProxy);
             }
             msg = null;
         } catch (PluginException e) {
             pluginLoadingExceptions.put(plugin.name, e);
-            Main.error(e);
+            Logging.error(e);
             if (e.getCause() instanceof ClassNotFoundException) {
                 msg = tr("<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was not found.<br>"
                         + "Delete from preferences?</html>", Utils.escapeReservedCharactersHTML(plugin.name), plugin.className);
             }
         } catch (RuntimeException e) { // NOPMD
             pluginLoadingExceptions.put(plugin.name, e);
-            Main.error(e);
+            Logging.error(e);
         }
         if (msg != null && confirmDisablePlugin(parent, msg, plugin.name)) {
             Main.pref.removeFromCollection("plugins", plugin.name);
@@ -829,7 +831,7 @@ public final class PluginHandler {
                 PluginClassLoader cl = AccessController.doPrivileged((PrivilegedAction<PluginClassLoader>)
                     () -> new PluginClassLoader(
                         info.libraries.toArray(new URL[0]),
-                        Main.class.getClassLoader(),
+                        PluginHandler.class.getClassLoader(),
                         null));
                 classLoaders.put(info, cl);
             }
@@ -918,7 +920,7 @@ public final class PluginHandler {
             try {
                 task.run();
             } catch (RuntimeException e) { // NOPMD
-                Main.error(e);
+                Logging.error(e);
                 return null;
             }
             Map<String, PluginInformation> ret = new HashMap<>();
@@ -967,23 +969,17 @@ public final class PluginHandler {
         try {
             monitor.beginTask(tr("Determining plugins to load..."));
             Set<String> plugins = new HashSet<>(Main.pref.getCollection("plugins", new LinkedList<String>()));
-            if (Main.isDebugEnabled()) {
-                Main.debug("Plugins list initialized to " + plugins);
-            }
+            Logging.debug("Plugins list initialized to {0}", plugins);
             String systemProp = System.getProperty("josm.plugins");
             if (systemProp != null) {
                 plugins.addAll(Arrays.asList(systemProp.split(",")));
-                if (Main.isDebugEnabled()) {
-                    Main.debug("josm.plugins system property set to '" + systemProp+"'. Plugins list is now " + plugins);
-                }
+                Logging.debug("josm.plugins system property set to '{0}'. Plugins list is now {1}", systemProp, plugins);
             }
             monitor.subTask(tr("Removing deprecated plugins..."));
             filterDeprecatedPlugins(parent, plugins);
             monitor.subTask(tr("Removing unmaintained plugins..."));
             filterUnmaintainedPlugins(parent, plugins);
-            if (Main.isDebugEnabled()) {
-                Main.debug("Plugins list is finally set to " + plugins);
-            }
+            Logging.debug("Plugins list is finally set to {0}", plugins);
             Map<String, PluginInformation> infos = loadLocallyAvailablePluginInformation(monitor.createSubTaskMonitor(1, false));
             List<PluginInformation> ret = new LinkedList<>();
             if (infos != null) {
@@ -1052,8 +1048,8 @@ public final class PluginHandler {
                         }
                     }
                 } catch (PluginException e) {
-                    Main.warn(tr("Failed to find plugin {0}", name));
-                    Main.error(e);
+                    Logging.warn(tr("Failed to find plugin {0}", name));
+                    Logging.error(e);
                 }
             }
         }
@@ -1096,8 +1092,8 @@ public final class PluginHandler {
                     plugins = SubclassFilteredCollection.filter(plugins, pi -> pluginsWantedName.contains(pi.name));
                 }
             } catch (RuntimeException e) { // NOPMD
-                Main.warn(tr("Failed to download plugin information list"));
-                Main.error(e);
+                Logging.warn(tr("Failed to download plugin information list"));
+                Logging.error(e);
                 // don't abort in case of error, continue with downloading plugins below
             }
 
@@ -1141,7 +1137,7 @@ public final class PluginHandler {
                 try {
                     pluginDownloadTask.run();
                 } catch (RuntimeException e) { // NOPMD
-                    Main.error(e);
+                    Logging.error(e);
                     alertFailedPluginUpdate(parent, pluginsToUpdate);
                     return plugins;
                 }
@@ -1267,8 +1263,8 @@ public final class PluginHandler {
             File plugin = new File(filePath.substring(0, filePath.length() - 4));
             String pluginName = updatedPlugin.getName().substring(0, updatedPlugin.getName().length() - 8);
             if (plugin.exists() && !plugin.delete() && dowarn) {
-                Main.warn(tr("Failed to delete outdated plugin ''{0}''.", plugin.toString()));
-                Main.warn(tr("Failed to install already downloaded plugin ''{0}''. " +
+                Logging.warn(tr("Failed to delete outdated plugin ''{0}''.", plugin.toString()));
+                Logging.warn(tr("Failed to install already downloaded plugin ''{0}''. " +
                         "Skipping installation. JOSM is still going to load the old plugin version.",
                         pluginName));
                 continue;
@@ -1278,16 +1274,16 @@ public final class PluginHandler {
                 new JarFile(updatedPlugin).close();
             } catch (IOException e) {
                 if (dowarn) {
-                    Main.warn(e, tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. {2}",
-                            plugin.toString(), updatedPlugin.toString(), e.getLocalizedMessage()));
+                    Logging.log(Logging.LEVEL_WARN, tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. {2}",
+                            plugin.toString(), updatedPlugin.toString(), e.getLocalizedMessage()), e);
                 }
                 continue;
             }
             // Install plugin
             if (!updatedPlugin.renameTo(plugin) && dowarn) {
-                Main.warn(tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. Renaming failed.",
+                Logging.warn(tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. Renaming failed.",
                         plugin.toString(), updatedPlugin.toString()));
-                Main.warn(tr("Failed to install already downloaded plugin ''{0}''. " +
+                Logging.warn(tr("Failed to install already downloaded plugin ''{0}''. " +
                         "Skipping installation. JOSM is still going to load the old plugin version.",
                         pluginName));
             }
@@ -1305,12 +1301,12 @@ public final class PluginHandler {
             try {
                 new JarFile(jar).close();
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 return false;
             }
             return true;
         } else if (jar != null) {
-            Main.warn("Invalid jar file ''"+jar+"'' (exists: "+jar.exists()+", canRead: "+jar.canRead()+')');
+            Logging.warn("Invalid jar file ''"+jar+"'' (exists: "+jar.exists()+", canRead: "+jar.canRead()+')');
         }
         return false;
     }
@@ -1350,7 +1346,7 @@ public final class PluginHandler {
             try {
                 pi.updateFromJar(new PluginInformation(downloadedPluginFile, pi.name));
             } catch (PluginException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
@@ -1404,7 +1400,7 @@ public final class PluginHandler {
             GuiHelper.runInEDT(task);
             return task.get();
         } catch (InterruptedException | ExecutionException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return -1;
     }
diff --git a/src/org/openstreetmap/josm/plugins/PluginInformation.java b/src/org/openstreetmap/josm/plugins/PluginInformation.java
index 94fdd89..815a12c 100644
--- a/src/org/openstreetmap/josm/plugins/PluginInformation.java
+++ b/src/org/openstreetmap/josm/plugins/PluginInformation.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -200,7 +201,7 @@ public class PluginInformation {
         className = attr.getValue("Plugin-Class");
         String s = Optional.ofNullable(attr.getValue(lang+"Plugin-Link")).orElseGet(() -> attr.getValue("Plugin-Link"));
         if (s != null && !Utils.isValidUrl(s)) {
-            Main.info(tr("Invalid URL ''{0}'' in plugin {1}", s, name));
+            Logging.info(tr("Invalid URL ''{0}'' in plugin {1}", s, name));
             s = null;
         }
         link = s;
@@ -212,8 +213,8 @@ public class PluginInformation {
                 try {
                     s = tr(s);
                 } catch (IllegalArgumentException e) {
-                    Main.debug(e);
-                    Main.info(tr("Invalid plugin description ''{0}'' in plugin {1}", s, name));
+                    Logging.debug(e);
+                    Logging.info(tr("Invalid plugin description ''{0}'' in plugin {1}", s, name));
                 }
             }
         } else {
@@ -229,10 +230,10 @@ public class PluginInformation {
             try {
                 mainversion = Integer.parseInt(s);
             } catch (NumberFormatException e) {
-                Main.warn(tr("Invalid plugin main version ''{0}'' in plugin {1}", s, name));
+                Logging.warn(tr("Invalid plugin main version ''{0}'' in plugin {1}", s, name));
             }
         } else {
-            Main.warn(tr("Missing plugin main version in plugin {0}", name));
+            Logging.warn(tr("Missing plugin main version in plugin {0}", name));
         }
         author = attr.getValue("Author");
         iconPath = attr.getValue("Plugin-Icon");
@@ -264,7 +265,7 @@ public class PluginInformation {
                         }
                     }
                 } catch (NumberFormatException e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
         }
@@ -390,7 +391,7 @@ public class PluginInformation {
                 return new PluginInformation(manifestStream, pluginName, null);
             }
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
 
         Collection<String> locations = getPluginLocations();
diff --git a/src/org/openstreetmap/josm/plugins/PluginListParser.java b/src/org/openstreetmap/josm/plugins/PluginListParser.java
index 7155e8d..9829a71 100644
--- a/src/org/openstreetmap/josm/plugins/PluginListParser.java
+++ b/src/org/openstreetmap/josm/plugins/PluginListParser.java
@@ -12,7 +12,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * A parser for the plugin list provided by a JOSM Plugin Download Site.
@@ -102,7 +102,7 @@ public class PluginListParser {
                 ret.add(info);
             }
         } catch (PluginListParseException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/plugins/PluginProxy.java b/src/org/openstreetmap/josm/plugins/PluginProxy.java
index f17bd59..bac3d87 100644
--- a/src/org/openstreetmap/josm/plugins/PluginProxy.java
+++ b/src/org/openstreetmap/josm/plugins/PluginProxy.java
@@ -3,10 +3,10 @@ package org.openstreetmap.josm.plugins;
 
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.download.DownloadSelection;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -55,7 +55,7 @@ public class PluginProxy extends Plugin {
         return classLoader;
     }
 
-    private void handlePluginException(Exception e) {
+    private void handlePluginException(Throwable e) {
         PluginHandler.pluginLoadingExceptions.put(getPluginInformation().name, e);
         BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
     }
@@ -65,9 +65,9 @@ public class PluginProxy extends Plugin {
         try {
             plugin.getClass().getMethod("mapFrameInitialized", MapFrame.class, MapFrame.class).invoke(plugin, oldFrame, newFrame);
         } catch (NoSuchMethodException e) {
-            Main.trace(e);
-            Main.debug("Plugin "+plugin+" does not define mapFrameInitialized");
-        } catch (ReflectiveOperationException | IllegalArgumentException e) {
+            Logging.trace(e);
+            Logging.debug("Plugin "+plugin+" does not define mapFrameInitialized");
+        } catch (ReflectiveOperationException | IllegalArgumentException | NoClassDefFoundError e) {
             handlePluginException(e);
         }
     }
@@ -77,10 +77,10 @@ public class PluginProxy extends Plugin {
         try {
             return (PreferenceSetting) plugin.getClass().getMethod("getPreferenceSetting").invoke(plugin);
         } catch (NoSuchMethodException e) {
-            Main.trace(e);
-            Main.debug("Plugin "+plugin+" does not define getPreferenceSetting");
+            Logging.trace(e);
+            Logging.debug("Plugin "+plugin+" does not define getPreferenceSetting");
             return null;
-        } catch (ReflectiveOperationException | IllegalArgumentException e) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | NoClassDefFoundError e) {
             handlePluginException(e);
         }
         return null;
@@ -91,9 +91,9 @@ public class PluginProxy extends Plugin {
         try {
             plugin.getClass().getMethod("addDownloadSelection", List.class).invoke(plugin, list);
         } catch (NoSuchMethodException e) {
-            Main.trace(e);
-            Main.debug("Plugin "+plugin+" does not define addDownloadSelection");
-        } catch (ReflectiveOperationException | IllegalArgumentException e) {
+            Logging.trace(e);
+            Logging.debug("Plugin "+plugin+" does not define addDownloadSelection");
+        } catch (ReflectiveOperationException | IllegalArgumentException | NoClassDefFoundError e) {
             handlePluginException(e);
         }
     }
diff --git a/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java b/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
index 594df35..361d655 100644
--- a/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
+++ b/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
@@ -13,11 +13,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 /**
@@ -95,8 +95,8 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
             try {
                 processLocalPluginInformationFile(f);
             } catch (PluginListParseException e) {
-                Main.warn(tr("Failed to scan file ''{0}'' for plugin information. Skipping.", fname));
-                Main.error(e);
+                Logging.warn(tr("Failed to scan file ''{0}'' for plugin information. Skipping.", fname));
+                Logging.error(e);
             }
             monitor.worked(1);
         }
@@ -122,8 +122,8 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
                     processJarFile(f, pluginName);
                 }
             } catch (PluginException e) {
-                Main.warn(e, "PluginException: ");
-                Main.warn(tr("Failed to scan file ''{0}'' for plugin information. Skipping.", fname));
+                Logging.log(Logging.LEVEL_WARN, "PluginException: ", e);
+                Logging.warn(tr("Failed to scan file ''{0}'' for plugin information. Skipping.", fname));
             }
             monitor.worked(1);
         }
diff --git a/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java b/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
index 998eb1a..324a331 100644
--- a/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
+++ b/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
@@ -38,6 +38,7 @@ import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -163,7 +164,7 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
             return content;
         } catch (MalformedURLException e) {
             if (canceled) return null;
-            Main.error(e);
+            Logging.error(e);
             return null;
         } catch (IOException e) {
             if (canceled) return null;
@@ -183,9 +184,9 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
     private void handleIOException(final ProgressMonitor monitor, IOException e, String details) {
         final String msg = e.getMessage();
         if (details == null || details.isEmpty()) {
-            Main.error(e.getClass().getSimpleName()+": " + msg);
+            Logging.error(e.getClass().getSimpleName()+": " + msg);
         } else {
-            Main.error(msg + " - Details:\n" + details);
+            Logging.error(msg + " - Details:\n" + details);
         }
 
         if (displayErrMsg) {
@@ -226,7 +227,7 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
     protected void cachePluginList(String site, String list) {
         File pluginDir = Main.pref.getPluginsDirectory();
         if (!pluginDir.exists() && !pluginDir.mkdirs()) {
-            Main.warn(tr("Failed to create plugin directory ''{0}''. Cannot cache plugin list from plugin site ''{1}''.",
+            Logging.warn(tr("Failed to create plugin directory ''{0}''. Cannot cache plugin list from plugin site ''{1}''.",
                     pluginDir.toString(), site));
         }
         File cacheFile = createSiteCacheFile(pluginDir, site);
@@ -236,7 +237,7 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
             writer.flush();
         } catch (IOException e) {
             // just failed to write the cache file. No big deal, but log the exception anyway
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
@@ -275,8 +276,8 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
             List<PluginInformation> pis = new PluginListParser().parse(in);
             availablePlugins.addAll(filterDeprecatedPlugins(pis));
         } catch (PluginListParseException e) {
-            Main.error(tr("Failed to parse plugin list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
-            Main.error(e);
+            Logging.error(tr("Failed to parse plugin list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
+            Logging.error(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/tools/ExceptionUtil.java b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
index 083dcc5..866a10c 100644
--- a/src/org/openstreetmap/josm/tools/ExceptionUtil.java
+++ b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
@@ -20,12 +20,11 @@ import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
 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.Way;
-import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.io.ChangesetClosedException;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.MissingOAuthAccessTokenException;
@@ -54,7 +53,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainOsmApiInitializationException(OsmApiInitializationException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr(
                 "<html>Failed to initialize communication with the OSM server {0}.<br>"
                 + "Check the server URL in your preferences and your internet connection.",
@@ -69,7 +68,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainMissingOAuthAccessTokenException(MissingOAuthAccessTokenException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr(
                 "<html>Failed to authenticate at the OSM server ''{0}''.<br>"
                 + "You are using OAuth to authenticate but currently there is no<br>"
@@ -142,7 +141,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainPreconditionFailed(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         Pair<OsmPrimitive, Collection<OsmPrimitive>> conflict = parsePreconditionFailed(e.getErrorHeader());
         if (conflict != null) {
             OsmPrimitive firstRefs = conflict.b.iterator().next();
@@ -261,7 +260,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainFailedBasicAuthentication(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>"
                 + "Authentication at the OSM server with the username ''{0}'' failed.<br>"
                 + "Please check the username and the password in the JOSM preferences."
@@ -278,7 +277,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainFailedOAuthAuthentication(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>"
                 + "Authentication at the OSM server with the OAuth token ''{0}'' failed.<br>"
                 + "Please launch the preferences dialog and retrieve another OAuth token."
@@ -295,7 +294,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainFailedAuthorisation(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         String header = e.getErrorHeader();
         String body = e.getErrorBody();
         String msg;
@@ -333,7 +332,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainFailedOAuthAuthorisation(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>"
                 + "Authorisation at the OSM server with the OAuth token ''{0}'' failed.<br>"
                 + "The token is not authorised to access the protected resource<br>"
@@ -352,7 +351,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainClientTimeout(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>"
                 + "Communication with the OSM server ''{0}'' timed out. Please retry later."
                 + "</html>",
@@ -367,7 +366,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainGenericOsmApiException(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>"
                 + "Communication with the OSM server ''{0}''failed. The server replied<br>"
                 + "the following error code and the following error message:<br>"
@@ -388,7 +387,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainConflict(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         String msg = e.getErrorHeader();
         if (msg != null) {
             Matcher m = Pattern.compile("The changeset (\\d+) was closed at (.*)").matcher(msg);
@@ -398,8 +397,8 @@ public final class ExceptionUtil {
                 try {
                     closeDate = DateUtils.newOsmApiDateTimeFormat().parse(m.group(2));
                 } catch (ParseException ex) {
-                    Main.error(tr("Failed to parse date ''{0}'' replied by server.", m.group(2)));
-                    Main.error(ex);
+                    Logging.error(tr("Failed to parse date ''{0}'' replied by server.", m.group(2)));
+                    Logging.error(ex);
                 }
                 if (closeDate == null) {
                     msg = tr(
@@ -436,7 +435,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainChangesetClosedException(ChangesetClosedException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr(
                 "<html>Failed to upload to changeset <strong>{0}</strong><br>"
                 +"because it has already been closed on {1}.",
@@ -456,7 +455,7 @@ public final class ExceptionUtil {
         if (msg == null || msg.trim().isEmpty()) {
             msg = e.toString();
         }
-        Main.error(e);
+        Logging.error(e);
         return Utils.escapeReservedCharactersHTML(msg);
     }
 
@@ -475,7 +474,7 @@ public final class ExceptionUtil {
             host = new URL(apiUrl).getHost();
         } catch (MalformedURLException ex) {
             // shouldn't happen
-            Main.trace(ex);
+            Logging.trace(ex);
         }
 
         return tr("<html>Failed to open a connection to the remote server<br>" + "''{0}''<br>"
@@ -492,7 +491,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainNestedSocketException(OsmTransferException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>Failed to open a connection to the remote server<br>" + "''{0}''.<br>"
                 + "Please check your internet connection.", e.getUrl())+"</html>";
     }
@@ -507,7 +506,7 @@ public final class ExceptionUtil {
      */
     public static String explainNestedIOException(OsmTransferException e) {
         IOException ioe = getNestedException(e, IOException.class);
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>Failed to upload data to or download data from<br>" + "''{0}''<br>"
                 + "due to a problem with transferring data.<br>"
                 + "Details (untranslated): {1}</html>",
@@ -524,7 +523,7 @@ public final class ExceptionUtil {
      */
     public static String explainNestedIllegalDataException(OsmTransferException e) {
         IllegalDataException ide = getNestedException(e, IllegalDataException.class);
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>Failed to download data. "
                 + "Its format is either unsupported, ill-formed, and/or inconsistent.<br>"
                 + "<br>Details (untranslated): {0}</html>", ide != null ? ide.getMessage() : "null");
@@ -540,7 +539,7 @@ public final class ExceptionUtil {
      */
     public static String explainOfflineAccessException(OsmTransferException e) {
         OfflineAccessException oae = getNestedException(e, OfflineAccessException.class);
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>Failed to download data.<br>"
                 + "<br>Details: {0}</html>", oae != null ? oae.getMessage() : "null");
     }
@@ -553,7 +552,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainInternalServerError(OsmTransferException e) {
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>The OSM server<br>" + "''{0}''<br>" + "reported an internal server error.<br>"
                 + "This is most likely a temporary problem. Please try again later.", e.getUrl())+"</html>";
     }
@@ -575,7 +574,7 @@ public final class ExceptionUtil {
         } else if (errorHeader != null) {
             message += tr("<br>Error message(untranslated): {0}", errorHeader);
         }
-        Main.error(e);
+        Logging.error(e);
         return "<html>" + message + "</html>";
     }
 
@@ -587,7 +586,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainBandwidthLimitExceeded(OsmApiException e) {
-        Main.error(e);
+        Logging.error(e);
         // TODO: Write a proper error message
         return explainGenericOsmApiException(e);
     }
@@ -604,7 +603,7 @@ public final class ExceptionUtil {
                 + "does not exist on the server or you are using an invalid URL to access<br>"
                 + "it. Please carefully check the server''s address ''{0}'' for typos.",
                 getUrlFromException(e));
-        Main.error(e);
+        Logging.error(e);
         return "<html>" + message + "</html>";
     }
 
@@ -623,10 +622,10 @@ public final class ExceptionUtil {
             host = new URL(apiUrl).getHost();
         } catch (MalformedURLException ex) {
             // shouldn't happen
-            Main.trace(e);
+            Logging.trace(e);
         }
 
-        Main.error(e);
+        Logging.error(e);
         return tr("<html>Failed to open a connection to the remote server<br>" + "''{0}''.<br>"
                 + "Host name ''{1}'' could not be resolved. <br>"
                 + "Please check the API URL in your preferences and your internet connection.", apiUrl, host)+"</html>";
@@ -718,7 +717,7 @@ public final class ExceptionUtil {
      * @return The HTML formatted error message to display
      */
     public static String explainException(Exception e) {
-        Main.error(e);
+        Logging.error(e);
         if (e instanceof OsmTransferException) {
             return explainOsmTransferException((OsmTransferException) e);
         } else {
@@ -731,7 +730,7 @@ public final class ExceptionUtil {
             try {
                 return new URL(e.getAccessedUrl()).getHost();
             } catch (MalformedURLException e1) {
-                Main.warn(e1);
+                Logging.warn(e1);
             }
         }
         if (e.getUrl() != null) {
diff --git a/src/org/openstreetmap/josm/tools/ExifReader.java b/src/org/openstreetmap/josm/tools/ExifReader.java
index 306b856..71a932e 100644
--- a/src/org/openstreetmap/josm/tools/ExifReader.java
+++ b/src/org/openstreetmap/josm/tools/ExifReader.java
@@ -7,7 +7,6 @@ import java.io.IOException;
 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;
@@ -45,7 +44,7 @@ public final class ExifReader {
             final Metadata metadata = JpegMetadataReader.readMetadata(filename);
             return readTime(metadata);
         } catch (JpegProcessingException | IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -111,14 +110,14 @@ public final class ExifReader {
                     try {
                         date.setTime(date.getTime() + (long) (TimeUnit.SECONDS.toMillis(1) * Double.parseDouble("0." + subSeconds)));
                     } catch (NumberFormatException e) {
-                        Main.warn("Failed parsing sub seconds from [{0}]", subSeconds);
-                        Main.warn(e);
+                        Logging.warn("Failed parsing sub seconds from [{0}]", subSeconds);
+                        Logging.warn(e);
                     }
                 }
                 return date;
             }
         } catch (UncheckedParseException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -145,7 +144,7 @@ public final class ExifReader {
             final Directory dir = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
             return dir == null ? null : dir.getInteger(ExifIFD0Directory.TAG_ORIENTATION);
         } catch (JpegProcessingException | IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -162,7 +161,7 @@ public final class ExifReader {
             final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
             return readLatLon(dirGps);
         } catch (JpegProcessingException | IOException | MetadataException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -196,7 +195,7 @@ public final class ExifReader {
             final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
             return readDirection(dirGps);
         } catch (JpegProcessingException | IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -254,7 +253,7 @@ public final class ExifReader {
             final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
             return readSpeed(dirGps);
         } catch (JpegProcessingException | IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
@@ -298,7 +297,7 @@ public final class ExifReader {
             final GpsDirectory dirGps = metadata.getFirstDirectoryOfType(GpsDirectory.class);
             return readElevation(dirGps);
         } catch (JpegProcessingException | IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
diff --git a/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java b/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java
index 43b7c8f..e332d35 100644
--- a/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java
+++ b/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 
 /**
@@ -40,19 +39,19 @@ public final class GeoUrlToBounds {
             try {
                 lat = Double.parseDouble(m.group("lat"));
             } catch (NumberFormatException e) {
-                Main.warn(tr("URL does not contain valid {0}", tr("latitude")), e);
+                Logging.warn(tr("URL does not contain valid {0}", tr("latitude")), e);
                 return null;
             }
             try {
                 lon = Double.parseDouble(m.group("lon"));
             } catch (NumberFormatException e) {
-                Main.warn(tr("URL does not contain valid {0}", tr("longitude")), e);
+                Logging.warn(tr("URL does not contain valid {0}", tr("longitude")), e);
                 return null;
             }
             try {
                 zoom = m.group("zoom") != null ? Integer.parseInt(m.group("zoom")) : 18;
             } catch (NumberFormatException e) {
-                Main.warn(tr("URL does not contain valid {0}", tr("zoom")), e);
+                Logging.warn(tr("URL does not contain valid {0}", tr("zoom")), e);
                 return null;
             }
             return OsmUrlToBounds.positionToBounds(lat, lon, zoom);
diff --git a/src/org/openstreetmap/josm/tools/Geometry.java b/src/org/openstreetmap/josm/tools/Geometry.java
index 1e063eb..9148fdb 100644
--- a/src/org/openstreetmap/josm/tools/Geometry.java
+++ b/src/org/openstreetmap/josm/tools/Geometry.java
@@ -34,6 +34,8 @@ import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
@@ -100,7 +102,7 @@ public final class Geometry {
             changedWays[pos] = false;
         }
 
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         DataSet dataset = ways.get(0).getDataSet();
 
         //iterate over all way pairs and introduce the intersections
@@ -552,7 +554,8 @@ public final class Geometry {
      * @return Area for the multipolygon (LatLon coordinates)
      */
     public static Area getAreaLatLon(Relation multipolygon) {
-        final Multipolygon mp = Main.map == null || Main.map.mapView == null
+        MapFrame map = MainApplication.getMap();
+        final Multipolygon mp = map == null || map.mapView == null
                 ? new Multipolygon(multipolygon)
                 : MultipolygonCache.getInstance().get(multipolygon);
         Path2D path = new Path2D.Double();
@@ -692,7 +695,8 @@ public final class Geometry {
      */
     public static double multipolygonArea(Relation multipolygon) {
         double area = 0.0;
-        final Multipolygon mp = Main.map == null || Main.map.mapView == null
+        MapFrame map = MainApplication.getMap();
+        final Multipolygon mp = map == null || map.mapView == null
                 ? new Multipolygon(multipolygon)
                 : MultipolygonCache.getInstance().get(multipolygon);
         for (Multipolygon.PolyData pd : mp.getCombinedPolygons()) {
@@ -931,8 +935,8 @@ public final class Geometry {
         try {
             outerInner = MultipolygonBuilder.joinWays(multiPolygon);
         } catch (MultipolygonBuilder.JoinedPolygonCreationException ex) {
-            Main.trace(ex);
-            Main.debug("Invalid multipolygon " + multiPolygon);
+            Logging.trace(ex);
+            Logging.debug("Invalid multipolygon " + multiPolygon);
             return false;
         }
         // Test if object is inside an outer member
diff --git a/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java b/src/org/openstreetmap/josm/tools/GuiSizesHelper.java
similarity index 96%
rename from src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java
rename to src/org/openstreetmap/josm/tools/GuiSizesHelper.java
index dc3934b..3c3f2c9 100644
--- a/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java
+++ b/src/org/openstreetmap/josm/tools/GuiSizesHelper.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.util;
+package org.openstreetmap.josm.tools;
 
 import java.awt.Dimension;
 import java.awt.GraphicsEnvironment;
@@ -11,6 +11,7 @@ import org.openstreetmap.josm.Main;
  * Support class to handle size information of Gui elements
  * This is needed, because display resolution may vary a lot and a common set
  * of sizes wont work for all users alike.
+ * @since 12682 (moved from {@code gui.util} package)
  * @since 10358
  */
 public final class GuiSizesHelper {
@@ -28,7 +29,7 @@ public final class GuiSizesHelper {
      */
     private static float getScreenDPI() {
         if (screenDPI == -1) {
-            synchronized (GuiHelper.class) {
+            synchronized (GuiSizesHelper.class) {
                 if (screenDPI == -1) {
                     float scalePref = (float) Main.pref.getDouble("gui.scale", 1.0);
                     if (scalePref != 0) {
diff --git a/src/org/openstreetmap/josm/tools/HttpClient.java b/src/org/openstreetmap/josm/tools/HttpClient.java
index 7b7d134..acf6413 100644
--- a/src/org/openstreetmap/josm/tools/HttpClient.java
+++ b/src/org/openstreetmap/josm/tools/HttpClient.java
@@ -52,6 +52,7 @@ public final class HttpClient {
     private int maxRedirects = Main.pref.getInteger("socket.maxredirects", 5);
     private boolean useCache;
     private String reasonForRequest;
+    private String outputMessage = tr("Uploading data ...");
     private HttpURLConnection connection; // to allow disconnecting before `response` is set
     private Response response;
     private boolean finishOnCloseOutput = true;
@@ -110,11 +111,12 @@ public final class HttpClient {
         progressMonitor.indeterminateSubTask(null);
 
         if ("PUT".equals(requestMethod) || "POST".equals(requestMethod) || "DELETE".equals(requestMethod)) {
-            Main.info("{0} {1} ({2}) ...", requestMethod, url, Utils.getSizeString(requestBody.length, Locale.getDefault()));
+            Logging.info("{0} {1} ({2}) ...", requestMethod, url, Utils.getSizeString(requestBody.length, Locale.getDefault()));
             connection.setFixedLengthStreamingMode(requestBody.length);
             connection.setDoOutput(true);
             try (OutputStream out = new BufferedOutputStream(
-                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length, progressMonitor, finishOnCloseOutput))) {
+                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length,
+                            progressMonitor, outputMessage, finishOnCloseOutput))) {
                 out.write(requestBody);
             }
         }
@@ -124,22 +126,22 @@ public final class HttpClient {
             try {
                 connection.connect();
                 final boolean hasReason = reasonForRequest != null && !reasonForRequest.isEmpty();
-                Main.info("{0} {1}{2} -> {3}{4}",
+                Logging.info("{0} {1}{2} -> {3}{4}",
                         requestMethod, url, hasReason ? (" (" + reasonForRequest + ')') : "",
                         connection.getResponseCode(),
                         connection.getContentLengthLong() > 0
                                 ? (" (" + Utils.getSizeString(connection.getContentLengthLong(), Locale.getDefault()) + ')')
                                 : ""
                 );
-                if (Main.isDebugEnabled()) {
-                    Main.debug("RESPONSE: " + connection.getHeaderFields());
+                if (Logging.isDebugEnabled()) {
+                    Logging.debug("RESPONSE: {0}", connection.getHeaderFields());
                 }
                 if (DefaultAuthenticator.getInstance().isEnabled() && connection.getResponseCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
                     DefaultAuthenticator.getInstance().addFailedCredentialHost(url.getHost());
                 }
             } catch (IOException e) {
-                Main.info("{0} {1} -> !!!", requestMethod, url);
-                Main.warn(e);
+                Logging.info("{0} {1} -> !!!", requestMethod, url);
+                Logging.warn(e);
                 //noinspection ThrowableResultOfMethodCallIgnored
                 Main.addNetworkError(url, Utils.getRootCause(e));
                 throw e;
@@ -153,7 +155,7 @@ public final class HttpClient {
                 } else if (maxRedirects > 0) {
                     url = new URL(url, redirectLocation);
                     maxRedirects--;
-                    Main.info(tr("Download redirected to ''{0}''", redirectLocation));
+                    Logging.info(tr("Download redirected to ''{0}''", redirectLocation));
                     return connect();
                 } else if (maxRedirects == 0) {
                     String msg = tr("Too many redirects to the download URL detected. Aborting.");
@@ -209,13 +211,13 @@ public final class HttpClient {
                         ) {
                     String content = this.fetchContent();
                     if (content.isEmpty()) {
-                        Main.debug("Server did not return any body");
+                        Logging.debug("Server did not return any body");
                     } else {
-                        Main.debug("Response body: ");
-                        Main.debug(this.fetchContent());
+                        Logging.debug("Response body: ");
+                        Logging.debug(this.fetchContent());
                     }
                 } else {
-                    Main.debug("Server returned content: {0} of length: {1}. Not printing.", contentType, this.getContentLength());
+                    Logging.debug("Server returned content: {0} of length: {1}. Not printing.", contentType, this.getContentLength());
                 }
             }
         }
@@ -282,7 +284,7 @@ public final class HttpClient {
             try {
                 in = connection.getInputStream();
             } catch (IOException ioe) {
-                Main.debug(ioe);
+                Logging.debug(ioe);
                 in = Optional.ofNullable(connection.getErrorStream()).orElseGet(() -> new ByteArrayInputStream(new byte[]{}));
             }
             in = new ProgressInputStream(in, getContentLength(), monitor);
@@ -290,7 +292,7 @@ public final class HttpClient {
             Compression compression = Compression.NONE;
             if (uncompress) {
                 final String contentType = getContentType();
-                Main.debug("Uncompressing input stream according to Content-Type header: {0}", contentType);
+                Logging.debug("Uncompressing input stream according to Content-Type header: {0}", contentType);
                 compression = Compression.forContentType(contentType);
             }
             if (uncompressAccordingToContentDisposition && Compression.NONE.equals(compression)) {
@@ -298,7 +300,7 @@ public final class HttpClient {
                 final Matcher matcher = Pattern.compile("filename=\"([^\"]+)\"").matcher(
                         contentDisposition != null ? contentDisposition : "");
                 if (matcher.find()) {
-                    Main.debug("Uncompressing input stream according to Content-Disposition header: {0}", contentDisposition);
+                    Logging.debug("Uncompressing input stream according to Content-Disposition header: {0}", contentDisposition);
                     compression = Compression.byExtension(matcher.group(1));
                 }
             }
@@ -621,6 +623,18 @@ public final class HttpClient {
     }
 
     /**
+     * Sets the output message to be displayed in progress monitor for {@code PUT}, {@code POST} and {@code DELETE} methods.
+     * Defaults to "Uploading data ..." (translated). Has no effect for {@code GET} or any other method.
+     * @param outputMessage message to be displayed in progress monitor
+     * @return {@code this}
+     * @since 12711
+     */
+    public HttpClient setOutputMessage(String outputMessage) {
+        this.outputMessage = outputMessage;
+        return this;
+    }
+
+    /**
      * Sets whether the progress monitor task will be finished when the output stream is closed. This is {@code true} by default.
      * @param finishOnCloseOutput whether the progress monitor task will be finished when the output stream is closed
      * @return {@code this}
@@ -653,15 +667,17 @@ public final class HttpClient {
     }
 
     private static void disconnect(final HttpURLConnection connection) {
-        // Fix upload aborts - see #263
-        connection.setConnectTimeout(100);
-        connection.setReadTimeout(100);
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ex) {
-            Main.warn("InterruptedException in " + HttpClient.class + " during cancel");
-            Thread.currentThread().interrupt();
+        if (connection != null) {
+            // Fix upload aborts - see #263
+            connection.setConnectTimeout(100);
+            connection.setReadTimeout(100);
+            try {
+                Thread.sleep(100);
+            } catch (InterruptedException ex) {
+                Logging.warn("InterruptedException in " + HttpClient.class + " during cancel");
+                Thread.currentThread().interrupt();
+            }
+            connection.disconnect();
         }
-        connection.disconnect();
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/I18n.java b/src/org/openstreetmap/josm/tools/I18n.java
index ea3b541..da85a5d 100644
--- a/src/org/openstreetmap/josm/tools/I18n.java
+++ b/src/org/openstreetmap/josm/tools/I18n.java
@@ -1,7 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
-import java.awt.GraphicsEnvironment;
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -22,15 +21,6 @@ import java.util.Map;
 import java.util.jar.JarInputStream;
 import java.util.zip.ZipEntry;
 
-import javax.swing.JColorChooser;
-import javax.swing.JFileChooser;
-import javax.swing.UIManager;
-
-import org.openstreetmap.gui.jmapviewer.FeatureAdapter.TranslationAdapter;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
-
 /**
  * Internationalisation support.
  *
@@ -95,91 +85,7 @@ public final class I18n {
     private static volatile PluralMode pluralMode = PluralMode.MODE_NOTONE; /* english default */
     private static volatile String loadedCode = "en";
 
-    /* Localization keys for file chooser (and color chooser). */
-    private static final String[] JAVA_INTERNAL_MESSAGE_KEYS = new String[] {
-        /* JFileChooser windows laf */
-        "FileChooser.detailsViewActionLabelText",
-        "FileChooser.detailsViewButtonAccessibleName",
-        "FileChooser.detailsViewButtonToolTipText",
-        "FileChooser.fileAttrHeaderText",
-        "FileChooser.fileDateHeaderText",
-        "FileChooser.fileNameHeaderText",
-        "FileChooser.fileNameLabelText",
-        "FileChooser.fileSizeHeaderText",
-        "FileChooser.fileTypeHeaderText",
-        "FileChooser.filesOfTypeLabelText",
-        "FileChooser.homeFolderAccessibleName",
-        "FileChooser.homeFolderToolTipText",
-        "FileChooser.listViewActionLabelText",
-        "FileChooser.listViewButtonAccessibleName",
-        "FileChooser.listViewButtonToolTipText",
-        "FileChooser.lookInLabelText",
-        "FileChooser.newFolderAccessibleName",
-        "FileChooser.newFolderActionLabelText",
-        "FileChooser.newFolderToolTipText",
-        "FileChooser.refreshActionLabelText",
-        "FileChooser.saveInLabelText",
-        "FileChooser.upFolderAccessibleName",
-        "FileChooser.upFolderToolTipText",
-        "FileChooser.viewMenuLabelText",
-
-        /* JFileChooser gtk laf */
-        "FileChooser.acceptAllFileFilterText",
-        "FileChooser.cancelButtonText",
-        "FileChooser.cancelButtonToolTipText",
-        "FileChooser.deleteFileButtonText",
-        "FileChooser.filesLabelText",
-        "FileChooser.filterLabelText",
-        "FileChooser.foldersLabelText",
-        "FileChooser.newFolderButtonText",
-        "FileChooser.newFolderDialogText",
-        "FileChooser.openButtonText",
-        "FileChooser.openButtonToolTipText",
-        "FileChooser.openDialogTitleText",
-        "FileChooser.pathLabelText",
-        "FileChooser.renameFileButtonText",
-        "FileChooser.renameFileDialogText",
-        "FileChooser.renameFileErrorText",
-        "FileChooser.renameFileErrorTitle",
-        "FileChooser.saveButtonText",
-        "FileChooser.saveButtonToolTipText",
-        "FileChooser.saveDialogTitleText",
-
-        /* JFileChooser motif laf */
-        //"FileChooser.cancelButtonText",
-        //"FileChooser.cancelButtonToolTipText",
-        "FileChooser.enterFileNameLabelText",
-        //"FileChooser.filesLabelText",
-        //"FileChooser.filterLabelText",
-        //"FileChooser.foldersLabelText",
-        "FileChooser.helpButtonText",
-        "FileChooser.helpButtonToolTipText",
-        //"FileChooser.openButtonText",
-        //"FileChooser.openButtonToolTipText",
-        //"FileChooser.openDialogTitleText",
-        //"FileChooser.pathLabelText",
-        //"FileChooser.saveButtonText",
-        //"FileChooser.saveButtonToolTipText",
-        //"FileChooser.saveDialogTitleText",
-        "FileChooser.updateButtonText",
-        "FileChooser.updateButtonToolTipText",
-
-        /* gtk color chooser */
-        "GTKColorChooserPanel.blueText",
-        "GTKColorChooserPanel.colorNameText",
-        "GTKColorChooserPanel.greenText",
-        "GTKColorChooserPanel.hueText",
-        "GTKColorChooserPanel.nameText",
-        "GTKColorChooserPanel.redText",
-        "GTKColorChooserPanel.saturationText",
-        "GTKColorChooserPanel.valueText",
-
-        /* JOptionPane */
-        "OptionPane.okButtonText",
-        "OptionPane.yesButtonText",
-        "OptionPane.noButtonText",
-        "OptionPane.cancelButtonText"
-    };
+
     private static volatile Map<String, String> strings;
     private static volatile Map<String, String[]> pstrings;
     private static Map<String, PluralMode> languages = new HashMap<>();
@@ -362,7 +268,7 @@ public final class I18n {
     }
 
     private static URL getTranslationFile(String lang) {
-        return Main.class.getResource("/data/"+lang.replace('@', '-')+".lang");
+        return I18n.class.getResource("/data/"+lang.replace('@', '-')+".lang");
     }
 
     /**
@@ -486,7 +392,7 @@ public final class I18n {
             }
         } catch (IOException e) {
             // Ignore
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
@@ -516,7 +422,7 @@ public final class I18n {
             }
         } catch (IOException e) {
             // Ignore exception
-            Main.trace(e);
+            Logging.trace(e);
         }
         return false;
     }
@@ -642,7 +548,7 @@ public final class I18n {
                 }
             }
         } catch (IOException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return false;
         }
         if (!s.isEmpty()) {
@@ -669,7 +575,7 @@ public final class I18n {
                 Locale.setDefault(l);
             } else {
                 if (!"en".equals(l.getLanguage())) {
-                    Main.info(tr("Unable to find translation for the locale {0}. Reverting to {1}.",
+                    Logging.info(tr("Unable to find translation for the locale {0}. Reverting to {1}.",
                             LanguageInfo.getDisplayName(l), LanguageInfo.getDisplayName(Locale.getDefault())));
                 } else {
                     strings = null;
@@ -679,27 +585,6 @@ public final class I18n {
         }
     }
 
-    /**
-     * Localizations for file chooser dialog.
-     * For some locales (e.g. de, fr) translations are provided
-     * by Java, but not for others (e.g. ru, uk).
-     */
-    public static void translateJavaInternalMessages() {
-        Locale l = Locale.getDefault();
-
-        AbstractFileChooser.setDefaultLocale(l);
-        JFileChooser.setDefaultLocale(l);
-        JColorChooser.setDefaultLocale(l);
-        for (String key : JAVA_INTERNAL_MESSAGE_KEYS) {
-            String us = UIManager.getString(key, Locale.US);
-            String loc = UIManager.getString(key, l);
-            // only provide custom translation if it is not already localized by Java
-            if (us != null && us.equals(loc)) {
-                UIManager.put(key, tr(us));
-            }
-        }
-    }
-
     private static int pluralEval(long n) {
         switch(pluralMode) {
         case MODE_NOTONE: /* bg, da, de, el, en, en_GB, es, et, eu, fi, gl, is, it, iw_IL, nb, nl, sv */
@@ -732,27 +617,4 @@ public final class I18n {
         }
         return 0;
     }
-
-    public static TranslationAdapter getTranslationAdapter() {
-        return I18n::tr;
-    }
-
-    /**
-     * Setup special font for Khmer script, as the default Java fonts do not display these characters.
-     *
-     * @since 8282
-     */
-    public static void setupLanguageFonts() {
-        // Use special font for Khmer script, as the default Java font do not display these characters
-        if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
-            Collection<String> fonts = Arrays.asList(
-                    GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
-            for (String f : new String[]{"Khmer UI", "DaunPenh", "MoolBoran"}) {
-                if (fonts.contains(f)) {
-                    GuiHelper.setUIFont(f);
-                    break;
-                }
-            }
-        }
-    }
 }
diff --git a/src/org/openstreetmap/josm/tools/ImageProvider.java b/src/org/openstreetmap/josm/tools/ImageProvider.java
index fe39e52..6c0d150 100644
--- a/src/org/openstreetmap/josm/tools/ImageProvider.java
+++ b/src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -69,7 +69,6 @@ import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
-import org.openstreetmap.josm.gui.util.GuiSizesHelper;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.w3c.dom.Element;
@@ -641,7 +640,7 @@ public class ImageProvider {
                                 name + ext));
             } else {
                 if (!suppressWarnings) {
-                    Main.error(tr("Failed to locate image ''{0}''", name));
+                    Logging.error(tr("Failed to locate image ''{0}''", name));
                 }
                 return null;
             }
@@ -916,14 +915,14 @@ public class ImageProvider {
                 try {
                     img = read(Utils.fileToURL(cf.getFile()), false, false);
                 } catch (IOException e) {
-                    Main.warn(e, "IOException while reading HTTP image:");
+                    Logging.log(Logging.LEVEL_WARN, "IOException while reading HTTP image:", e);
                 }
                 return img == null ? null : new ImageResource(img);
             default:
                 throw new AssertionError("Unsupported type: " + type);
             }
         } catch (IOException e) {
-            Main.debug(e);
+            Logging.debug(e);
             return null;
         }
     }
@@ -946,7 +945,7 @@ public class ImageProvider {
                 try {
                     bytes = Utils.decodeUrl(data).getBytes(StandardCharsets.UTF_8);
                 } catch (IllegalArgumentException ex) {
-                    Main.warn(ex, "Unable to decode URL data part: "+ex.getMessage() + " (" + data + ')');
+                    Logging.log(Logging.LEVEL_WARN, "Unable to decode URL data part: "+ex.getMessage() + " (" + data + ')', ex);
                     return null;
                 }
             }
@@ -959,7 +958,7 @@ public class ImageProvider {
                     svg = getSvgUniverse().getDiagram(uri);
                 }
                 if (svg == null) {
-                    Main.warn("Unable to process svg: "+s);
+                    Logging.warn("Unable to process svg: "+s);
                     return null;
                 }
                 return new ImageResource(svg);
@@ -973,7 +972,7 @@ public class ImageProvider {
                     Image img = read(new ByteArrayInputStream(bytes), false, true);
                     return img == null ? null : new ImageResource(img);
                 } catch (IOException e) {
-                    Main.warn(e, "IOException while reading image:");
+                    Logging.log(Logging.LEVEL_WARN, "IOException while reading image:", e);
                 }
             }
         }
@@ -1058,7 +1057,7 @@ public class ImageProvider {
                         try {
                             img = read(new ByteArrayInputStream(buf), false, false);
                         } catch (IOException e) {
-                            Main.warn(e);
+                            Logging.warn(e);
                         }
                         return img == null ? null : new ImageResource(img);
                     default:
@@ -1067,7 +1066,7 @@ public class ImageProvider {
                 }
             }
         } catch (IOException e) {
-            Main.warn(e, tr("Failed to handle zip file ''{0}''. Exception was: {1}", archive.getName(), e.toString()));
+            Logging.log(Logging.LEVEL_WARN, tr("Failed to handle zip file ''{0}''. Exception was: {1}", archive.getName(), e.toString()), e);
         }
         return null;
     }
@@ -1095,11 +1094,11 @@ public class ImageProvider {
                 // This can be removed if someday Oracle fixes https://bugs.openjdk.java.net/browse/JDK-6788458
                 // hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dc4322602480/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
                 img = read(path, false, true);
-                if (Main.isDebugEnabled() && isTransparencyForced(img)) {
-                    Main.debug("Transparency has been forced for image "+path.toExternalForm());
+                if (Logging.isDebugEnabled() && isTransparencyForced(img)) {
+                    Logging.debug("Transparency has been forced for image {0}", path);
                 }
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
             return img == null ? null : new ImageResource(img);
         default:
@@ -1138,9 +1137,9 @@ public class ImageProvider {
                     if (u != null)
                         return u;
                 } catch (SecurityException e) {
-                    Main.warn(e, tr(
+                    Logging.log(Logging.LEVEL_WARN, tr(
                             "Failed to access directory ''{0}'' for security reasons. Exception was: {1}",
-                            name, e.toString()));
+                            name, e.toString()), e);
                 }
 
             }
@@ -1153,9 +1152,9 @@ public class ImageProvider {
                 if (u != null)
                     return u;
             } catch (SecurityException e) {
-                Main.warn(e, tr(
+                Logging.log(Logging.LEVEL_WARN, tr(
                         "Failed to access directory ''{0}'' for security reasons. Exception was: {1}", dir, e
-                        .toString()));
+                        .toString()), e);
             }
         }
 
@@ -1225,13 +1224,13 @@ public class ImageProvider {
                 parser.parse(new InputSource(is));
             }
         } catch (SAXReturnException e) {
-            Main.trace(e);
+            Logging.trace(e);
             return e.getResult();
         } catch (IOException | SAXException | ParserConfigurationException e) {
-            Main.warn("Parsing " + base + fn + " failed:\n" + e);
+            Logging.warn("Parsing " + base + fn + " failed:\n" + e);
             return null;
         }
-        Main.warn("Parsing " + base + fn + " failed: Unexpected content.");
+        Logging.warn("Parsing " + base + fn + " failed: Unexpected content.");
         return null;
     }
 
@@ -1250,9 +1249,7 @@ public class ImageProvider {
                     .setMaxSize(ImageSizes.CURSOROVERLAY))).get();
         }
         if (GraphicsEnvironment.isHeadless()) {
-            if (Main.isDebugEnabled()) {
-                Main.debug("Cursors are not available in headless mode. Returning null for '"+name+'\'');
-            }
+            Logging.debug("Cursors are not available in headless mode. Returning null for '{0}'", name);
             return null;
         }
         return Toolkit.getDefaultToolkit().createCustomCursor(img.getImage(),
@@ -1464,8 +1461,8 @@ public class ImageProvider {
      * @return an image from the given SVG data at the desired dimension.
      */
     public static BufferedImage createImageFromSvg(SVGDiagram svg, Dimension dim) {
-        if (Main.isTraceEnabled()) {
-            Main.trace(String.format("createImageFromSvg: %s %s", svg.getXMLBase(), dim));
+        if (Logging.isTraceEnabled()) {
+            Logging.trace("createImageFromSvg: {0} {1}", svg.getXMLBase(), dim);
         }
         float sourceWidth = svg.getWidth();
         float sourceHeight = svg.getHeight();
@@ -1503,7 +1500,7 @@ public class ImageProvider {
                 svg.render(g);
             }
         } catch (SVGException ex) {
-            Main.error(ex, "Unable to load svg:");
+            Logging.log(Logging.LEVEL_ERROR, "Unable to load svg:", ex);
             return null;
         }
         return img;
@@ -1723,9 +1720,7 @@ public class ImageProvider {
                     properties.put(PROP_TRANSPARENCY_COLOR, color);
                     bi = new BufferedImage(bi.getColorModel(), bi.getRaster(), bi.isAlphaPremultiplied(), properties);
                     if (enforceTransparency) {
-                        if (Main.isTraceEnabled()) {
-                            Main.trace("Enforcing image transparency of "+stream+" for "+color);
-                        }
+                        Logging.trace("Enforcing image transparency of {0} for {1}", stream, color);
                         bi = makeImageTransparent(bi, color);
                     }
                 }
@@ -1733,7 +1728,7 @@ public class ImageProvider {
         } catch (LinkageError e) {
             // On Windows, ComponentColorModel.getRGBComponent can fail with "UnsatisfiedLinkError: no awt in java.library.path", see #13973
             // Then it can leads to "NoClassDefFoundError: Could not initialize class sun.awt.image.ShortInterleavedRaster", see #15079
-            Main.error(e);
+            Logging.error(e);
         } finally {
             reader.dispose();
             stream.close();
@@ -1780,7 +1775,7 @@ public class ImageProvider {
                                                 int b = model.getBlue(pixel);
                                                 return new Color(r, g, b);
                                             } else {
-                                                Main.warn("Unable to translate TransparentColor '"+value+"' with color model "+model);
+                                                Logging.warn("Unable to translate TransparentColor '"+value+"' with color model "+model);
                                             }
                                         }
                                     }
@@ -1793,7 +1788,7 @@ public class ImageProvider {
             }
         } catch (IIOException | NumberFormatException e) {
             // JAI doesn't like some JPEG files with error "Inconsistent metadata read from stream" (see #10267)
-            Main.warn(e);
+            Logging.warn(e);
         }
         return null;
     }
@@ -1806,7 +1801,7 @@ public class ImageProvider {
             }
             return new Color(rgb[0], rgb[1], rgb[2]);
         } catch (IllegalArgumentException e) {
-            Main.error(e);
+            Logging.error(e);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/ImageResource.java b/src/org/openstreetmap/josm/tools/ImageResource.java
index e24db54..8e92a80 100644
--- a/src/org/openstreetmap/josm/tools/ImageResource.java
+++ b/src/org/openstreetmap/josm/tools/ImageResource.java
@@ -15,8 +15,6 @@ import javax.swing.ImageIcon;
 import javax.swing.JPanel;
 import javax.swing.UIManager;
 
-import org.openstreetmap.josm.gui.util.GuiSizesHelper;
-
 import com.kitfox.svg.SVGDiagram;
 
 /**
diff --git a/src/org/openstreetmap/josm/tools/ImageWarp.java b/src/org/openstreetmap/josm/tools/ImageWarp.java
index 5e25912..5544329 100644
--- a/src/org/openstreetmap/josm/tools/ImageWarp.java
+++ b/src/org/openstreetmap/josm/tools/ImageWarp.java
@@ -10,8 +10,6 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
-
 /**
  * Image warping algorithm.
  *
@@ -62,7 +60,7 @@ public class ImageWarp {
             this.trfm = trfm;
             this.stride = stride;
             this.cache = new HashMap<>();
-            this.consistencyTest = Main.isDebugEnabled();
+            this.consistencyTest = Logging.isDebugEnabled();
             if (consistencyTest) {
                 deletedRows = new HashSet<>();
             } else {
diff --git a/src/org/openstreetmap/josm/tools/ListenerList.java b/src/org/openstreetmap/josm/tools/ListenerList.java
index a58f6af..bdb715c 100644
--- a/src/org/openstreetmap/josm/tools/ListenerList.java
+++ b/src/org/openstreetmap/josm/tools/ListenerList.java
@@ -9,8 +9,6 @@ import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Stream;
 
-import org.openstreetmap.josm.Main;
-
 /**
  * This is a list of listeners. It does error checking and allows you to fire all listeners.
  *
@@ -199,24 +197,24 @@ public class ListenerList<T> {
 
         @Override
         protected void failAdd(T listener) {
-            Main.trace("Previous addition of the listener");
+            Logging.trace("Previous addition of the listener");
             dumpStack(listenersAdded.get(listener));
             super.failAdd(listener);
         }
 
         @Override
         protected void failRemove(T listener) {
-            Main.trace("Previous removal of the listener");
+            Logging.trace("Previous removal of the listener");
             dumpStack(listenersRemoved.get(listener));
             super.failRemove(listener);
         }
 
         private static void dumpStack(StackTraceElement ... stackTraceElements) {
             if (stackTraceElements == null) {
-                Main.trace("  - (no trace recorded)");
+                Logging.trace("  - (no trace recorded)");
             } else {
                 Stream.of(stackTraceElements).limit(20).forEach(
-                        e -> Main.trace(e.getClassName() + "." + e.getMethodName() + " line " + e.getLineNumber()));
+                        e -> Logging.trace(e.getClassName() + "." + e.getMethodName() + " line " + e.getLineNumber()));
             }
         }
     }
@@ -241,7 +239,7 @@ public class ListenerList<T> {
      * @return A new list. A tracing list is created if trace is enabled.
      */
     public static <T> ListenerList<T> create() {
-        if (Main.isTraceEnabled()) {
+        if (Logging.isTraceEnabled()) {
             return new TracingListenerList<>();
         } else {
             return new ListenerList<>();
diff --git a/src/org/openstreetmap/josm/tools/Logging.java b/src/org/openstreetmap/josm/tools/Logging.java
index 253897f..6a30cf1 100644
--- a/src/org/openstreetmap/josm/tools/Logging.java
+++ b/src/org/openstreetmap/josm/tools/Logging.java
@@ -112,6 +112,15 @@ public final class Logging {
     }
 
     /**
+     * Prints an error message for the given Throwable if logging is on.
+     * @param t The throwable object causing the error.
+     * @since 12620
+     */
+    public static void error(Throwable t) {
+        logWithStackTrace(Logging.LEVEL_ERROR, t);
+    }
+
+    /**
      * Prints a warning message if logging is on.
      * @param message The message to print.
      */
@@ -130,6 +139,15 @@ public final class Logging {
     }
 
     /**
+     * Prints a warning message for the given Throwable if logging is on.
+     * @param t The throwable object causing the error.
+     * @since 12620
+     */
+    public static void warn(Throwable t) {
+        logWithStackTrace(Logging.LEVEL_WARN, t);
+    }
+
+    /**
      * Prints a info message if logging is on.
      * @param message The message to print.
      */
@@ -148,6 +166,15 @@ public final class Logging {
     }
 
     /**
+     * Prints a info message for the given Throwable if logging is on.
+     * @param t The throwable object causing the error.
+     * @since 12620
+     */
+    public static void info(Throwable t) {
+        logWithStackTrace(Logging.LEVEL_INFO, t);
+    }
+
+    /**
      * Prints a debug message if logging is on.
      * @param message The message to print.
      */
@@ -166,6 +193,15 @@ public final class Logging {
     }
 
     /**
+     * Prints a debug message for the given Throwable if logging is on.
+     * @param t The throwable object causing the error.
+     * @since 12620
+     */
+    public static void debug(Throwable t) {
+        log(Logging.LEVEL_DEBUG, t);
+    }
+
+    /**
      * Prints a trace message if logging is on.
      * @param message The message to print.
      */
@@ -184,19 +220,30 @@ public final class Logging {
     }
 
     /**
-     * Logs a throwable that happened.
+     * Prints a trace message for the given Throwable if logging is on.
+     * @param t The throwable object causing the error.
+     * @since 12620
+     */
+    public static void trace(Throwable t) {
+        log(Logging.LEVEL_TRACE, t);
+    }
+
+    /**
+     * Logs a throwable that happened. The stack trace is not added to the log.
      * @param level The level.
      * @param t The throwable that should be logged.
+     * @see #logWithStackTrace(Level, Throwable)
      */
     public static void log(Level level, Throwable t) {
         logPrivate(level, () -> getErrorLog(null, t));
     }
 
     /**
-     * Logs a throwable that happened.
+     * Logs a throwable that happened. The stack trace is not added to the log.
      * @param level The level.
      * @param message An additional error message
      * @param t The throwable that caused the message
+     * @see #logWithStackTrace(Level, String, Throwable)
      */
     public static void log(Level level, String message, Throwable t) {
         logPrivate(level, () -> getErrorLog(message, t));
@@ -206,6 +253,7 @@ public final class Logging {
      * Logs a throwable that happened. Adds the stack trace to the log.
      * @param level The level.
      * @param t The throwable that should be logged.
+     * @see #log(Level, Throwable)
      */
     public static void logWithStackTrace(Level level, Throwable t) {
         logPrivate(level, () -> getErrorLogWithStack(null, t));
@@ -216,6 +264,7 @@ public final class Logging {
      * @param level The level.
      * @param message An additional error message
      * @param t The throwable that should be logged.
+     * @see #logWithStackTrace(Level, Throwable)
      */
     public static void logWithStackTrace(Level level, String message, Throwable t) {
         logPrivate(level, () -> getErrorLogWithStack(message, t));
@@ -230,7 +279,7 @@ public final class Logging {
     }
 
     private static void logPrivate(Level level, Supplier<String> supplier) {
-        // all log methods immeadiately call one of the logPrivate methods.
+        // all log methods immediately call one of the logPrivate methods.
         if (LOGGER.isLoggable(level)) {
             StackTraceElement callingMethod = BugReport.getCallingMethod(1, Logging.class.getName(), name -> !"logPrivate".equals(name));
             LOGGER.logp(level, callingMethod.getClassName(), callingMethod.getMethodName(), supplier);
@@ -241,13 +290,33 @@ public final class Logging {
      * Tests if a given log level is enabled. This can be used to avoid constructing debug data if required.
      *
      * For formatting text, you should use the {@link #debug(String, Object...)} message
-     * @param level A lvele constant. You can e.g. use {@link Logging#LEVEL_ERROR}
-     * @return <code>true</code> if debug is enabled.
+     * @param level A level constant. You can e.g. use {@link Logging#LEVEL_ERROR}
+     * @return <code>true</code> if log level is enabled.
      */
     public static boolean isLoggingEnabled(Level level) {
         return LOGGER.isLoggable(level);
     }
 
+    /**
+     * Determines if debug log level is enabled.
+     * Useful to avoid costly construction of debug messages when not enabled.
+     * @return {@code true} if log level is at least debug, {@code false} otherwise
+     * @since 12620
+     */
+    public static boolean isDebugEnabled() {
+        return isLoggingEnabled(Logging.LEVEL_DEBUG);
+    }
+
+    /**
+     * Determines if trace log level is enabled.
+     * Useful to avoid costly construction of trace messages when not enabled.
+     * @return {@code true} if log level is at least trace, {@code false} otherwise
+     * @since 12620
+     */
+    public static boolean isTraceEnabled() {
+        return isLoggingEnabled(Logging.LEVEL_TRACE);
+    }
+
     private static String getErrorLog(String message, Throwable t) {
         StringBuilder sb = new StringBuilder();
         if (message != null) {
diff --git a/src/org/openstreetmap/josm/tools/MemoryManager.java b/src/org/openstreetmap/josm/tools/MemoryManager.java
index 3da0329..9d2d8a9 100644
--- a/src/org/openstreetmap/josm/tools/MemoryManager.java
+++ b/src/org/openstreetmap/josm/tools/MemoryManager.java
@@ -7,8 +7,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Supplier;
 
-import org.openstreetmap.josm.Main;
-
 /**
  * This class allows all components of JOSM to register reclaimable amounts to memory.
  * <p>
@@ -51,7 +49,7 @@ public class MemoryManager {
             if (content == null) {
                 throw new IllegalArgumentException("Factory did not return a content element.");
             }
-            Main.info(MessageFormat.format("Allocate for {0}: {1} MB of memory. Available: {2} MB.",
+            Logging.info(MessageFormat.format("Allocate for {0}: {1} MB of memory. Available: {2} MB.",
                     name, maxBytes / 1024 / 1024, getAvailableMemory() / 1024 / 1024));
             MemoryHandle<T> handle = new ManualFreeMemoryHandle<>(name, content, maxBytes);
             activeHandles.add(handle);
diff --git a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
index 859040c..b24206c 100644
--- a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
+++ b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
@@ -23,6 +23,7 @@ import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.MultikeyShortcutAction.MultikeyInfo;
 
 public final class MultikeyActionsHandler {
@@ -41,7 +42,7 @@ public final class MultikeyActionsHandler {
 
             @Override
             public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-                Main.map.statusLine.resetHelpText(STATUS_BAR_ID);
+                MainApplication.getMap().statusLine.resetHelpText(STATUS_BAR_ID);
             }
 
             @Override
@@ -113,7 +114,7 @@ public final class MultikeyActionsHandler {
                     lastAction.action.executeMultikeyAction(index, e.getKeyCode() == lastAction.shortcut.getKeyStroke().getKeyCode());
                 }
                 lastAction = null;
-                Main.map.statusLine.resetHelpText(STATUS_BAR_ID);
+                MainApplication.getMap().statusLine.resetHelpText(STATUS_BAR_ID);
                 return true;
             }
             return false;
@@ -146,7 +147,7 @@ public final class MultikeyActionsHandler {
             lastTimestamp = e.getWhen();
             lastAction = this;
             timer.schedule(new MyTimerTask(lastTimestamp, lastAction), DIALOG_DELAY);
-            Main.map.statusLine.setHelpText(STATUS_BAR_ID, tr("{0}... [please type its number]", (String) action.getValue(SHORT_DESCRIPTION)));
+            MainApplication.getMap().statusLine.setHelpText(STATUS_BAR_ID, tr("{0}... [please type its number]", (String) action.getValue(SHORT_DESCRIPTION)));
         }
 
         @Override
@@ -210,7 +211,7 @@ public final class MultikeyActionsHandler {
         if (action.getMultikeyShortcut() != null) {
             MyAction myAction = new MyAction(action);
             myActions.put(action, myAction);
-            Main.registerActionShortcut(myAction, myAction.shortcut);
+            MainApplication.registerActionShortcut(myAction, myAction.shortcut);
         }
     }
 
@@ -221,7 +222,7 @@ public final class MultikeyActionsHandler {
     public void removeAction(MultikeyShortcutAction action) {
         MyAction a = myActions.get(action);
         if (a != null) {
-            Main.unregisterActionShortcut(a, a.shortcut);
+            MainApplication.unregisterActionShortcut(a, a.shortcut);
             myActions.remove(action);
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/OpenBrowser.java b/src/org/openstreetmap/josm/tools/OpenBrowser.java
index 6110fa0..43f808b 100644
--- a/src/org/openstreetmap/josm/tools/OpenBrowser.java
+++ b/src/org/openstreetmap/josm/tools/OpenBrowser.java
@@ -40,7 +40,7 @@ public final class OpenBrowser {
     public static String displayUrl(URI uri) {
         CheckParameterUtil.ensureParameterNotNull(uri, "uri");
 
-        Main.info(tr("Opening URL: {0}", uri));
+        Logging.info(tr("Opening URL: {0}", uri));
 
         if (Desktop.isDesktopSupported()) {
             try {
@@ -58,20 +58,20 @@ public final class OpenBrowser {
                     } catch (IOException e) {
                         // Workaround for KDE (Desktop API is severely flawed)
                         // see https://bugs.openjdk.java.net/browse/JDK-6486393
-                        Main.warn(e, "Desktop class failed. Platform dependent fall back for open url in browser.");
+                        Logging.log(Logging.LEVEL_WARN, "Desktop class failed. Platform dependent fall back for open url in browser.", e);
                         displayUrlFallback(uri);
                     }
                 }
             } catch (IOException e) {
-                Main.warn(e);
+                Logging.warn(e);
                 return e.getMessage();
             }
         } else {
             try {
-                Main.warn("Desktop class is not supported. Platform dependent fall back for open url in browser.");
+                Logging.warn("Desktop class is not supported. Platform dependent fall back for open url in browser.");
                 displayUrlFallback(uri);
             } catch (IOException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 return e.getMessage();
             }
         }
@@ -90,7 +90,7 @@ public final class OpenBrowser {
         try {
             return displayUrl(new URI(url));
         } catch (URISyntaxException e) {
-            Main.debug(e);
+            Logging.debug(e);
             return e.getMessage();
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
index 478676a..ddf3a65 100644
--- a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
+++ b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
@@ -14,6 +14,8 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Ellipsoid;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -41,7 +43,7 @@ public final class OsmUrlToBounds {
                 url = Utils.decodeUrl(url);
             }
         } catch (IllegalArgumentException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
         Bounds b = parseShortLink(url);
         if (b != null)
@@ -81,7 +83,7 @@ public final class OsmUrlToBounds {
                         z == null ? 18 : Integer.parseInt(z));
             }
         } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException ex) {
-            Main.error(ex, url);
+            Logging.log(Logging.LEVEL_ERROR, url, ex);
         }
         return b;
     }
@@ -101,27 +103,27 @@ public final class OsmUrlToBounds {
         String coordPart = url.substring(startIndex+(url.contains("#map=") ? "#map=".length() : "#".length()), endIndex);
         String[] parts = coordPart.split("/");
         if (parts.length < 3) {
-            Main.warn(tr("URL does not contain {0}/{1}/{2}", tr("zoom"), tr("latitude"), tr("longitude")));
+            Logging.warn(tr("URL does not contain {0}/{1}/{2}", tr("zoom"), tr("latitude"), tr("longitude")));
             return null;
         }
         int zoom;
         try {
             zoom = Integer.parseInt(parts[0]);
         } catch (NumberFormatException e) {
-            Main.warn(tr("URL does not contain valid {0}", tr("zoom")), e);
+            Logging.warn(tr("URL does not contain valid {0}", tr("zoom")), e);
             return null;
         }
         double lat, lon;
         try {
             lat = Double.parseDouble(parts[1]);
         } catch (NumberFormatException e) {
-            Main.warn(tr("URL does not contain valid {0}", tr("latitude")), e);
+            Logging.warn(tr("URL does not contain valid {0}", tr("latitude")), e);
             return null;
         }
         try {
             lon = Double.parseDouble(parts[2]);
         } catch (NumberFormatException e) {
-            Main.warn(tr("URL does not contain valid {0}", tr("longitude")), e);
+            Logging.warn(tr("URL does not contain valid {0}", tr("longitude")), e);
             return null;
         }
         return positionToBounds(lat, lon, zoom);
@@ -203,8 +205,9 @@ public final class OsmUrlToBounds {
     }
 
     private static Dimension getScreenSize() {
-        if (Main.isDisplayingMapView()) {
-            return new Dimension(Main.map.mapView.getWidth(), Main.map.mapView.getHeight());
+        if (MainApplication.isDisplayingMapView()) {
+            MapView mapView = MainApplication.getMap().mapView;
+            return new Dimension(mapView.getWidth(), mapView.getHeight());
         } else {
             return GuiHelper.getScreenSize();
         }
diff --git a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
index 436c7cb..28a705a 100644
--- a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
+++ b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
@@ -9,7 +9,6 @@ import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.CachedFile;
 
 /**
@@ -42,7 +41,7 @@ public final class OverpassTurboQueryWizard {
         }
         try (CachedFile file = new CachedFile("resource://data/overpass-wizard.js");
              Reader reader = file.getContentReader()) {
-            engine.eval("var console = {error: " + Main.class.getCanonicalName() + ".warn};");
+            engine.eval("var console = {error: " + Logging.class.getCanonicalName() + ".warn};");
             engine.eval("var global = {};");
             engine.eval(reader);
             engine.eval("var overpassWizard = function(query) {" +
diff --git a/src/org/openstreetmap/josm/tools/PlatformHook.java b/src/org/openstreetmap/josm/tools/PlatformHook.java
index 8965be0..2fa55d0 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHook.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHook.java
@@ -1,9 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.Dimension;
 import java.awt.GraphicsEnvironment;
 import java.io.BufferedReader;
 import java.io.File;
@@ -19,10 +16,7 @@ import java.text.DateFormat;
 import java.util.Date;
 import java.util.List;
 
-import javax.swing.JOptionPane;
-
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.io.CertificateAmendment.CertAmend;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -60,8 +54,10 @@ public interface PlatformHook {
       *
       * Reason: On OSX we need to register some callbacks with the
       * OS, so we'll receive events from the system menu.
+     * @param callback Java expiration callback, providing GUI feedback
+     * @since 12270 (signature)
       */
-    default void startupHook() {
+    default void startupHook(JavaExpirationCallback callback) {
         // Do nothing
     }
 
@@ -245,58 +241,73 @@ public interface PlatformHook {
     }
 
     /**
-     * Asks user to update its version of Java.
-     * @param updVersion target update version
-     * @param url download URL
-     * @param major true for a migration towards a major version of Java (8:9), false otherwise
-     * @param eolDate the EOL/expiration date
-     * @since 12219
+     * Called when an outdated version of Java is detected at startup.
+     * @since 12270
      */
-    default void askUpdateJava(String updVersion, String url, String eolDate, boolean major) {
-        ExtendedDialog ed = new ExtendedDialog(
-                Main.parent,
-                tr("Outdated Java version"),
-                tr("OK"), tr("Update Java"), tr("Cancel"));
-        // Check if the dialog has not already been permanently hidden by user
-        if (!ed.toggleEnable("askUpdateJava"+updVersion).toggleCheckState()) {
-            ed.setButtonIcons("ok", "java", "cancel").setCancelButton(3);
-            ed.setMinimumSize(new Dimension(480, 300));
-            ed.setIcon(JOptionPane.WARNING_MESSAGE);
-            StringBuilder content = new StringBuilder(tr("You are running version {0} of Java.",
-                    "<b>"+System.getProperty("java.version")+"</b>")).append("<br><br>");
-            if ("Sun Microsystems Inc.".equals(System.getProperty("java.vendor")) && !isOpenJDK()) {
-                content.append("<b>").append(tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
-                        "Oracle", eolDate)).append("</b><br><br>");
-            }
-            content.append("<b>")
-                   .append(major ?
-                        tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", updVersion) :
-                        tr("You may face critical Java bugs; we highly recommend you to update to Java {0}.", updVersion))
-                   .append("</b><br><br>")
-                   .append(tr("Would you like to update now ?"));
-            ed.setContent(content.toString());
-
-            if (ed.showDialog().getValue() == 2) {
-                try {
-                    openUrl(url);
-                } catch (IOException e) {
-                    Main.warn(e);
-                }
-            }
-        }
+    @FunctionalInterface
+    interface JavaExpirationCallback {
+        /**
+         * Asks user to update its version of Java.
+         * @param updVersion target update version
+         * @param url download URL
+         * @param major true for a migration towards a major version of Java (8:9), false otherwise
+         * @param eolDate the EOL/expiration date
+         */
+        void askUpdateJava(String updVersion, String url, String eolDate, boolean major);
     }
 
     /**
      * Checks if the running version of Java has expired, proposes to user to update it if needed.
+     * @param callback Java expiration callback
+     * @since 12270 (signature)
      * @since 12219
      */
-    default void checkExpiredJava() {
+    default void checkExpiredJava(JavaExpirationCallback callback) {
         Date expiration = Utils.getJavaExpirationDate();
         if (expiration != null && expiration.before(new Date())) {
             String version = Utils.getJavaLatestVersion();
-            askUpdateJava(version != null ? version : "latest",
+            callback.askUpdateJava(version != null ? version : "latest",
                     Main.pref.get("java.update.url", "https://www.java.com/download"),
                     DateUtils.getDateFormat(DateFormat.MEDIUM).format(expiration), false);
         }
     }
+
+    /**
+     * Called when interfacing with native OS functions. Currently only used with macOS.
+     * The callback must perform all GUI-related tasks associated to an OS request.
+     * The non-GUI, platform-specific tasks, are usually performed by the {@code PlatformHook}.
+     * @since 12695
+     */
+    interface NativeOsCallback {
+        /**
+         * macOS: Called when JOSM is asked to open a list of files.
+         * @param files list of files to open
+         */
+        void openFiles(List<File> files);
+
+        /**
+         * macOS: Invoked when JOSM is asked to quit.
+         * @return {@code true} if JOSM has been closed, {@code false} if the user has cancelled the operation.
+         */
+        boolean handleQuitRequest();
+
+        /**
+         * macOS: Called when JOSM is asked to show it's about dialog.
+         */
+        void handleAbout();
+
+        /**
+         * macOS: Called when JOSM is asked to show it's preferences UI.
+         */
+        void handlePreferences();
+    }
+
+    /**
+     * Registers the native OS callback. Currently only needed for macOS.
+     * @param callback the native OS callback
+     * @since 12695
+     */
+    default void setNativeOsCallback(NativeOsCallback callback) {
+        // To be implemented if needed
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
index 59b9a4d..42c6d6e 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
@@ -16,13 +16,11 @@ import java.lang.reflect.Proxy;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 import javax.swing.UIManager;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
-import org.openstreetmap.josm.io.OsmTransferException;
-import org.xml.sax.SAXException;
 
 /**
  * {@code PlatformHook} implementation for Apple Mac OS X systems.
@@ -30,10 +28,10 @@ import org.xml.sax.SAXException;
  */
 public class PlatformHookOsx implements PlatformHook, InvocationHandler {
 
-    private static final PlatformHookOsx INVOCATION_HANDLER = new PlatformHookOsx();
-
     private String oSBuildNumber;
 
+    private NativeOsCallback osCallback;
+
     @Override
     public void preStartupHook() {
         // This will merge our MenuBar into the system menu.
@@ -45,7 +43,7 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
     }
 
     @Override
-    public void startupHook() {
+    public void startupHook(JavaExpirationCallback callback) {
         // Here we register callbacks for the menu entries in the system menu and file opening through double-click
         // http://openjdk.java.net/jeps/272
         // https://bugs.openjdk.java.net/browse/JDK-8048731
@@ -58,7 +56,7 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
             Class<?> openFilesHandler = findHandlerClass("OpenFilesHandler");
             Class<?> preferencesHandler = findHandlerClass("PreferencesHandler");
             Object proxy = Proxy.newProxyInstance(PlatformHookOsx.class.getClassLoader(), new Class<?>[] {
-                quitHandler, aboutHandler, openFilesHandler, preferencesHandler}, INVOCATION_HANDLER);
+                quitHandler, aboutHandler, openFilesHandler, preferencesHandler}, this);
             Object appli = eawtApplication.getConstructor((Class[]) null).newInstance((Object[]) null);
             if (Utils.getJavaVersion() >= 9) {
                 setHandlers(Desktop.class, quitHandler, aboutHandler, openFilesHandler, preferencesHandler, proxy, Desktop.getDesktop());
@@ -74,9 +72,9 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
             enableOSXFullscreen((Window) Main.parent);
         } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException ex) {
             // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows.
-            Main.warn("Failed to register with OSX: " + ex);
+            Logging.warn("Failed to register with OSX: " + ex);
         }
-        checkExpiredJava();
+        checkExpiredJava(callback);
     }
 
     /**
@@ -112,7 +110,7 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
             // Java 8 handlers
             return Class.forName("com.apple.eawt."+className);
         } catch (ClassNotFoundException e) {
-            Main.trace(e);
+            Logging.trace(e);
             // Java 9 handlers
             return Class.forName("java.awt.desktop."+className);
         }
@@ -131,15 +129,20 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
             eawtFullScreenUtilities.getDeclaredMethod("setWindowCanFullScreen",
                     Window.class, boolean.class).invoke(eawtFullScreenUtilities, window, Boolean.TRUE);
         } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) {
-            Main.warn("Failed to register with OSX: " + e);
+            Logging.warn("Failed to register with OSX: " + e);
         }
     }
 
+    @Override
+    public void setNativeOsCallback(NativeOsCallback callback) {
+        osCallback = Objects.requireNonNull(callback);
+    }
+
     @SuppressWarnings("unchecked")
     @Override
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-        if (Main.isDebugEnabled()) {
-            Main.debug("OSX handler: "+method.getName()+" - "+Arrays.toString(args));
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("OSX handler: {0} - {1}", method.getName(), Arrays.toString(args));
         }
         switch (method.getName()) {
         case "openFiles":
@@ -147,47 +150,33 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
                 try {
                     Object oFiles = args[0].getClass().getMethod("getFiles").invoke(args[0]);
                     if (oFiles instanceof List) {
-                        Main.worker.submit(new OpenFileTask((List<File>) oFiles, null) {
-                            @Override
-                            protected void realRun() throws SAXException, IOException, OsmTransferException {
-                                // Wait for JOSM startup is advanced enough to load a file
-                                while (Main.parent == null || !Main.parent.isVisible()) {
-                                    try {
-                                        Thread.sleep(25);
-                                    } catch (InterruptedException e) {
-                                        Main.warn(e);
-                                        Thread.currentThread().interrupt();
-                                    }
-                                }
-                                super.realRun();
-                            }
-                        });
+                        osCallback.openFiles((List<File>) oFiles);
                     }
                 } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException ex) {
-                    Main.warn("Failed to access open files event: " + ex);
+                    Logging.warn("Failed to access open files event: " + ex);
                 }
             }
             break;
         case "handleQuitRequestWith":
-            boolean closed = Main.exitJosm(false, 0, null);
+            boolean closed = osCallback.handleQuitRequest();
             if (args[1] != null) {
                 try {
                     args[1].getClass().getDeclaredMethod(closed ? "performQuit" : "cancelQuit").invoke(args[1]);
                 } catch (IllegalAccessException e) {
-                    Main.debug(e);
+                    Logging.debug(e);
                     // with Java 9, module java.desktop does not export com.apple.eawt, use new Desktop API instead
                     Class.forName("java.awt.desktop.QuitResponse").getMethod(closed ? "performQuit" : "cancelQuit").invoke(args[1]);
                 }
             }
             break;
         case "handleAbout":
-            Main.main.menu.about.actionPerformed(null);
+            osCallback.handleAbout();
             break;
         case "handlePreferences":
-            Main.main.menu.preferences.actionPerformed(null);
+            osCallback.handlePreferences();
             break;
         default:
-            Main.warn("OSX unsupported method: "+method.getName());
+            Logging.warn("OSX unsupported method: "+method.getName());
         }
         return null;
     }
@@ -398,7 +387,7 @@ public class PlatformHookOsx implements PlatformHook, InvocationHandler {
               .append(exec("sw_vers", "-buildVersion"))
               .append(')');
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return sb.toString();
     }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
index c369ac5..4c671fa 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
@@ -89,7 +89,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                 }
                 return;
             } catch (IOException | URISyntaxException e) {
-                Main.warn(e);
+                Logging.warn(e);
             }
         }
     }
@@ -124,7 +124,7 @@ public class PlatformHookUnixoid implements PlatformHook {
             return "Debian".equalsIgnoreCase(dist) || "Ubuntu".equalsIgnoreCase(dist) || "Mint".equalsIgnoreCase(dist);
         } catch (IOException e) {
             // lsb_release is not available on all Linux systems, so don't log at warning level
-            Main.debug(e);
+            Logging.debug(e);
             return false;
         }
     }
@@ -163,7 +163,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                 }
             }
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
         return null;
     }
@@ -240,7 +240,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                         return "Linux " + line;
                 }
             } catch (IOException e) {
-                Main.debug(e);
+                Logging.debug(e);
                 // Non LSB-compliant Linux system. List of common fallback release files: http://linuxmafia.com/faq/Admin/release-files.html
                 for (LinuxReleaseInfo info : new LinuxReleaseInfo[]{
                         new LinuxReleaseInfo("/etc/lsb-release", "DISTRIB_DESCRIPTION", "DISTRIB_ID", "DISTRIB_RELEASE"),
@@ -342,7 +342,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                         }
                     } catch (IOException e) {
                         // Ignore
-                        Main.trace(e);
+                        Logging.trace(e);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
index 4068d4a..fd31a22 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
@@ -176,14 +176,14 @@ public class PlatformHookWindows implements PlatformHook {
                     UIManager.put("FileChooser.useSystemExtensionHiding", Boolean.FALSE);
                 }
             } catch (NumberFormatException | ReflectiveOperationException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
     }
 
     @Override
-    public void startupHook() {
-        checkExpiredJava();
+    public void startupHook(JavaExpirationCallback callback) {
+        checkExpiredJava(callback);
     }
 
     @Override
@@ -303,7 +303,7 @@ public class PlatformHookWindows implements PlatformHook {
             }
             sb.append(" (").append(getCurrentBuild()).append(')');
         } catch (ReflectiveOperationException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return sb.toString();
     }
@@ -345,7 +345,7 @@ public class PlatformHookWindows implements PlatformHook {
         try {
             insecurePubKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(INSECURE_PUBLIC_KEY));
         } catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
-            Main.error(e);
+            Logging.error(e);
             return;
         }
         KeyStore ks = getRootKeystore();
@@ -361,8 +361,8 @@ public class PlatformHookWindows implements PlatformHook {
                     insecureCertificates.add(alias);
                 } catch (InvalidKeyException | NoSuchProviderException | SignatureException e) {
                     // If exception this is not a certificate related to JOSM, just trace it
-                    Main.trace(alias + " --> " + e.getClass().getName());
-                    Main.trace(e);
+                    Logging.trace(alias + " --> " + e.getClass().getName());
+                    Logging.trace(e);
                 }
             }
         }
@@ -384,11 +384,11 @@ public class PlatformHookWindows implements PlatformHook {
                    .append("</html>");
             JOptionPane.showMessageDialog(Main.parent, message.toString(), tr("Warning"), JOptionPane.WARNING_MESSAGE);
             for (String alias : insecureCertificates) {
-                Main.warn(tr("Removing insecure certificate from {0} keystore: {1}", WINDOWS_ROOT, alias));
+                Logging.warn(tr("Removing insecure certificate from {0} keystore: {1}", WINDOWS_ROOT, alias));
                 try {
                     ks.deleteEntry(alias);
                 } catch (KeyStoreException e) {
-                    Main.error(e, tr("Unable to remove insecure certificate from keystore: {0}", e.getMessage()));
+                    Logging.log(Logging.LEVEL_ERROR, tr("Unable to remove insecure certificate from keystore: {0}", e.getMessage()), e);
                 }
             }
         }
@@ -403,12 +403,12 @@ public class PlatformHookWindows implements PlatformHook {
             String alias = ks.getCertificateAlias(trustedCert.getTrustedCertificate());
             if (alias != null) {
                 // JOSM certificate found, return
-                Main.debug(tr("JOSM localhost certificate found in {0} keystore: {1}", WINDOWS_ROOT, alias));
+                Logging.debug(tr("JOSM localhost certificate found in {0} keystore: {1}", WINDOWS_ROOT, alias));
                 return false;
             }
         } catch (ArrayIndexOutOfBoundsException e) {
             // catch error of JDK-8172244 as bug seems to not be fixed anytime soon
-            Main.error(e, "JDK-8172244 occured. Abort HTTPS setup");
+            Logging.log(Logging.LEVEL_ERROR, "JDK-8172244 occured. Abort HTTPS setup", e);
             return false;
         }
         if (!GraphicsEnvironment.isHeadless()) {
@@ -424,7 +424,7 @@ public class PlatformHookWindows implements PlatformHook {
                     tr("HTTPS support in Remote Control"), JOptionPane.INFORMATION_MESSAGE);
         }
         // install it to Windows-ROOT keystore, used by IE, Chrome and Safari, but not by Firefox
-        Main.info(tr("Adding JOSM localhost certificate to {0} keystore", WINDOWS_ROOT));
+        Logging.info(tr("Adding JOSM localhost certificate to {0} keystore", WINDOWS_ROOT));
         ks.setEntry(entryAlias, trustedCert, null);
         return true;
     }
@@ -507,7 +507,7 @@ public class PlatformHookWindows implements PlatformHook {
         String javaLibPath = System.getProperty("java.home") + File.separator + "lib";
         Path templateFile = FileSystems.getDefault().getPath(javaLibPath, templateFileName);
         if (!Files.isReadable(templateFile)) {
-            Main.warn("extended font config - unable to find font config template file {0}", templateFile.toString());
+            Logging.warn("extended font config - unable to find font config template file {0}", templateFile.toString());
             return;
         }
         try (FileInputStream fis = new FileInputStream(templateFile.toFile())) {
@@ -531,11 +531,11 @@ public class PlatformHookWindows implements PlatformHook {
                             allCharSubsets.add(entry.charset);
                             extras.add(entry);
                         } else {
-                            Main.trace("extended font config - already registered font for charset ''{0}'' - skipping ''{1}''",
+                            Logging.trace("extended font config - already registered font for charset ''{0}'' - skipping ''{1}''",
                                     entry.charset, entry.name);
                         }
                     } else {
-                        Main.trace("extended font config - Font ''{0}'' not found on system - skipping", entry.name);
+                        Logging.trace("extended font config - Font ''{0}'' not found on system - skipping", entry.name);
                     }
                 }
                 for (FontEntry entry: extras) {
@@ -547,7 +547,7 @@ public class PlatformHookWindows implements PlatformHook {
                     String value = entry.name;
                     String prevValue = props.getProperty(key);
                     if (prevValue != null && !prevValue.equals(value)) {
-                        Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
+                        Logging.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
                     w.append(key + '=' + value + '\n');
                 }
@@ -560,7 +560,7 @@ public class PlatformHookWindows implements PlatformHook {
                     String value = entry.file;
                     String prevValue = props.getProperty(key);
                     if (prevValue != null && !prevValue.equals(value)) {
-                        Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
+                        Logging.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
                     w.append(key + '=' + value + '\n');
                 }
@@ -574,7 +574,7 @@ public class PlatformHookWindows implements PlatformHook {
             }
             Utils.updateSystemProperty("sun.awt.fontconfig", fontconfigFile.toString());
         } catch (IOException ex) {
-            Main.error(ex);
+            Logging.error(ex);
         }
     }
 
@@ -602,8 +602,8 @@ public class PlatformHookWindows implements PlatformHook {
             }
             fontsAvail.add(""); // for devanagari
         } catch (IOException ex) {
-            Main.error(ex, false);
-            Main.warn("extended font config - failed to load available Fonts");
+            Logging.log(Logging.LEVEL_ERROR, ex);
+            Logging.warn("extended font config - failed to load available Fonts");
             fontsAvail = null;
         }
         return fontsAvail;
diff --git a/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java b/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
index 7d794e9..2aee5a8 100644
--- a/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
+++ b/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
@@ -20,7 +20,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JoinAreasAction;
 import org.openstreetmap.josm.actions.JoinAreasAction.JoinAreasResult;
 import org.openstreetmap.josm.actions.JoinAreasAction.Multipolygon;
-import org.openstreetmap.josm.actions.PurgeAction;
+import org.openstreetmap.josm.command.PurgeCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -103,7 +103,7 @@ public final class RightAndLefthandTraffic {
             w.removeAll();
         }
         // Purge all other ways and relations so dataset only contains lefthand traffic data
-        new PurgeAction(false).getPurgeCommand(toPurge).executeCommand();
+        PurgeCommand.build(null, toPurge, null).executeCommand();
         // Combine adjacent countries into a single polygon
         Collection<Way> optimizedWays = new ArrayList<>();
         List<Multipolygon> areas = JoinAreasAction.collectMultipolygons(ways);
@@ -116,15 +116,15 @@ public final class RightAndLefthandTraffic {
                     }
                 }
             } catch (UserCancelException ex) {
-                Main.warn(ex);
+                Logging.warn(ex);
             } catch (JosmRuntimeException ex) {
                 // Workaround to #10511 / #14185. To remove when #10511 is solved
-                Main.error(ex);
+                Logging.error(ex);
             }
         }
         if (optimizedWays.isEmpty()) {
             // Problem: don't optimize
-            Main.warn("Unable to join left-driving countries polygons");
+            Logging.warn("Unable to join left-driving countries polygons");
             optimizedWays.addAll(ways);
         }
         return optimizedWays;
@@ -141,8 +141,8 @@ public final class RightAndLefthandTraffic {
         for (Relation r : OsmPrimitive.getParentRelations(s)) {
             if (r.isMultipolygon() && LEFT.equals(r.get(DRIVING_SIDE)) &&
                 "inner".equals(r.getMembersFor(s).iterator().next().getRole())) {
-                if (Main.isDebugEnabled()) {
-                    Main.debug("Skipping " + w.get("name:en") + " because inner part of " + r.get("name:en"));
+                if (Logging.isDebugEnabled()) {
+                    Logging.debug("Skipping {0} because inner part of {1}", w.get("name:en"), r.get("name:en"));
                 }
                 return;
             }
@@ -168,7 +168,7 @@ public final class RightAndLefthandTraffic {
         try (InputStream is = new FileInputStream(new File(Main.pref.getCacheDirectory(), "left-right-hand-traffic.osm"))) {
            return OsmReader.parseDataSet(is, null).getWays();
         } catch (IllegalDataException | IOException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
             return Collections.emptyList();
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/Shortcut.java b/src/org/openstreetmap/josm/tools/Shortcut.java
index fda3c3a..58486f3 100644
--- a/src/org/openstreetmap/josm/tools/Shortcut.java
+++ b/src/org/openstreetmap/josm/tools/Shortcut.java
@@ -285,9 +285,9 @@ public final class Shortcut {
         @Override
         public boolean add(Shortcut shortcut) {
             // expensive consistency check only in debug mode
-            if (Main.isDebugEnabled()
+            if (Logging.isDebugEnabled()
                     && stream().map(Shortcut::getShortText).anyMatch(shortcut.getShortText()::equals)) {
-                Main.warn(new AssertionError(shortcut.getShortText() + " already added"));
+                Logging.warn(new AssertionError(shortcut.getShortText() + " already added"));
             }
             return super.add(shortcut);
         }
@@ -429,7 +429,7 @@ public final class Shortcut {
             return existing.get();
         } else if (existing.isPresent()) {
             // this always is a logic error in the hook
-            Main.error("CONFLICT WITH SYSTEM KEY " + shortText + ": " + existing.get());
+            Logging.error("CONFLICT WITH SYSTEM KEY " + shortText + ": " + existing.get());
             return null;
         }
         final Shortcut shortcut = new Shortcut(shortText, longText, key, RESERVED, key, modifier, true, false);
@@ -474,7 +474,7 @@ public final class Shortcut {
                 // Try to reassign Meta to Ctrl
                 int newmodifier = findNewOsxModifier(requestedGroup);
                 if (!findShortcut(requestedKey, newmodifier).isPresent()) {
-                    Main.info("Reassigning OSX shortcut '" + shortText + "' from Meta to Ctrl because of conflict with " + conflict);
+                    Logging.info("Reassigning OSX shortcut '" + shortText + "' from Meta to Ctrl because of conflict with " + conflict);
                     return reassignShortcut(shortText, longText, requestedKey, conflict, requestedGroup, requestedKey, newmodifier);
                 }
             }
@@ -482,7 +482,7 @@ public final class Shortcut {
                 for (int k : keys) {
                     int newmodifier = getGroupModifier(m);
                     if (!findShortcut(k, newmodifier).isPresent()) {
-                        Main.info("Reassigning shortcut '" + shortText + "' from " + modifier + " to " + newmodifier +
+                        Logging.info("Reassigning shortcut '" + shortText + "' from " + modifier + " to " + newmodifier +
                                 " because of conflict with " + conflict);
                         return reassignShortcut(shortText, longText, requestedKey, conflict, m, k, newmodifier);
                     }
@@ -511,7 +511,7 @@ public final class Shortcut {
     private static Shortcut reassignShortcut(String shortText, String longText, int requestedKey, Shortcut conflict,
             int m, int k, int newmodifier) {
         Shortcut newsc = new Shortcut(shortText, longText, requestedKey, m, k, newmodifier, false, false);
-        Main.info(tr("Silent shortcut conflict: ''{0}'' moved by ''{1}'' to ''{2}''.",
+        Logging.info(tr("Silent shortcut conflict: ''{0}'' moved by ''{1}'' to ''{2}''.",
             shortText, conflict.getShortText(), newsc.getKeyText()));
         newsc.saveDefault();
         shortcuts.add(newsc);
diff --git a/src/org/openstreetmap/josm/tools/Territories.java b/src/org/openstreetmap/josm/tools/Territories.java
index 40b81e7..80f36a5 100644
--- a/src/org/openstreetmap/josm/tools/Territories.java
+++ b/src/org/openstreetmap/josm/tools/Territories.java
@@ -12,7 +12,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -61,7 +60,7 @@ public final class Territories {
     public static synchronized boolean isIso3166Code(String code, LatLon ll) {
         GeoPropertyIndex<Boolean> gpi = iso3166Cache.get(code);
         if (gpi == null) {
-            Main.warn(tr("Unknown territory id: {0}", code));
+            Logging.warn(tr("Unknown territory id: {0}", code));
             return false;
         }
         return gpi.get(ll);
diff --git a/src/org/openstreetmap/josm/tools/TextTagParser.java b/src/org/openstreetmap/josm/tools/TextTagParser.java
index 18fdbf3..0dccfc2 100644
--- a/src/org/openstreetmap/josm/tools/TextTagParser.java
+++ b/src/org/openstreetmap/josm/tools/TextTagParser.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.tools;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
-import java.awt.GridBagLayout;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -12,17 +11,7 @@ import java.util.Map.Entry;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
-import org.openstreetmap.josm.gui.help.HelpUtil;
-import org.openstreetmap.josm.gui.widgets.UrlLabel;
-import org.openstreetmap.josm.io.XmlWriter;
-import org.openstreetmap.josm.tools.LanguageInfo.LocaleType;
 
 /**
  * Class that helps to parse tags from arbitrary text
@@ -210,11 +199,13 @@ public final class TextTagParser {
     /**
      * Gets a list of tags that are in the given text
      * @param buf The text to parse
+     * @param callback warning callback
      * @return The tags or <code>null</code> if the tags are not valid
+     * @since 12683
      */
-    public static Map<String, String> getValidatedTagsFromText(String buf) {
+    public static Map<String, String> getValidatedTagsFromText(String buf, TagWarningCallback callback) {
         Map<String, String> tags = readTagsFromText(buf);
-        return validateTags(tags) ? tags : null;
+        return validateTags(tags, callback) ? tags : null;
     }
 
     /**
@@ -257,14 +248,16 @@ public final class TextTagParser {
     /**
      * Check tags for correctness and display warnings if needed
      * @param tags - map key->value to check
+     * @param callback warning callback
      * @return true if the tags should be pasted
+     * @since 12683
      */
-    public static boolean validateTags(Map<String, String> tags) {
+    public static boolean validateTags(Map<String, String> tags, TagWarningCallback callback) {
         int r;
         int s = tags.size();
         if (s > MAX_KEY_COUNT) {
             // Use trn() even if for english it makes no sense, as s > 30
-            r = warning(trn("There was {0} tag found in the buffer, it is suspicious!",
+            r = callback.warning(trn("There was {0} tag found in the buffer, it is suspicious!",
             "There were {0} tags found in the buffer, it is suspicious!", s,
             s), "", "tags.paste.toomanytags");
             if (r == 2 || r == 3) return false; if (r == 4) return true;
@@ -273,69 +266,34 @@ public final class TextTagParser {
             String key = entry.getKey();
             String value = entry.getValue();
             if (key.length() > MAX_KEY_LENGTH) {
-                r = warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+'='+value, "tags.paste.keytoolong");
+                r = callback.warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+'='+value, "tags.paste.keytoolong");
                 if (r == 2 || r == 3) return false; if (r == 4) return true;
             }
             if (!key.matches(KEY_PATTERN)) {
-                r = warning(tr("Suspicious characters in key:"), key, "tags.paste.keydoesnotmatch");
+                r = callback.warning(tr("Suspicious characters in key:"), key, "tags.paste.keydoesnotmatch");
                 if (r == 2 || r == 3) return false; if (r == 4) return true;
             }
             if (value.length() > MAX_VALUE_LENGTH) {
-                r = warning(tr("Value is too long (max {0} characters):", MAX_VALUE_LENGTH), value, "tags.paste.valuetoolong");
+                r = callback.warning(tr("Value is too long (max {0} characters):", MAX_VALUE_LENGTH), value, "tags.paste.valuetoolong");
                 if (r == 2 || r == 3) return false; if (r == 4) return true;
             }
         }
         return true;
     }
 
-    private static int warning(String text, String data, String code) {
-        ExtendedDialog ed = new ExtendedDialog(
-                    Main.parent,
-                    tr("Do you want to paste these tags?"),
-                    tr("Ok"), tr("Cancel"), tr("Clear buffer"), tr("Ignore warnings"));
-        ed.setButtonIcons("ok", "cancel", "dialogs/delete", "pastetags");
-        ed.setContent("<html><b>"+text + "</b><br/><br/><div width=\"300px\">"+XmlWriter.encode(data, true)+"</html>");
-        ed.setDefaultButton(2);
-        ed.setCancelButton(2);
-        ed.setIcon(JOptionPane.WARNING_MESSAGE);
-        ed.toggleEnable(code);
-        ed.showDialog();
-        int r = ed.getValue();
-        if (r == 0) r = 2;
-        // clean clipboard if user asked
-        if (r == 3) ClipboardUtils.copyString("");
-        return r;
-    }
-
     /**
-     * Shows message that the buffer can not be pasted, allowing user to clean the buffer
-     * @param helpTopic the help topic of the parent action
-     * TODO: Replace by proper HelpAwareOptionPane instead of self-made help link
+     * Called when a problematic tag is encountered.
+     * @since 12683
      */
-    public static void showBadBufferMessage(String helpTopic) {
-        String msg = tr("<html><p> Sorry, it is impossible to paste tags from buffer. It does not contain any JOSM object"
-            + " or suitable text. </p></html>");
-        JPanel p = new JPanel(new GridBagLayout());
-        p.add(new JLabel(msg), GBC.eop());
-        String helpUrl = HelpUtil.getHelpTopicUrl(HelpUtil.buildAbsoluteHelpTopic(helpTopic, LocaleType.DEFAULT));
-        if (helpUrl != null) {
-            p.add(new UrlLabel(helpUrl), GBC.eop());
-        }
-
-        ExtendedDialog ed = new ExtendedDialog(
-                    Main.parent,
-                    tr("Warning"),
-                    tr("Ok"), tr("Clear buffer"))
-            .setButtonIcons("ok", "dialogs/delete")
-            .setContent(p)
-            .setDefaultButton(1)
-            .setCancelButton(1)
-            .setIcon(JOptionPane.WARNING_MESSAGE)
-            .toggleEnable("tags.paste.cleanbadbuffer");
-
-        ed.showDialog();
-
-        // clean clipboard if user asked
-        if (ed.getValue() == 2) ClipboardUtils.copyString("");
+    @FunctionalInterface
+    public interface TagWarningCallback {
+        /**
+         * Displays a warning about a problematic tag and ask user what to do about it.
+         * @param text Message to display
+         * @param data Tag key and/or value
+         * @param code to use with {@code ExtendedDialog#toggleEnable(String)}
+         * @return 1 to validate and display next warnings if any, 2 to cancel operation, 3 to clear buffer, 4 to paste tags
+         */
+        int warning(String text, String data, String code);
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/Utils.java b/src/org/openstreetmap/josm/tools/Utils.java
index dec66b9..2aacc56 100644
--- a/src/org/openstreetmap/josm/tools/Utils.java
+++ b/src/org/openstreetmap/josm/tools/Utils.java
@@ -50,10 +50,12 @@ import java.util.concurrent.ForkJoinWorkerThread;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -402,7 +404,7 @@ public final class Utils {
         CheckParameterUtil.ensureParameterNotNull(in, "in");
         CheckParameterUtil.ensureParameterNotNull(out, "out");
         if (!out.exists() && !out.mkdirs()) {
-            Main.warn("Unable to create directory "+out.getPath());
+            Logging.warn("Unable to create directory "+out.getPath());
         }
         File[] files = in.listFiles();
         if (files != null) {
@@ -474,7 +476,7 @@ public final class Utils {
     public static boolean deleteFile(File file, String warnMsg) {
         boolean result = file.delete();
         if (!result) {
-            Main.warn(tr(warnMsg, file.getPath()));
+            Logging.warn(tr(warnMsg, file.getPath()));
         }
         return result;
     }
@@ -500,7 +502,7 @@ public final class Utils {
     public static boolean mkDirs(File dir, String warnMsg) {
         boolean result = dir.mkdirs();
         if (!result) {
-            Main.warn(tr(warnMsg, dir.getPath()));
+            Logging.warn(tr(warnMsg, dir.getPath()));
         }
         return result;
     }
@@ -515,7 +517,7 @@ public final class Utils {
         try {
             c.close();
         } catch (IOException e) {
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
 
@@ -539,7 +541,7 @@ public final class Utils {
             try {
                 return f.toURI().toURL();
             } catch (MalformedURLException ex) {
-                Main.error("Unable to convert filename " + f.getAbsolutePath() + " to URL");
+                Logging.error("Unable to convert filename " + f.getAbsolutePath() + " to URL");
             }
         }
         return null;
@@ -673,7 +675,7 @@ public final class Utils {
             public Iterator<B> iterator() {
                 return new Iterator<B>() {
 
-                    private Iterator<? extends A> it = c.iterator();
+                    private final Iterator<? extends A> it = c.iterator();
 
                     @Override
                     public boolean hasNext() {
@@ -760,8 +762,8 @@ public final class Utils {
         ZipInputStream zis = new ZipInputStream(in, StandardCharsets.UTF_8);
         // Positions the stream at the beginning of first entry
         ZipEntry ze = zis.getNextEntry();
-        if (ze != null && Main.isDebugEnabled()) {
-            Main.debug("Zip entry: "+ze.getName());
+        if (ze != null && Logging.isDebugEnabled()) {
+            Logging.debug("Zip entry: {0}", ze.getName());
         }
         return zis;
     }
@@ -875,8 +877,8 @@ public final class Utils {
      * @throws IOException when there was an error, e.g. command does not exist
      */
     public static String execOutput(List<String> command) throws IOException {
-        if (Main.isDebugEnabled()) {
-            Main.debug(join(" ", command));
+        if (Logging.isDebugEnabled()) {
+            Logging.debug(join(" ", command));
         }
         Process p = new ProcessBuilder(command).start();
         try (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
@@ -906,7 +908,7 @@ public final class Utils {
         }
         File josmTmpDir = new File(tmpDir, "JOSM");
         if (!josmTmpDir.exists() && !josmTmpDir.mkdirs()) {
-            Main.warn("Unable to create temp directory " + josmTmpDir);
+            Logging.warn("Unable to create temp directory " + josmTmpDir);
         }
         return josmTmpDir;
     }
@@ -1213,7 +1215,7 @@ public final class Utils {
                 new URL(url);
                 return true;
             } catch (MalformedURLException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
         return false;
@@ -1276,11 +1278,11 @@ public final class Utils {
     public static String updateSystemProperty(String key, String value) {
         if (value != null) {
             String old = System.setProperty(key, value);
-            if (Main.isDebugEnabled()) {
+            if (Logging.isDebugEnabled() && !value.equals(old)) {
                 if (!key.toLowerCase(Locale.ENGLISH).contains("password")) {
-                    Main.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + '\'');
+                    Logging.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + '\'');
                 } else {
-                    Main.debug("System property '" + key + "' changed.");
+                    Logging.debug("System property '" + key + "' changed.");
                 }
             }
             return old;
@@ -1315,12 +1317,10 @@ public final class Utils {
      */
     public static Document parseSafeDOM(InputStream is) throws ParserConfigurationException, IOException, SAXException {
         long start = System.currentTimeMillis();
-        if (Main.isDebugEnabled()) {
-            Main.debug("Starting DOM parsing of " + is);
-        }
+        Logging.debug("Starting DOM parsing of {0}", is);
         Document result = newSafeDOMBuilder().parse(is);
-        if (Main.isDebugEnabled()) {
-            Main.debug("DOM parsing done in " + getDurationString(System.currentTimeMillis() - start));
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("DOM parsing done in {0}", getDurationString(System.currentTimeMillis() - start));
         }
         return result;
     }
@@ -1352,12 +1352,10 @@ public final class Utils {
      */
     public static void parseSafeSAX(InputSource is, DefaultHandler dh) throws ParserConfigurationException, SAXException, IOException {
         long start = System.currentTimeMillis();
-        if (Main.isDebugEnabled()) {
-            Main.debug("Starting SAX parsing of " + is + " using " + dh);
-        }
+        Logging.debug("Starting SAX parsing of {0} using {1}", is, dh);
         newSafeSAXParser().parse(is, dh);
-        if (Main.isDebugEnabled()) {
-            Main.debug("SAX parsing done in " + getDurationString(System.currentTimeMillis() - start));
+        if (Logging.isDebugEnabled()) {
+            Logging.debug("SAX parsing done in {0}", getDurationString(System.currentTimeMillis() - start));
         }
     }
 
@@ -1633,6 +1631,9 @@ public final class Utils {
         }
         int firstDotPos = version.indexOf('.');
         int lastDotPos = version.lastIndexOf('.');
+        if (firstDotPos == lastDotPos) {
+            return 0;
+        }
         return firstDotPos > - 1 ? Integer.parseInt(version.substring(firstDotPos + 1,
                 lastDotPos > -1 ? lastDotPos : version.length())) : 0;
     }
@@ -1646,7 +1647,12 @@ public final class Utils {
         String version = System.getProperty("java.runtime.version");
         int bPos = version.indexOf('b');
         int pPos = version.indexOf('+');
-        return Integer.parseInt(version.substring(bPos > -1 ? bPos + 1 : pPos + 1, version.length()));
+        try {
+            return Integer.parseInt(version.substring(bPos > -1 ? bPos + 1 : pPos + 1, version.length()));
+        } catch (NumberFormatException e) {
+            Logging.trace(e);
+            return 0;
+        }
     }
 
     /**
@@ -1662,14 +1668,14 @@ public final class Utils {
                 value = c.getDeclaredField("JRE_EXPIRATION_DATE").get(null);
             } catch (NoSuchFieldException e) {
                 // Field is gone with Java 9, there's a method instead
-                Main.trace(e);
+                Logging.trace(e);
                 value = c.getDeclaredMethod("getProperty", String.class).invoke(null, "JRE_EXPIRATION_DATE");
             }
             if (value instanceof String) {
                 return DateFormat.getDateInstance(3, Locale.US).parse((String) value);
             }
         } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException | ParseException e) {
-            Main.debug(e);
+            Logging.debug(e);
         }
         return null;
     }
@@ -1685,8 +1691,43 @@ public final class Utils {
                     new URL(Main.pref.get("java.baseline.version.url", "http://javadl-esd-secure.oracle.com/update/baseline.version")))
                     .connect().fetchContent().split("\n")[0];
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return null;
     }
+
+    /**
+     * Get a function that converts an object to a singleton stream of a certain
+     * class (or null if the object cannot be cast to that class).
+     *
+     * Can be useful in relation with streams, but be aware of the performance
+     * implications of creating a stream for each element.
+     * @param <T> type of the objects to convert
+     * @param <U> type of the elements in the resulting stream
+     * @param klass the class U
+     * @return function converting an object to a singleton stream or null
+     * @since 12594
+     */
+    public static <T, U> Function<T, Stream<U>> castToStream(Class<U> klass) {
+        return x -> klass.isInstance(x) ? Stream.of(klass.cast(x)) : null;
+    }
+
+    /**
+     * Helper method to replace the "<code>instanceof</code>-check and cast" pattern.
+     * Checks if an object is instance of class T and performs an action if that
+     * is the case.
+     * Syntactic sugar to avoid typing the class name two times, when one time
+     * would suffice.
+     * @param <T> the type for the instanceof check and cast
+     * @param o the object to check and cast
+     * @param klass the class T
+     * @param consumer action to take when o is and instance of T
+     * @since 12604
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> void instanceOfThen(Object o, Class<T> klass, Consumer<? super T> consumer) {
+        if (klass.isInstance(o)) {
+            consumer.accept((T) o);
+        }
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/XmlObjectParser.java b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
index 39a4652..76c3972 100644
--- a/src/org/openstreetmap/josm/tools/XmlObjectParser.java
+++ b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
@@ -24,7 +24,6 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import javax.xml.validation.ValidatorHandler;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.io.CachedFile;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -159,7 +158,7 @@ public class XmlObjectParser implements Iterable<Object> {
                     }
                 }
             } catch (ReflectiveOperationException | IllegalArgumentException e) {
-                Main.error(e); // SAXException does not dump inner exceptions.
+                Logging.error(e); // SAXException does not dump inner exceptions.
                 throwException(e);
             }
         }
@@ -205,7 +204,7 @@ public class XmlObjectParser implements Iterable<Object> {
                     fields.put(s, f);
                     return f;
                 } catch (NoSuchFieldException ex) {
-                    Main.trace(ex);
+                    Logging.trace(ex);
                     fields.put(s, null);
                     return null;
                 }
@@ -253,7 +252,7 @@ public class XmlObjectParser implements Iterable<Object> {
                 reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
             } catch (SAXException e) {
                 // Exception very unlikely to happen, so no need to translate this
-                Main.error(e, "Cannot disable 'load-external-dtd' feature:");
+                Logging.log(Logging.LEVEL_ERROR, "Cannot disable 'load-external-dtd' feature:", e);
             }
             reader.parse(new InputSource(in));
             queueIterator = queue.iterator();
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
index 599211c..1b8f6a4 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
@@ -52,7 +52,7 @@ public final class BugReport implements Serializable {
      * Create a new bug report
      * @param e The {@link ReportedException} to use. No more data should be added after creating the report.
      */
-    BugReport(ReportedException e) {
+    public BugReport(ReportedException e) {
         this.exception = e;
         includeAllStackTraces = e.mayHaveConcurrentSource();
     }
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java
index ea5ac27..35ecd61 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java
@@ -8,7 +8,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.BiFunction;
 import java.util.function.Predicate;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.bugreport.BugReportDialog;
 import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -55,9 +55,9 @@ public class BugReportQueue {
     public synchronized void submit(ReportedException report) {
         Logging.logWithStackTrace(Logging.LEVEL_ERROR, "Handled by bug report queue", report.getCause());
         if (suppressAllMessages || suppressFor.stream().anyMatch(report::isSame)) {
-            Main.info("User requested to skip error " + report);
+            Logging.info("User requested to skip error " + report);
         } else if (reportsToDisplay.size() > 100 || reportsToDisplay.stream().filter(report::isSame).count() >= 10) {
-            Main.warn("Too many errors. Dropping " + report);
+            Logging.warn("Too many errors. Dropping " + report);
         } else {
             reportsToDisplay.add(report);
             if (displayThread == null) {
@@ -108,7 +108,7 @@ public class BugReportQueue {
 
     private SuppressionMode displayFor(ReportedException e) {
         if (handlers.stream().anyMatch(p -> p.test(e))) {
-            Main.trace("Intercepted by handler.");
+            Logging.trace("Intercepted by handler.");
             return SuppressionMode.NONE;
         }
         return bugReportHandler.apply(e, getDisplayedErrors());
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
index 4035dcf..be2116b 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
@@ -22,11 +22,13 @@ import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.bugreport.DebugTextDisplay;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.HttpClient.Response;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -63,11 +65,11 @@ public class BugReportSender extends Thread {
             // then open a browser to display the pasted text.
             String openBrowserError = OpenBrowser.displayUrl(getJOSMTicketURL() + "?pdata_stored=" + debugTextPasteId);
             if (openBrowserError != null) {
-                Main.warn(openBrowserError);
+                Logging.warn(openBrowserError);
                 failed(openBrowserError);
             }
         } catch (BugReportSenderException e) {
-            Main.warn(e);
+            Logging.warn(e);
             failed(e.getMessage());
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
index e6260fe..be674ea 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
@@ -18,7 +18,7 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Supplier;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.StreamUtils;
 
 /**
@@ -218,7 +218,7 @@ public class ReportedException extends RuntimeException {
                 string = value.toString();
             }
         } catch (RuntimeException t) { // NOPMD
-            Main.warn(t);
+            Logging.warn(t);
             string = "<Error calling toString()>";
         }
         sections.getLast().put(key, string);
diff --git a/src/org/openstreetmap/josm/tools/bugreport/package-info.java b/src/org/openstreetmap/josm/tools/bugreport/package-info.java
index 80b521d..c2044f6 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/package-info.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/package-info.java
@@ -1,6 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 
 /**
- * Provides classes for the bug report system, allowing users to create tickets on issue tracker directly from JOSM.
+ * Provides core classes for the bug report system, allowing to save technical information used later in tickets on issue tracker.
  */
 package org.openstreetmap.josm.tools.bugreport;
diff --git a/src/org/openstreetmap/josm/tools/date/DateUtils.java b/src/org/openstreetmap/josm/tools/date/DateUtils.java
index a196879..728ffc6 100644
--- a/src/org/openstreetmap/josm/tools/date/DateUtils.java
+++ b/src/org/openstreetmap/josm/tools/date/DateUtils.java
@@ -17,9 +17,9 @@ import java.util.concurrent.TimeUnit;
 import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UncheckedParseException;
 
 /**
@@ -50,7 +50,7 @@ public final class DateUtils {
         try {
             fact = DatatypeFactory.newInstance();
         } catch (DatatypeConfigurationException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         XML_DATE = fact;
     }
@@ -83,6 +83,7 @@ public final class DateUtils {
         if (checkLayout(str, "xxxx-xx-xxTxx:xx:xxZ") ||
                 checkLayout(str, "xxxx-xx-xxTxx:xx:xx") ||
                 checkLayout(str, "xxxx:xx:xx xx:xx:xx") ||
+                checkLayout(str, "xxxx-xx-xx xx:xx:xxZ") ||
                 checkLayout(str, "xxxx-xx-xx xx:xx:xx UTC") ||
                 checkLayout(str, "xxxx-xx-xxTxx:xx:xx+xx") ||
                 checkLayout(str, "xxxx-xx-xxTxx:xx:xx-xx") ||
diff --git a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
index 23517e4..8b678b2 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
@@ -8,17 +8,17 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.And;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Child;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Not;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Or;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Parent;
 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.data.osm.search.SearchCompiler.And;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Child;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Not;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Or;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Parent;
 
 /**
  * The context switch offers possibility to use tags of referenced primitive when constructing primitive name.
diff --git a/src/org/openstreetmap/josm/tools/template_engine/ParseError.java b/src/org/openstreetmap/josm/tools/template_engine/ParseError.java
index a01c48a..466b15c 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/ParseError.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/ParseError.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.tools.template_engine;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.Token;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.TokenType;
 
@@ -21,7 +22,7 @@ public class ParseError extends Exception {
         this.unexpectedToken = unexpectedToken;
     }
 
-    public ParseError(int position, org.openstreetmap.josm.actions.search.SearchCompiler.ParseError e) {
+    public ParseError(int position, SearchParseError e) {
         super(tr("Error while parsing search expression on position {0}", position), e);
         unexpectedToken = null;
     }
diff --git a/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java b/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
index 622ad54..e4d28ba 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
@@ -1,7 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools.template_engine;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 
 public class SearchExpressionCondition implements TemplateEntry {
 
diff --git a/src/org/openstreetmap/josm/tools/template_engine/TemplateEngineDataProvider.java b/src/org/openstreetmap/josm/tools/template_engine/TemplateEngineDataProvider.java
index 1fdb2b1..2c3c3cd 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/TemplateEngineDataProvider.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/TemplateEngineDataProvider.java
@@ -3,7 +3,7 @@ package org.openstreetmap.josm.tools.template_engine;
 
 import java.util.Collection;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 
 public interface TemplateEngineDataProvider {
     Collection<String> getTemplateKeys();
diff --git a/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java b/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
index ff73536..22cc365 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
@@ -8,8 +8,9 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.Token;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.TokenType;
 
@@ -101,7 +102,7 @@ public class TemplateParser {
                 try {
                     result.getEntries().add(new SearchExpressionCondition(
                             SearchCompiler.compile(searchText), condition));
-                } catch (SearchCompiler.ParseError e) {
+                } catch (SearchParseError e) {
                     throw new ParseError(searchExpression.getPosition(), e);
                 }
             }
@@ -132,7 +133,7 @@ public class TemplateParser {
             try {
                 Match match = SearchCompiler.compile(searchText);
                 result = new ContextSwitchTemplate(match, template, searchExpression.getPosition());
-            } catch (SearchCompiler.ParseError e) {
+            } catch (SearchParseError e) {
                 throw new ParseError(searchExpression.getPosition(), e);
             }
         }
diff --git a/styles/standard/elemstyles.mapcss b/styles/standard/elemstyles.mapcss
index 713cb1f..b654062 100644
--- a/styles/standard/elemstyles.mapcss
+++ b/styles/standard/elemstyles.mapcss
@@ -299,6 +299,8 @@ way["addr:interpolation"=alphabetic] {
 area[building][!building?!] {
     fill-color: building#cb9999;
 }
+area[building=roof],
+area[building][!building?!][wall?!],
 area[building:part][!building:part?!] {
     fill-color: buildingpart#dcbbbb;
 }
@@ -1899,6 +1901,7 @@ area[shop=travel_agency],
 area[shop=toys],
 area[shop=vacuum_cleaner],
 area[shop=variety_store],
+area[shop=charity],
 area[shop=video],
 area[shop=bookmaker],
 area[shop=lottery],
@@ -2178,6 +2181,10 @@ node[shop=variety_store] {
     icon-image: "presets/shop/variety_store.svg";
     set icon_z17;
 }
+node[shop=charity] {
+    icon-image: "presets/shop/charity.svg";
+    set icon_z17;
+}
 node[shop=video] {
     icon-image: "presets/shop/video.svg";
     set icon_z17;
@@ -2696,6 +2703,7 @@ node[amenity=clinic] {
     icon-image: "presets/health/clinic.svg";
     set icon_z17;
 }
+node[amenity=social_facility][social_facility=nursing_home],
 node[amenity=nursing_home] {
     icon-image: "presets/social_facility/nursing_home.svg";
     set icon_z17;
@@ -4730,11 +4738,16 @@ node.place, way.place, area.place { font-size: 11; }
 /* way text labels */
 /*******************/
 
-way|z17-[highway^=motorway][setting("highway_labels")],
-way|z17-[highway^=trunk][setting("highway_labels")],
-way|z17-[highway^=primary][setting("highway_labels")],
-way|z17-[highway^=secondary][setting("highway_labels")],
-way|z17-[highway^=tertiary][setting("highway_labels")],
+way|z17-[highway=motorway][setting("highway_labels")],
+way|z17-[highway=motorway_link][setting("highway_labels")],
+way|z17-[highway=trunk][setting("highway_labels")],
+way|z17-[highway=trunk_link][setting("highway_labels")],
+way|z17-[highway=primary][setting("highway_labels")],
+way|z17-[highway=primary_link][setting("highway_labels")],
+way|z17-[highway=secondary][setting("highway_labels")],
+way|z17-[highway=secondary_link][setting("highway_labels")],
+way|z17-[highway=tertiary][setting("highway_labels")],
+way|z17-[highway=tertiary_link][setting("highway_labels")],
 way|z17-[highway=unclassified][setting("highway_labels")],
 way|z17-[highway=residential][setting("highway_labels")],
 way|z17-[highway=living_street][setting("highway_labels")],
@@ -4758,19 +4771,24 @@ way|z17-[highway=road][setting("highway_labels")] {
     text-halo-opacity: 1;
     text-halo-radius: 1.5;
 }
-way|z17-[highway^=motorway][setting("highway_labels")] {
+way|z17-[highway=motorway][setting("highway_labels")],
+way|z17-[highway=motorway_link][setting("highway_labels")] {
     text-halo-color: motorway#809bc0;
 }
-way|z17-[highway^=trunk][setting("highway_labels")] {
+way|z17-[highway=trunk][setting("highway_labels")],
+way|z17-[highway=trunk_link][setting("highway_labels")] {
     text-halo-color: trunk#7fc97f;
 }
-way|z17-[highway^=primary][setting("highway_labels")] {
+way|z17-[highway=primary][setting("highway_labels")],
+way|z17-[highway=primary_link][setting("highway_labels")] {
     text-halo-color: primary#fb805f;
 }
-way|z17-[highway^=secondary][setting("highway_labels")] {
+way|z17-[highway=secondary][setting("highway_labels")],
+way|z17-[highway=secondary_link][setting("highway_labels")] {
     text-halo-color: secondary#fdbf6f;
 }
-way|z17-[highway^=tertiary][setting("highway_labels")] {
+way|z17-[highway=tertiary][setting("highway_labels")],
+way|z17-[highway=tertiary_link][setting("highway_labels")] {
     text-halo-color: tertiary#f7f496;
 }
 way|z17-[highway=unclassified][setting("highway_labels")],
diff --git a/test/data/__files/README b/test/data/__files/README
new file mode 100644
index 0000000..630022a
--- /dev/null
+++ b/test/data/__files/README
@@ -0,0 +1 @@
+The __files directory must be named this way in order to use WireMock, until https://github.com/tomakehurst/wiremock/issues/471 is fixed.
diff --git a/test/data/__files/imagery/maps.xml b/test/data/__files/imagery/maps.xml
new file mode 100644
index 0000000..78c104b
--- /dev/null
+++ b/test/data/__files/imagery/maps.xml
@@ -0,0 +1,92 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<imagery xmlns="http://josm.openstreetmap.de/maps-1.0">
+	<entry>
+		<name>Landsat</name>
+		<id>landsat</id>
+		<type>wms</type>
+		<url><![CDATA[http://irs.gis-lab.info/?layers=landsat&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}]]></url>
+		<icon>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUTPmdaXSdnXUmdcyo9AbYLAAAAFklEQVQI12NYtYqBgYEI4v//0FAiCAA8TB/hMzHkwAAAAABJRU5ErkJggg==
+		</icon>
+		<projections>
+			<code>NASA:4326</code>
+			<code>EPSG:32641</code>
+			<code>EPSG:3857</code>
+			<code>EPSG:3785</code>
+			<code>EPSG:32642</code>
+			<code>EPSG:32640</code>
+			<code>EPSG:4326</code>
+			<code>EPSG:900913</code>
+			<code>EPSG:3395</code>
+			<code>EPSG:32639</code>
+			<code>EPSG:32638</code>
+			<code>EPSG:32637</code>
+			<code>EPSG:32636</code>
+			<code>EPSG:32635</code>
+		</projections>
+	</entry>
+	<entry>
+		<name>Bing aerial imagery</name>
+		<id>Bing</id>
+		<type>bing</type>
+		<default>true</default>
+		<url>http://www.bing.com/maps/</url>
+		<max-zoom>22</max-zoom>
+		<permission-ref>http://wiki.openstreetmap.org/wiki/Bing_Maps
+		</permission-ref>
+		<icon>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAALVBMVEUMhIT///8jj4/Z7Ozl8vJUqal/vr6+3t6Tycmo1NQxl5dutbXz+flBn5/M5eX9gIKtAAAAjUlEQVR4XmMgD6gFoQkoC7eiCQgKK6AJiNBEQGkBmoBW5S40LROFZyugCMQICloEIQuoCwoKCicgCbAJCgoKGiEJMCWjCTAwpaAJsBaiCnC1CCILCCslCwoKijQgVKQLCgoKliLcAQbWCqgCFgin6wkKCgqevIDwHO8cQUHxAAYkwFoonMSAArS7GCgAAKZlGg8L4DPrAAAAAElFTkSuQmCC
+		</icon>
+		<no-tile-header name="X-VE-Tile-Info" value="no-tile" />
+		<metadata-header header-name="X-VE-TILEMETA-CaptureDatesRange"
+			metadata-key="Capture Date" />
+	</entry>
+	<entry>
+		<name>Mapbox Satellite</name>
+		<id>Mapbox</id>
+		<default>true</default>
+		<type>tms</type>
+		<attribution-text mandatory="true">Terms & Feedback
+		</attribution-text>
+		<attribution-url>http://www.mapbox.com/about/maps/</attribution-url>
+		<url>https://{switch:a,b,c}.tiles.mapbox.com/v4/openstreetmap.map-inh7ifmo/{zoom}/{x}/{y}.png?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJncjlmd0t3In0.DmZsIeOW-3x-C5eX-wAqTw
+		</url>
+		<max-zoom>19</max-zoom>
+		<icon>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAhFBMVEVHcEz///9CZPtphPtFZ/uMof1KavvO0uJifvtQcPuLn/1ng/ve4euQnv36+vtIaPtXdfvt7vTr7PG2v+jl5/BaePuhrv1devugrOC7wNdxi/uap96uuOXKzeDc3/O9xuqfrfzY2+ilsOLEy+xEZfuQntuwttG+w9mpsM2Zp/x3j/t0jfvA+Y0kAAAAAXRSTlMAQObYZgAAASRJREFUeF6Fk+eSwyAMhC2Be+9Ob9fv/d/viBQgDLnx98cedi2JNQTPhHkqZSrC4CVZjYYo8+SzRAdZunqCHsmznuILUk/3HX79fPmMN7vE7XK2n5yAuTVI8KRm/qYATSd4L7R/rddH0i4VObjGPY9IGxYgfvbchRNTBq2PFQkxzvzCk6r8teFKy+0WcSHHjlbDIEdGtne5pI [...]
+		</icon>
+		<permission-ref>http://wiki.openstreetmap.org/wiki/Vertical_Aerial_Photographs#DigitalGlobe_.2F_MapBox
+		</permission-ref>
+		<no-tile-header name="ETag"
+			value=""067736a547cafe90014b4e59b6510abe"|"ee1f6802b0234046b553cbbc672ac7d9"|"9f5a2f1d7cc131e58befc2052c71c827"" />
+		<no-tile-checksum type="MD5"
+			value="811bb5f56a0e672f674a2a820d340c61" />
+	</entry>
+	<entry>
+		<name>IGN orthophoto AMBA a (WMTS)</name>
+		<id>ign-amba-a</id>
+		<type>wmts</type>
+		<url>
+<![CDATA[
+https://ide.ign.gob.ar/geoservicios/rest/services/sensores_remotos/amba_a/ImageServer/WMTS?
+]]>
+		</url>
+		<permission-ref>http://www.ign.gob.ar/descargas/tyc1.html
+		</permission-ref>
+		<projections>
+			<code>CRS:84</code>
+			<code>EPSG:4326</code>
+			<code>EPSG:3857</code>
+			<code>EPSG:102100</code>
+		</projections>
+		<country-code>AR</country-code>
+		<bounds min-lat="-34.668416" min-lon="-59.251080" max-lat="-34.331591"
+			max-lon="-58.498165" />
+		<attribution-text>
+			Instituto Geográfico Nacional de la República Argentina
+		</attribution-text>
+		<attribution-url>http://www.ign.gob.ar</attribution-url>
+		<icon>
+			http://www.ign.gob.ar/sites/default/files/favicon.png
+		</icon>
+		<min-zoom>1</min-zoom>
+		<max-zoom>20</max-zoom>
+	</entry>
+</imagery>
diff --git a/test/data/__files/imagery/wms-capabilities.xml b/test/data/__files/imagery/wms-capabilities.xml
new file mode 100644
index 0000000..5cbf971
--- /dev/null
+++ b/test/data/__files/imagery/wms-capabilities.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<WMS_Capabilities version="1.3.0"
+  xmlns="http://www.opengis.net/wms"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:esri_wms="http://www.esri.com/wms"
+  xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd http://www.esri.com/wms http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?version=1.3.0%26service=WMS%26request=GetSchemaExtension">
+  <Service>
+    <Name><![CDATA[WMS]]></Name>
+    <Title>WMS</Title>
+    <Abstract><![CDATA[Progressively from scales larger than 1:150,000 higher resolution imagery overlays lower resolution imagery and most recent imagery overlays older imagery within each resolution.
+This service includes external imagery sourced from © AAM 2011,2012; © Jacobs Group Ausimage 2002,2006,2009,2014; © LANDSAT 2014
+Metadata_link http://sdi.nsw.gov.au/catalog/search/resource/details.page?uuid=%7BA9550CB1-5908-4A47-936F-64AE50405DF7%7D]]></Abstract>
+    <KeywordList><Keyword><![CDATA[]]></Keyword></KeywordList>
+    <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?"/>
+    <ContactInformation>
+      <ContactPersonPrimary>
+        <ContactPerson><![CDATA[]]></ContactPerson>
+        <ContactOrganization><![CDATA[Land and Property Information NSW]]></ContactOrganization>
+      </ContactPersonPrimary>
+      <ContactPosition><![CDATA[Manager Spatial Data Services]]></ContactPosition>
+      <ContactAddress>
+        <AddressType><![CDATA[]]></AddressType>
+        <Address><![CDATA[346 Panorama Avenue]]></Address>
+        <City><![CDATA[Bathurst]]></City>
+        <StateOrProvince><![CDATA[NSW]]></StateOrProvince>
+        <PostCode><![CDATA[2795]]></PostCode>
+        <Country><![CDATA[Australia]]></Country>
+      </ContactAddress>
+      <ContactVoiceTelephone><![CDATA[02 63328200]]></ContactVoiceTelephone>
+      <ContactFacsimileTelephone><![CDATA[02 63328296]]></ContactFacsimileTelephone>
+      <ContactElectronicMailAddress><![CDATA[SDS.Services at lpi.nsw.gov.au]]></ContactElectronicMailAddress>
+    </ContactInformation>
+    <Fees><![CDATA[]]></Fees>
+    <AccessConstraints><![CDATA[]]></AccessConstraints>
+    <MaxWidth>4096</MaxWidth>
+    <MaxHeight>4096</MaxHeight>
+  </Service>
+  <Capability>
+    <Request>
+      <GetCapabilities>
+        <Format>application/vnd.ogc.wms_xml</Format>
+        <Format>text/xml</Format>
+        <DCPType>
+          <HTTP><Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?"/></Get></HTTP>
+        </DCPType>
+      </GetCapabilities>
+      <GetMap>
+        <Format>image/bmp</Format>
+        <Format>image/jpeg</Format>
+        <Format>image/tiff</Format>
+        <Format>image/png</Format>
+        <Format>image/png8</Format>
+        <Format>image/png24</Format>
+        <Format>image/png32</Format>
+        <Format>image/gif</Format>
+        <Format>image/svg+xml</Format>
+        <DCPType>
+          <HTTP><Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?"/></Get></HTTP>
+        </DCPType>
+      </GetMap>
+      <GetFeatureInfo>
+        <Format>application/vnd.esri.wms_raw_xml</Format>
+        <Format>application/vnd.esri.wms_featureinfo_xml</Format>
+        <Format>application/vnd.ogc.wms_xml</Format>
+        <Format>application/geojson</Format>
+        <Format>text/xml</Format>
+        <Format>text/html</Format>
+        <Format>text/plain</Format>
+        <DCPType>
+          <HTTP><Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?"/></Get></HTTP>
+        </DCPType>
+      </GetFeatureInfo>
+      <esri_wms:GetStyles>
+        <Format>application/vnd.ogc.sld+xml</Format>
+        <DCPType>
+          <HTTP><Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?"/></Get></HTTP>
+        </DCPType>
+      </esri_wms:GetStyles>
+    </Request>
+    <Exception>
+      <Format>application/vnd.ogc.se_xml</Format>
+      <Format>application/vnd.ogc.se_inimage</Format>
+      <Format>application/vnd.ogc.se_blank</Format>
+      <Format>text/xml</Format>
+      <Format>XML</Format>
+    </Exception>
+    <Layer>
+      <Title><![CDATA[NSW_Imagery]]></Title>
+<CRS>CRS:84</CRS>
+<CRS>EPSG:4326</CRS>
+<CRS>EPSG:3857</CRS>
+ <!-- alias 3857 -->
+<CRS>EPSG:102100</CRS>
+<EX_GeographicBoundingBox><westBoundLongitude>139.236629</westBoundLongitude><eastBoundLongitude>159.289947</eastBoundLongitude><southBoundLatitude>-38.351166</southBoundLatitude><northBoundLatitude>-26.603479</northBoundLatitude></EX_GeographicBoundingBox>
+<BoundingBox CRS="CRS:84" minx="139.236629" miny="-38.351166" maxx="159.289947" maxy="-26.603479"/>
+<BoundingBox CRS="EPSG:4326" minx="-38.351166" miny="139.236629" maxx="-26.603479" maxy="159.289947"/>
+<BoundingBox CRS="EPSG:3857" minx="15499750.634300" miny="-4629153.206800" maxx="17732075.828300" maxy="-3074018.396000"/>
+      <Layer queryable="1">
+        <Name>BestImageryDates</Name>
+        <Title><![CDATA[BestImageryDates]]></Title>
+        <Abstract><![CDATA[]]></Abstract>
+<CRS>CRS:84</CRS>
+<CRS>EPSG:4326</CRS>
+<CRS>EPSG:3857</CRS>
+ <!-- alias 3857 -->
+<CRS>EPSG:102100</CRS>
+<EX_GeographicBoundingBox><westBoundLongitude>139.236629</westBoundLongitude><eastBoundLongitude>159.289947</eastBoundLongitude><southBoundLatitude>-38.351166</southBoundLatitude><northBoundLatitude>-26.603479</northBoundLatitude></EX_GeographicBoundingBox>
+<BoundingBox CRS="CRS:84" minx="139.236629" miny="-38.351166" maxx="159.289947" maxy="-26.603479"/>
+<BoundingBox CRS="EPSG:4326" minx="-38.351166" miny="139.236629" maxx="-26.603479" maxy="159.289947"/>
+<BoundingBox CRS="EPSG:3857" minx="15499750.634300" miny="-4629153.206800" maxx="17732075.828300" maxy="-3074018.396000"/>
+        <Style>
+          <Name>default</Name>
+          <Title>BestImageryDates</Title>
+          <LegendURL width="16" height="16">
+            <Format>image/png</Format>
+            <OnlineResource xlink:href="http://maps.six.nsw.gov.au/arcgis/services/public/NSW_Imagery/MapServer/WmsServer?request=GetLegendGraphic%26version=1.3.0%26format=image/png%26layer=BestImageryDates" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" />
+          </LegendURL>
+        </Style>
+      </Layer>
+    </Layer>
+  </Capability>
+</WMS_Capabilities>
diff --git a/test/data/__files/nominatim/London.xml b/test/data/__files/nominatim/London.xml
new file mode 100644
index 0000000..b455e72
--- /dev/null
+++ b/test/data/__files/nominatim/London.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<searchresults timestamp='Tue, 01 Aug 17 19:44:23 +0000'
+	attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'
+	querystring='London' polygon='false'
+	exclude_place_ids='172886376,4363712,171577264,393695,173598423,173598634,173598624,173495610,433519,361768,434160'
+	more_url='https://nominatim.openstreetmap.org/search.php?q=London&exclude_place_ids=172886376%2C4363712%2C171577264%2C393695%2C173598423%2C173598634%2C173598624%2C173495610%2C433519%2C361768%2C434160&format=xml&accept-language=fr-FR%2Cfr%3Bq%3D0.8%2Cen-US%3Bq%3D0.6%2Cen%3Bq%3D0.4'>
+	<place place_id='172886376' osm_type='relation' osm_id='65606'
+		place_rank='16' boundingbox="51.2867602,51.6918741,-0.5103751,0.3340155"
+		lat='51.5073219' lon='-0.1276474' display_name='Londres, Grand Londres, Angleterre, Royaume-Uni'
+		class='place' type='city' importance='0.8654895765402'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png' />
+	<place place_id='4363712' osm_type='node' osm_id='485248691'
+		place_rank='16' boundingbox="42.828576,43.148576,-81.406643,-81.086643"
+		lat='42.988576' lon='-81.246643' display_name='London, Ontario, Canada'
+		class='place' type='city' importance='0.6515723047601'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png' />
+	<place place_id='171577264' osm_type='relation' osm_id='130591'
+		place_rank='16' boundingbox="37.079759,37.15226,-84.126262,-84.035957"
+		lat='37.1289771' lon='-84.0832646'
+		display_name='London, Laurel County, Kentucky, États-Unis d'Amérique'
+		class='place' type='city' importance='0.50529223844486'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png' />
+	<place place_id='393695' osm_type='node' osm_id='153408665'
+		place_rank='19' boundingbox="43.0277775,43.0677775,-89.0328881,-88.9928881"
+		lat='43.0477775' lon='-89.0128881'
+		display_name='London, Dane County, Wisconsin, États-Unis d'Amérique'
+		class='place' type='hamlet' importance='0.457828369551'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png' />
+	<place place_id='173598423' osm_type='relation' osm_id='182481'
+		place_rank='16' boundingbox="39.85928,39.921786,-83.478923,-83.389997"
+		lat='39.8864493' lon='-83.448253'
+		display_name='London, Madison County, Ohio, États-Unis d'Amérique'
+		class='place' type='city' importance='0.44543898169688'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png' />
+	<place place_id='173598634' osm_type='relation' osm_id='2730965'
+		place_rank='19' boundingbox="36.4734452,36.4884367,-119.4497699,-119.4385395"
+		lat='36.4760619' lon='-119.4431785'
+		display_name='London, Tulare County, Californie, États-Unis d'Amérique'
+		class='place' type='village' importance='0.42045232539126'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png' />
+	<place place_id='173495610' osm_type='relation' osm_id='111457'
+		place_rank='16' boundingbox="35.315577,35.33814,-93.272693,-93.187375"
+		lat='35.328973' lon='-93.2529553'
+		display_name='London, Pope County, Arkansas, États-Unis d'Amérique'
+		class='place' type='city' importance='0.4184484386218'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png' />
+	<place place_id='433519' osm_type='node' osm_id='154301303'
+		place_rank='19' boundingbox="38.1743567,38.2143567,-81.3886944,-81.3486944"
+		lat='38.1943567' lon='-81.3686944'
+		display_name='London, Kanawha County, Virginie-Occidentale, États-Unis d'Amérique'
+		class='place' type='hamlet' importance='0.41707848858916'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png' />
+	<place place_id='361768' osm_type='node' osm_id='151379108'
+		place_rank='19' boundingbox="32.2109892,32.2509892,-94.9643839,-94.9243839"
+		lat='32.2309892' lon='-94.9443839'
+		display_name='London, Rusk County, Texas, États-Unis d'Amérique'
+		class='place' type='hamlet' importance='0.385'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png' />
+	<place place_id='434160' osm_type='node' osm_id='154083583'
+		place_rank='19' boundingbox="40.8903338,40.9303338,-82.6493412,-82.6093412"
+		lat='40.9103338' lon='-82.6293412'
+		display_name='London, Cass Township, Richland County, Ohio, États-Unis d'Amérique'
+		class='place' type='hamlet' importance='0.385'
+		icon='https://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png' />
+</searchresults>
diff --git a/test/data/__files/nominatim/foo-bar-baz-does-not-exist.xml b/test/data/__files/nominatim/foo-bar-baz-does-not-exist.xml
new file mode 100644
index 0000000..9b5fbc1
--- /dev/null
+++ b/test/data/__files/nominatim/foo-bar-baz-does-not-exist.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<searchresults timestamp='Tue, 01 Aug 17 20:32:17 +0000'
+	attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'
+	querystring='foo-bar-baz-does-not-exist' polygon='false'
+	more_url='https://nominatim.openstreetmap.org/search.php?q=foo-bar-baz-does-not-exist&format=xml&accept-language=fr-FR%2Cfr%3Bq%3D0.8%2Cen-US%3Bq%3D0.6%2Cen%3Bq%3D0.4'>
+</searchresults>
diff --git a/test/data/__files/presets/Presets_BicycleJunction-preset.xml b/test/data/__files/presets/Presets_BicycleJunction-preset.xml
new file mode 100644
index 0000000..e557dc2
--- /dev/null
+++ b/test/data/__files/presets/Presets_BicycleJunction-preset.xml
@@ -0,0 +1,120 @@
+<presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0"
+         author="Adiac"
+         description="Bicycle network related waypoints"
+         shortdescription="Bicycle waypoints"
+         version="1.3_2012-11-27">
+	<group name="Bicyclejunction" de.name="Fahrradknotenpunkt">
+		<item name="International (icn): Guidepost" de.name="International (icn): Wegweiser" type="node">
+			<label text="International (icn): Guidepost" de.text="International (icn): Wegweiser" />
+			<key key="tourism" value="information" />
+			<key key="information" value="guidepost" />
+			<key key="network" value="icn" />
+			<key key="bicycle" value="yes" />
+			<key key="icn" value="yes" />
+			<text key="icn_ref" text="Junctionnr." de.text="Knotenpunkt-Nr." />
+			<text key="note" text="Note" de.text="Bemerkung" default="Fahrradknotenpunkt ##" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="International (icn): Map" de.name="International (icn): Karte" type="node">
+			<label text="International (icn): Map" de.text="International (icn): Karte" />
+			<key key="tourism" value="information" />
+			<key key="information" value="map" />
+			<key key="network" value="icn" />
+			<key key="bicycle" value="yes" />
+			<combo key="map_size" text="Mapsize" de.text="Kartengröße" values="site,city,region" default="" delete_if_empty="true" />
+			<combo key="map_type" text="Maptype" de.text="Kartentyp" values="topo,street,scheme" default="" delete_if_empty="true" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="Local (lcn): Guidepost" de.name="Lokal (lcn): Wegweiser" type="node">
+			<label text="Local (lcn): Guidepost" de.text="Lokal (lcn): Wegweiser" />
+			<key key="tourism" value="information" />
+			<key key="information" value="guidepost" />
+			<key key="network" value="lcn" />
+			<key key="bicycle" value="yes" />
+			<key key="lcn" value="yes" />
+			<text key="lcn_ref" text="Junctionnr." de.text="Knotenpunkt-Nr." />
+			<text key="note" text="Note" de.text="Bemerkung" default="Fahrradknotenpunkt ##" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="Local (lcn): Map" de.name="Lokal (lcn): Karte " type="node">
+			<label text="Local (lcn): Map" de.text="Lokal (lcn): Karte" />
+			<key key="tourism" value="information" />
+			<key key="information" value="map" />
+			<key key="network" value="lcn" />
+			<key key="bicycle" value="yes" />
+			<combo key="map_size" text="Mapsize" de.text="Kartengröße" values="site,city,region" default="" delete_if_empty="true" />
+			<combo key="map_type" text="Maptype" de.text="Kartentyp" values="topo,street,scheme" default="" delete_if_empty="true" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="National (ncn): Guidepost" de.name="National (ncn): Wegweiser" type="node">
+			<label text="National (ncn): Guidepost" de.text="National (ncn): Wegweiser" />
+			<key key="tourism" value="information" />
+			<key key="information" value="guidepost" />
+			<key key="network" value="ncn" />
+			<key key="bicycle" value="yes" />
+			<key key="ncn" value="yes" />
+			<text key="ncn_ref" text="Junctionnr." de.text="Knotenpunkt-Nr." />
+			<text key="note" text="Note" de.text="Bemerkung" default="Fahrradknotenpunkt ##" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="National (ncn): Map" de.name="National (ncn): Karte" type="node">
+			<label text="National (ncn): Map" de.text="National (ncn): Karte" />
+			<key key="tourism" value="information" />
+			<key key="information" value="map" />
+			<key key="network" value="ncn" />
+			<key key="bicycle" value="yes" />
+			<combo key="map_size" text="Mapsize" de.text="Kartengröße" values="site,city,region" default="" delete_if_empty="true" />
+			<combo key="map_type" text="Maptype" de.text="Kartentyp" values="topo,street,scheme" default="" delete_if_empty="true" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="Regional (rcn): Guidepost" de.name="Regional (rcn): Wegweiser" type="node">
+			<label text="Regional (rcn): Guidepost" de.text="Regional (rcn): Wegweiser" />
+			<key key="tourism" value="information" />
+			<key key="information" value="guidepost" />
+			<key key="network" value="rcn" />
+			<key key="bicycle" value="yes" />
+			<key key="rcn" value="yes" />
+			<text key="rcn_ref" text="Junctionnr." de.text="Knotenpunkt-Nr." />
+			<text key="note" text="Note" de.text="Bemerkung" default="Fahrradknotenpunkt ##" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+		<item name="Regional (rcn): Map" de.name="Regional (rcn): Karte" type="node">
+			<label text="Regional (rcn): Map" de.text="Regional (rcn): Karte" />
+			<key key="tourism" value="information" />
+			<key key="information" value="map" />
+			<key key="network" value="rcn" />
+			<key key="bicycle" value="yes" />
+			<combo key="map_size" text="Mapsize" de.text="Kartengröße" values="site,city,region" default="" delete_if_empty="true" />
+			<combo key="map_type" text="Maptype" de.text="Kartentyp" values="topo,street,scheme" default="" delete_if_empty="true" />
+			<link href="http://wiki.openstreetmap.org/wiki/Radverkehrsnetz_NRW#Beispiel" />
+		</item>
+	</group>
+        <item name="LF bicycle relation ncn" type="relation"
+            name_template="route(?{'{network} '}?{'{ref} '}?{'{name} '}?{'{from} - {via} - {to} ' | '{from} - {to} ' | '{from} ' | '{to} '}?{'{note} '})"
+            name_template_filter="type=route network=ncn route=bicycle">
+        </item>
+        <item name="Node Network Route relation" type="relation"
+            name_template="route(?{'{network} '}!{parent() type=network(network=rcn|network=rwn|network=rhn)'?{'{ref}' | ''}'}?{'{ref} '}?{'{note} '}?{'{name}'}"
+            name_template_filter="type=route (route=bicycle | route=foot | route = hiking | route = walking | route = horse)">
+        </item>
+        <item name="Node Network Network relation" type="relation"
+            name_template="network(rcn ?{'{addr:country} '}?{'{addr:province} '}?{'{name}'}"
+            name_template_filter="type=network network=rcn">
+        </item>
+        <item name="Node Network node" type="node"
+            name_template="?{'FKp {rcn_ref}'}?{' / WKp {rwn_ref}'}"
+            name_template_filter="type:node rcn_ref rwn_ref">
+        </item>
+        <item name="Node Network node" type="node"
+            name_template="FKp {rcn_ref}"
+            name_template_filter="type:node rcn_ref">
+        </item>
+        <item name="Node Network node" type="node"
+            name_template="WKp {rwn_ref}"
+            name_template_filter="type:node rwn_ref">
+        </item>
+        <item name="Node Network node" type="node"
+            name_template="PKp {rhn_ref}"
+            name_template_filter="type:node rhn_ref">
+        </item>
+</presets>
diff --git a/test/data/__files/samples/data.gpx b/test/data/__files/samples/data.gpx
new file mode 100644
index 0000000..77afa71
--- /dev/null
+++ b/test/data/__files/samples/data.gpx
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx xmlns="http://www.topografix.com/GPX/1/0" xmlns:osm="http://www.openstreetmap.org" version="1.0" creator="JOSM">
+  <trk>
+    <name>105241</name>
+    <extensions>
+      <osm:property key="trkseg" value="&#xA;      &#xA;        146791&#xA;      &#xA;      &#xA;        146797&#xA;      &#xA;    " />
+    </extensions>
+    <trkseg>
+      <trkpt lat="48.08120346069336" lon="11.736961364746094">
+        <name>146791</name>
+      </trkpt>
+      <trkpt lat="48.07872009277344" lon="11.734161376953125">
+        <name>146797</name>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <trk>
+    <name>85964</name>
+    <extensions>
+      <osm:property key="trkseg" value="&#xA;      &#xA;        128286&#xA;      &#xA;      &#xA;        128287&#xA;      &#xA;    " />
+    </extensions>
+    <trkseg>
+      <trkpt lat="48.155582427978516" lon="11.422438621520996">
+        <name>128286</name>
+      </trkpt>
+      <trkpt lat="48.1555061340332" lon="11.422523498535156">
+        <name>128287</name>
+      </trkpt>
+    </trkseg>
+  </trk>
+  <wpt lat="48.17121887207031" lon="11.717523574829102" />
+  <wpt lat="48.17500686645508" lon="11.753143310546875" />
+  <wpt lat="48.176429748535156" lon="11.752127647399902" />
+  <wpt lat="48.1754264831543" lon="11.754337310791016" />
+  <wpt lat="48.174217224121094" lon="11.424162864685059">
+    <name>128957</name>
+  </wpt>
+</gpx>
diff --git a/test/data/__files/samples/data.osm b/test/data/__files/samples/data.osm
new file mode 100644
index 0000000..036587c
--- /dev/null
+++ b/test/data/__files/samples/data.osm
@@ -0,0 +1,70 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='never' generator='JOSM'>
+  <node id='-27' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47771177330651926' lon='-1.214837040993729' />
+  <node id='-13' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4770456414460069' lon='-1.2128480891895201' />
+  <node id='-96' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4764633314455231' lon='-1.2128409733562326' />
+  <node id='-97' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4758285965581824' lon='-1.2099736236471972' />
+  <node id='-26' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4792876662805732' lon='-1.2169820812340761' />
+  <node id='-19' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48036950894773345' lon='-1.2131904879318611' />
+  <node id='-14' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4791657020375284' lon='-1.2102793618913894' />
+  <node id='-12' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4798004366165714' lon='-1.213146711600425' />
+  <node id='-10' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47936268863731496' lon='-1.213146711600425' />
+  <node id='-17' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4813140315130982' lon='-1.2101234506227323' />
+  <node id='-18' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48267104976957914' lon='-1.213034576663203' />
+  <node id='-15' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4822989641455303' lon='-1.2129689121660499' />
+  <node id='-11' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48166422979871726' lon='-1.2101015624570148' />
+  <node id='-32' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4751195493564001' lon='-1.2048370205367955' />
+  <node id='-99' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4745372391933516' lon='-1.2048299047035078' />
+  <node id='-36' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47669544292428195' lon='-1.2069820607771429' />
+  <node id='-24' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4774365971965075' lon='-1.2051356429477' />
+  <node id='-21' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47693318684453173' lon='-1.2051794192791356' />
+  <node id='-22' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4778743452986904' lon='-1.2051356429477' />
+  <node id='-98' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4761131328941895' lon='-1.2069749449438552' />
+  <node id='-29' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4800226751795712' lon='-1.204979731679043' />
+  <node id='-34' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4803728735314377' lon='-1.2049578435133252' />
+  <node id='-30' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4800193105956951' lon='-1.2073244595194834' />
+  <node id='-25' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47850907999728337' lon='-1.207324459519483' />
+  <node id='-23' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4784434177898294' lon='-1.2051794192791356' />
+  <node id='-33' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.479450238235392' lon='-1.2072806831880476' />
+  <node id='-35' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4790124902337393' lon='-1.2072806831880474' />
+  <node id='-37' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48136874999641444' lon='-1.2036554976531113' />
+  <node id='-44' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48171894827922374' lon='-1.2036336094873938' />
+  <node id='-45' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4820910339349863' lon='-1.2036992739845465' />
+  <node id='-38' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4819487658925157' lon='-1.2071028837536724' />
+  <node id='-40' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.482320851535727' lon='-1.2071685482508254' />
+  <node id='-42' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4822551893648863' lon='-1.204979731679043' />
+  <node id='-43' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4807449592606228' lon='-1.2050235080104783' />
+  <node id='-39' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4828461488797523' lon='-1.205089172507632' />
+  <node id='-41' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4815985676215157' lon='-1.20712477191939' />
+  <node id='-51' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4807340155630004' lon='-1.2007881479440765' />
+  <node id='-47' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48136874999640183' lon='-1.1977675810750161' />
+  <node id='-48' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4810842138783876' lon='-1.2007662597783586' />
+  <node id='-46' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48174083567128484' lon='-1.1978332455721696' />
+  <node id='-49' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48101855169561025' lon='-1.1977894692407338' />
+  <node id='-50' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48145629956880753' lon='-1.200831924275512' />
+  <node id='-54' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.47960857628212794' lon='-1.1959762749469767' />
+  <node id='-53' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4797928575014292' lon='-1.1956225408346692' />
+  <node id='-55' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4824972674572115' lon='-1.1959611311835499' />
+  <node id='-52' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4801649432621869' lon='-1.195688205331822' />
+  <node id='-60' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48479412617580425' lon='-1.2101234506227323' />
+  <node id='-65' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48477223879355674' lon='-1.2131002411603569' />
+  <node id='-62' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4841375046778457' lon='-1.2102328914513212' />
+  <node id='-63' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48542886022998155' lon='-1.2129908003317675' />
+  <node id='-57' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48354654527531427' lon='-1.210123450622732' />
+  <node id='-64' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4841812794463481' lon='-1.2129908003317675' />
+  <node id='-56' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48507866213848755' lon='-1.20712477191939' />
+  <node id='-58' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48442204066808775' lon='-1.2072342127479787' />
+  <node id='-67' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48442335747002924' lon='-1.2039721998362745' />
+  <node id='-66' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48407315932651057' lon='-1.1981061714238967' />
+  <node id='-68' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4837886233216322' lon='-1.201104850127239' />
+  <node id='-59' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.4838310812903243' lon='-1.2071247719193896' />
+  <node id='-61' timestamp='2010-01-24T10:28:01Z' visible='true' lat='0.48350277050269397' lon='-1.204979731679043' />
+  <way id='-69' action='modify' timestamp='2010-01-24T10:28:01Z' visible='true'>
+    <nd ref='-65' />
+    <nd ref='-62' />
+    <nd ref='-58' />
+    <nd ref='-39' />
+    <tag k='highway' v='residential' />
+    <tag k='oneway' v='yes' />
+  </way>
+</osm>
diff --git a/test/data/__files/samples/data.osn b/test/data/__files/samples/data.osn
new file mode 100644
index 0000000..10cfcbf
--- /dev/null
+++ b/test/data/__files/samples/data.osn
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<osm-notes>
+<note id="4" lat="36.7232991" lon="68.8641500" created_at="2013-04-24T08:07:02Z" closed_at="2013-04-24T08:08:51Z">
+  <comment action="opened" timestamp="2013-04-24T08:07:02Z" uid="1626" user="FredB">test</comment>
+  <comment action="closed" timestamp="2013-04-24T08:08:51Z" uid="1626" user="FredB"></comment>
+</note>
+<note id="5" lat="51.7609210" lon="-0.0112063" created_at="2013-04-24T08:10:38Z" closed_at="2013-04-24T21:31:47Z">
+  <comment action="opened" timestamp="2013-04-24T08:10:38Z" uid="3980" user="TomH">This building has been demolished and is currently a construction site.</comment>
+  <comment action="closed" timestamp="2013-04-24T21:31:47Z" uid="3980" user="TomH"></comment>
+</note>
+<note id="6" lat="35.5170066" lon="139.6322554" created_at="2013-04-24T08:12:38Z" closed_at="2013-05-10T12:28:11Z">
+  <comment action="opened" timestamp="2013-04-24T08:12:38Z" uid="378532" user="nyampire">Ministopは閉店済み</comment>
+  <comment action="closed" timestamp="2013-05-10T12:28:11Z" uid="10353" user="gorn">name corrected</comment>
+</note>
+<note id="7" lat="50.9381992" lon="1.8605947" created_at="2013-04-24T08:14:28Z" closed_at="2013-04-24T08:14:50Z">
+  <comment action="opened" timestamp="2013-04-24T08:14:28Z">Adresse complète :
+B&B CALAIS Centre St Pierre 	 
+ZAC Curie
+Rue de Lille
+62100 CALAIS
+Tel. 08 92 70 75 18 (0.34€ TTC/mn depuis un poste fixe)
+Fax. 03 21 00 92 71
+Parking, accès handicapé, wifi, ascenseur, caméra</comment>
+  <comment action="closed" timestamp="2013-04-24T08:14:50Z" uid="37548" user="Marcussacapuces91"></comment>
+</note>
+<note id="289379" lat="50.3699789" lon="8.6278027" created_at="2014-12-21T01:30:26Z">
+  <comment action="opened" timestamp="2014-12-21T01:30:26Z">Freizeitheim Uhu</comment>
+</note>
+<note id="289380" lat="48.5979475" lon="-2.1622145" created_at="2014-12-21T01:51:36Z">
+  <comment action="opened" timestamp="2014-12-21T01:51:36Z">parking</comment>
+</note>
+<note id="289381" lat="49.8535075" lon="20.9857535" created_at="2014-12-21T02:14:51Z" closed_at="2014-12-21T02:16:33Z">
+  <comment action="opened" timestamp="2014-12-21T02:14:51Z">to nie ścieżka</comment>
+  <comment action="closed" timestamp="2014-12-21T02:16:33Z" uid="163896" user="Zbigniew_Czernik">zgadza się</comment>
+</note>
+<note id="289382" lat="49.8537980" lon="20.9873736" created_at="2014-12-21T02:15:04Z">
+  <comment action="opened" timestamp="2014-12-21T02:15:04Z">to nie ścieżka</comment>
+</note>
+<note id="289383" lat="49.8525390" lon="20.9827387" created_at="2014-12-21T02:15:23Z" closed_at="2014-12-21T02:18:01Z">
+  <comment action="opened" timestamp="2014-12-21T02:15:23Z">o to za droga i dlaczego brak jej oznaczenia w legendzie?</comment>
+  <comment action="closed" timestamp="2014-12-21T02:18:01Z" uid="163896" user="Zbigniew_Czernik">bo legenda jest stara i nieaktualna. To jest droga lokalna.</comment>
+</note>
+</osm-notes>
diff --git a/test/functional/org/openstreetmap/josm/data/BoundariesTestIT.java b/test/functional/org/openstreetmap/josm/data/BoundariesTestIT.java
index fab2189..f74fe84 100644
--- a/test/functional/org/openstreetmap/josm/data/BoundariesTestIT.java
+++ b/test/functional/org/openstreetmap/josm/data/BoundariesTestIT.java
@@ -11,9 +11,9 @@ import java.util.Locale;
 import java.util.stream.Collectors;
 
 import org.junit.Test;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.io.OsmReader;
 
 /**
diff --git a/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTestFT.java b/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTestFT.java
index 56cb0dc..4c6f0cb 100644
--- a/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTestFT.java
+++ b/test/functional/org/openstreetmap/josm/gui/history/HistoryBrowserTestFT.java
@@ -7,7 +7,6 @@ import javax.swing.JFrame;
 
 import org.junit.BeforeClass;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
@@ -15,6 +14,7 @@ import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerHistoryReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Logging;
 
 public class HistoryBrowserTestFT extends JFrame {
 
@@ -38,7 +38,7 @@ public class HistoryBrowserTestFT extends JFrame {
         try {
             ds = reader.parseHistory(NullProgressMonitor.INSTANCE);
         } catch (OsmTransferException e) {
-            Main.error(e);
+            Logging.error(e);
             return;
         }
         History h = ds.getHistory(new SimplePrimitiveId(id, type));
diff --git a/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java b/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
index 68031b8..ef6539f 100644
--- a/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
+++ b/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
@@ -35,9 +35,9 @@ 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.data.preferences.sources.SourceEntry;
 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;
diff --git a/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java b/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
index acfa4fb..2615b6a 100644
--- a/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
+++ b/test/functional/org/openstreetmap/josm/gui/mappaint/StyleCacheTest.java
@@ -16,12 +16,12 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
-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.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -92,7 +92,7 @@ public class StyleCacheTest {
         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 = new MapView(MainApplication.getLayerManager(), null);
         nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
     }
 
diff --git a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
index d9a48af..a5bd924 100644
--- a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
@@ -36,8 +36,6 @@ 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.io.UploadStrategy;
-import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
index 5cdf045..c27e473 100644
--- a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
@@ -26,10 +26,10 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -38,8 +38,6 @@ 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.data.projection.Projections;
-import org.openstreetmap.josm.gui.io.UploadStrategy;
-import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.tools.Logging;
 
diff --git a/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java b/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java
index a5a670d..973b8ac 100644
--- a/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java
+++ b/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java
@@ -12,9 +12,9 @@ import javax.swing.JPanel;
 import javax.swing.JTextField;
 
 import org.junit.Ignore;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.io.UploadStrategySelectionPanel;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+import org.openstreetmap.josm.tools.Logging;
 
 @Ignore
 public class UploadStrategySelectionPanelTest extends JFrame {
@@ -42,7 +42,7 @@ public class UploadStrategySelectionPanelTest extends JFrame {
                         try {
                             n = Integer.parseInt(tf.getText());
                         } catch (NumberFormatException e) {
-                            Main.error(e);
+                            Logging.error(e);
                             return;
                         }
                         uploadStrategySelectionPanel.setNumUploadedObjects(n);
diff --git a/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java b/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
index dc30228..d6e1fac 100644
--- a/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
+++ b/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
@@ -58,6 +58,9 @@ public class HttpClientTest {
         }
     };
 
+    /**
+     * Setup test.
+     */
     @Before
     public void setUp() {
         progress = TestUtils.newTestProgressMonitor();
@@ -150,21 +153,21 @@ public class HttpClientTest {
 
     @Test
     public void testRelativeRedirects() throws IOException {
-        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/relative-redirect/5")).connect(progress);
+        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/relative-redirect/3")).connect(progress);
         assertThat(response.getResponseCode(), is(200));
         assertThat(response.getContentLength() > 100, is(true));
     }
 
     @Test
     public void testAbsoluteRedirects() throws IOException {
-        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/absolute-redirect/5")).connect(progress);
+        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/absolute-redirect/3")).connect(progress);
         assertThat(response.getResponseCode(), is(200));
         assertThat(response.getContentLength() > 100, is(true));
     }
 
     @Test(expected = IOException.class)
     public void testTooMuchRedirects() throws IOException {
-        HttpClient.create(new URL("https://httpbin.org/redirect/5")).setMaxRedirects(4).connect(progress);
+        HttpClient.create(new URL("https://httpbin.org/redirect/3")).setMaxRedirects(2).connect(progress);
     }
 
     @Test
@@ -239,16 +242,23 @@ public class HttpClientTest {
         assertThat(captured.getLevel(), is(Logging.LEVEL_DEBUG));
     }
 
-
+    /**
+     * Checks that a slow request is well handled if it completes before the timeout.
+     * @throws IOException if any I/O error occurs
+     */
     @Test
     public void testRequestInTime() throws IOException {
-        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/delay/3")).setReadTimeout(3500).connect(progress);
+        final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/delay/1")).setReadTimeout(2000).connect(progress);
         assertThat(response.getResponseCode(), is(200));
     }
 
+    /**
+     * Checks that a slow request results in the expected exception if it exceeds the timeout.
+     * @throws IOException always
+     */
     @Test(expected = IOException.class)
     public void testTakesTooLong() throws IOException {
-        HttpClient.create(new URL("https://httpbin.org/delay/3")).setReadTimeout(2500).connect(progress);
+        HttpClient.create(new URL("https://httpbin.org/delay/1")).setReadTimeout(500).connect(progress);
     }
 
     /**
diff --git a/test/performance/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRendererPerformanceTestParent.java b/test/performance/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRendererPerformanceTestParent.java
index 63b5f74..0fc6398 100644
--- a/test/performance/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRendererPerformanceTestParent.java
+++ b/test/performance/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRendererPerformanceTestParent.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.data.osm.visitor.paint;
 import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
+import java.awt.Point;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -15,7 +16,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.Timeout;
 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.gui.NavigatableComponent;
@@ -54,11 +54,29 @@ public abstract class AbstractMapRendererPerformanceTestParent {
         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.setClip(0, 0, IMG_WIDTH, IMG_HEIGHT);
         g.setColor(Color.BLACK);
-        g.fillRect(0, 0, IMG_WIDTH, IMG_WIDTH);
-        nc = Main.map.mapView;
-        nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
+        g.fillRect(0, 0, IMG_WIDTH, IMG_HEIGHT);
+        nc = new NavigatableComponent() {
+            {
+                setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
+                updateLocationState();
+            }
+
+            @Override
+            protected boolean isVisibleOnScreen() {
+                return true;
+            }
+
+            @Override
+            public Point getLocationOnScreen() {
+                return new Point(0, 0);
+            }
+        };
+
+        // Force reset of preferences
+        StyledMapRenderer.PREFERENCE_ANTIALIASING_USE.put(true);
+        StyledMapRenderer.PREFERENCE_TEXT_ANTIALIASING.put("gasp");
 
         try (
             InputStream fisR = new FileInputStream("data_nodist/restriction.osm");
@@ -83,8 +101,8 @@ public abstract class AbstractMapRendererPerformanceTestParent {
     protected abstract Rendering buildRenderer();
 
     protected final void test(int iterations, DataSet ds, Bounds bounds) throws Exception {
-        Rendering visitor = buildRenderer();
         nc.zoomTo(bounds);
+        Rendering visitor = buildRenderer();
         for (int i = 0; i < iterations; i++) {
             visitor.render(ds, true, bounds);
         }
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java b/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
index 63691c1..16a7cf0 100644
--- a/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
@@ -25,7 +25,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.Timeout;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.PerformanceTestUtils;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Bounds;
@@ -34,16 +33,19 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.visitor.paint.RenderBenchmarkCollector.CapturingBenchmark;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.mappaint.StyleSetting.BooleanStyleSetting;
+import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -93,7 +95,7 @@ public class MapRendererPerformanceTest {
         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 = MainApplication.getMap().mapView;
         nc.setBounds(0, 0, IMG_WIDTH, IMG_HEIGHT);
 
         MapPaintStyles.readFromPreferences();
@@ -140,7 +142,7 @@ public class MapRendererPerformanceTest {
         }
         Assert.assertNotNull(hideIconsSetting);
         hideIconsSetting.setValue(false);
-        MapPaintStyles.reloadStyles(defaultStyleIdx);
+        MapPaintStyleLoader.reloadStyles(defaultStyleIdx);
 
         try (
             InputStream fisC = Compression.getUncompressedFileInputStream(new File("data_nodist/neubrandenburg.osm.bz2"));
@@ -155,7 +157,7 @@ public class MapRendererPerformanceTest {
         if (hideIconsSetting != null) {
             hideIconsSetting.setValue(true);
         }
-        MapPaintStyles.reloadStyles(defaultStyleIdx);
+        MapPaintStyleLoader.reloadStyles(defaultStyleIdx);
     }
 
     private static class PerformanceTester {
@@ -208,7 +210,7 @@ public class MapRendererPerformanceTest {
                 try {
                     Thread.sleep(300);
                 } catch (InterruptedException ex) {
-                    Main.warn(ex);
+                    Logging.warn(ex);
                 }
                 BenchmarkData data = new BenchmarkData();
                 renderer.setBenchmarkFactory(() -> data);
@@ -288,7 +290,7 @@ public class MapRendererPerformanceTest {
             test.label = "all";
             setFilterStyleActive(false);
         }
-        MapPaintStyles.reloadStyles(filterStyleIdx);
+        MapPaintStyleLoader.reloadStyles(filterStyleIdx);
         test.run();
     }
 
@@ -306,6 +308,15 @@ public class MapRendererPerformanceTest {
         }
     }
 
+    /**
+     * Resets MapPaintStyles to a single source.
+     * @param source new map paint style source
+     */
+    public static void resetStylesToSingle(StyleSource source) {
+        MapPaintStyles.getStyles().clear();
+        MapPaintStyles.getStyles().add(source);
+    }
+
     private static void setFilterStyleActive(boolean active) {
         if (filterStyle.active != active) {
             MapPaintStyles.toggleStyleActive(filterStyleIdx);
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.groovy b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.groovy
deleted file mode 100644
index be5e4dc..0000000
--- a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.groovy
+++ /dev/null
@@ -1,107 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.mappaint.mapcss;
-
-import static org.junit.Assert.*
-
-import java.awt.Graphics2D
-import java.awt.image.BufferedImage
-
-import org.junit.*
-import org.openstreetmap.josm.JOSMFixture
-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.MapPaintStyles
-import org.openstreetmap.josm.gui.preferences.SourceEntry
-import org.openstreetmap.josm.io.Compression
-import org.openstreetmap.josm.io.OsmReader
-
-/**
- * This performance test measures the time for a full run of MapPaintVisitor.visitAll()
- * against a test data set using a test style.
- *
- */
-class MapCSSPerformanceTest {
-
-    /* ------------------------ configuration section  ---------------------------- */
-    /**
-     * The path to the style file used for rendering.
-     */
-    def static STYLE_FILE="styles/standard/elemstyles.mapcss"
-
-    /**
-     * The data file to be rendered
-     */
-    def static DATA_FILE = "data_nodist/neubrandenburg.osm.bz2"
-    /* ------------------------ / configuration section  ---------------------------- */
-
-    def DataSet ds
-
-    def static boolean checkTestEnvironment() {
-          File f = new File(STYLE_FILE);
-          if ( !f.isFile() || ! f.exists()) {
-              fail("STYLE_FILE refers to '${STYLE_FILE}. This is either not a file or doesn't exist.\nPlease update configuration settings in the unit test file.")
-          }
-    }
-
-    @BeforeClass
-    public static void createJOSMFixture() {
-        JOSMFixture.createPerformanceTestFixture().init(true);
-    }
-
-    def timed(Closure c){
-        long before = System.currentTimeMillis()
-        c()
-        long after = System.currentTimeMillis()
-        return after - before
-    }
-
-    def loadStyle() {
-        print "Loading style '$STYLE_FILE' ..."
-        MapCSSStyleSource source = new MapCSSStyleSource(
-            new SourceEntry(
-                STYLE_FILE,
-                "test style",
-                "a test style",
-                true // active
-            )
-        )
-        source.loadStyleSource()
-        if (!source.errors.isEmpty()) {
-            fail("Failed to load style file ''${STYLE_FILE}''. Errors: ${source.errors}")
-        }
-        MapPaintStyles.getStyles().clear()
-        MapPaintStyles.getStyles().add(source)
-        println "DONE"
-    }
-
-    def loadData() {
-        print "Loading data file '$DATA_FILE' ..."
-        ds = OsmReader.parseDataSet(Compression.getUncompressedFileInputStream(new File(DATA_FILE)), null);
-        println "DONE"
-    }
-
-    @Test
-    public void measureTimeForStylePreparation() {
-        loadStyle()
-        loadData()
-
-        NavigatableComponent mv = new NavigatableComponent();
-        mv.setBounds(0, 0, 1024, 768)
-        BufferedImage img = new BufferedImage(mv.getWidth(), mv.getHeight(), BufferedImage.TYPE_3BYTE_BGR)
-        Graphics2D g = img.createGraphics()
-        g.setClip(0,0, mv.getWidth(), mv.getHeight())
-        StyledMapRenderer visitor = new StyledMapRenderer(g, mv, false)
-
-        print "Rendering ..."
-        long time = timed {
-            visitor.render(ds, false, new Bounds(-90,-180,90,180))
-        }
-        println "DONE"
-        println "data file : ${DATA_FILE}"
-        println "style file: ${STYLE_FILE}"
-        println ""
-        println "Rendering took $time ms."
-    }
-}
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.java b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.java
new file mode 100644
index 0000000..acbc44d
--- /dev/null
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.java
@@ -0,0 +1,121 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.mapcss;
+
+import static org.junit.Assert.fail;
+
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+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.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.gui.NavigatableComponent;
+import org.openstreetmap.josm.gui.mappaint.MapRendererPerformanceTest;
+import org.openstreetmap.josm.io.Compression;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.OsmReader;
+
+/**
+ * This performance test measures the time for a full run of MapPaintVisitor.visitAll()
+ * against a test data set using a test style.
+ *
+ */
+public class MapCSSPerformanceTest {
+
+    /* ------------------------ configuration section  ---------------------------- */
+    /**
+     * The path to the style file used for rendering.
+     */
+    static final String STYLE_FILE = "styles/standard/elemstyles.mapcss";
+
+    /**
+     * The data file to be rendered
+     */
+    static final String DATA_FILE = "data_nodist/neubrandenburg.osm.bz2";
+    /* ------------------------ / configuration section  ---------------------------- */
+
+    DataSet ds;
+
+    static void checkTestEnvironment() {
+          File f = new File(STYLE_FILE);
+          if (!f.isFile() || !f.exists()) {
+              fail("STYLE_FILE refers to '"+STYLE_FILE+"'. This is either not a file or doesn't exist.\n" +
+                      "Please update configuration settings in the unit test file.");
+          }
+    }
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void createJOSMFixture() {
+        JOSMFixture.createPerformanceTestFixture().init(true);
+    }
+
+    long timed(Runnable callable) {
+        long before = System.currentTimeMillis();
+        callable.run();
+        long after = System.currentTimeMillis();
+        return after - before;
+    }
+
+    void loadStyle() {
+        System.out.print("Loading style '"+STYLE_FILE+"' ...");
+        MapCSSStyleSource source = new MapCSSStyleSource(
+            new SourceEntry(
+                STYLE_FILE,
+                "test style",
+                "a test style",
+                true // active
+            )
+        );
+        source.loadStyleSource();
+        Collection<Throwable> errors = source.getErrors();
+        if (!errors.isEmpty()) {
+            fail("Failed to load style file ''"+STYLE_FILE+"''. Errors: "+errors);
+        }
+        MapRendererPerformanceTest.resetStylesToSingle(source);
+        System.out.println("DONE");
+    }
+
+    void loadData() throws IllegalDataException, IOException {
+        System.out.print("Loading data file '"+DATA_FILE+"' ...");
+        ds = OsmReader.parseDataSet(Compression.getUncompressedFileInputStream(new File(DATA_FILE)), null);
+        System.out.println("DONE");
+    }
+
+    /**
+     * Measures time for style preparation.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if any invalid data is found
+     */
+    @Test
+    public void measureTimeForStylePreparation() throws IllegalDataException, IOException {
+        loadStyle();
+        loadData();
+
+        NavigatableComponent mv = new NavigatableComponent();
+        mv.setBounds(0, 0, 1024, 768);
+        BufferedImage img = new BufferedImage(mv.getWidth(), mv.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
+        Graphics2D g = img.createGraphics();
+        g.setClip(0, 0, mv.getWidth(), mv.getHeight());
+        StyledMapRenderer visitor = new StyledMapRenderer(g, mv, false);
+
+        System.out.print("Rendering ...");
+        long time = timed(
+            () -> visitor.render(ds, false, new Bounds(-90, -180, 90, 180))
+        );
+        System.out.println("DONE");
+        System.out.println("data file : "+DATA_FILE);
+        System.out.println("style file: "+STYLE_FILE);
+        System.out.println("");
+        System.out.println("Rendering took "+time+" ms.");
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/JOSMFixture.java b/test/unit/org/openstreetmap/josm/JOSMFixture.java
index 6ceaf5e..d262877 100644
--- a/test/unit/org/openstreetmap/josm/JOSMFixture.java
+++ b/test/unit/org/openstreetmap/josm/JOSMFixture.java
@@ -5,7 +5,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.awt.BorderLayout;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Paths;
@@ -14,13 +13,10 @@ import java.text.MessageFormat;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import javax.swing.JPanel;
-
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.MainPanel;
+import org.openstreetmap.josm.gui.MainApplicationTest;
 import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
-import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.CertificateAmendment;
 import org.openstreetmap.josm.io.OsmApi;
@@ -143,48 +139,62 @@ public class JOSMFixture {
             || url.startsWith("https://www.openstreetmap.org") || url.startsWith("https://api.openstreetmap.org");
     }
 
+    @SuppressWarnings("deprecation")
     private void setupGUI() {
         JOSMTestRules.cleanLayerEnvironment();
-        assertTrue(Main.getLayerManager().getLayers().isEmpty());
-        assertNull(Main.getLayerManager().getEditLayer());
-        assertNull(Main.getLayerManager().getActiveLayer());
+        assertTrue(MainApplication.getLayerManager().getLayers().isEmpty());
+        assertNull(MainApplication.getLayerManager().getEditLayer());
+        assertNull(MainApplication.getLayerManager().getActiveLayer());
 
         initContentPane();
-        initMainPanel();
+        initMainPanel(false);
         initToolbar();
         if (Main.main == null) {
             new MainApplication().initialize();
         } else {
+            if (Main.main.panel == null) {
+                initMainPanel(false);
+                Main.main.panel = MainApplication.getMainPanel();
+            }
             Main.main.panel.reAddListeners();
         }
         // Add a test layer to the layer manager to get the MapFrame
-        Main.getLayerManager().addLayer(new TestLayer());
+        MainApplication.getLayerManager().addLayer(new TestLayer());
     }
 
     /**
-     * Make sure {@code Main.contentPanePrivate} is initialized.
+     * Make sure {@code MainApplication.contentPanePrivate} is initialized.
      */
     public static void initContentPane() {
-        if (Main.contentPanePrivate == null) {
-            Main.contentPanePrivate = new JPanel(new BorderLayout());
-        }
+        MainApplicationTest.initContentPane();
     }
 
     /**
-     * Make sure {@code Main.mainPanel} is initialized.
+     * Make sure {@code MainApplication.mainPanel} is initialized.
      */
     public static void initMainPanel() {
-        if (Main.mainPanel == null) {
-            Main.mainPanel = new MainPanel(Main.getLayerManager());
-        }
+        initMainPanel(false);
     }
 
     /**
-     * Make sure {@code Main.toolbar} is initialized.
+     * Make sure {@code MainApplication.mainPanel} is initialized.
+     * @param reAddListeners {@code true} to re-add listeners
+     */
+    public static void initMainPanel(boolean reAddListeners) {
+        MainApplicationTest.initMainPanel(reAddListeners);
+    }
+
+    /**
+     * Make sure {@code MainApplication.toolbar} is initialized.
      */
     public static void initToolbar() {
-        if (Main.toolbar == null) {
-            Main.toolbar = new ToolbarPreferences();
-        }
+        MainApplicationTest.initToolbar();
+    }
+
+    /**
+     * Make sure {@code MainApplication.menu} is initialized.
+     */
+    public static void initMainMenu() {
+        MainApplicationTest.initMainMenu();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/MainTest.java b/test/unit/org/openstreetmap/josm/MainTest.java
index 1335560..cb05bc8 100644
--- a/test/unit/org/openstreetmap/josm/MainTest.java
+++ b/test/unit/org/openstreetmap/josm/MainTest.java
@@ -7,31 +7,17 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import java.awt.event.KeyEvent;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.nio.file.Paths;
 import java.util.Collection;
-import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-import javax.swing.UIManager;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main.DownloadParamType;
 import org.openstreetmap.josm.Main.InitStatusListener;
 import org.openstreetmap.josm.Main.InitializationTask;
-import org.openstreetmap.josm.actions.AboutAction;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.gui.MapFrameListener;
-import org.openstreetmap.josm.gui.ProgramArguments;
-import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
-import org.openstreetmap.josm.tools.Shortcut;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -45,26 +31,15 @@ public class MainTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().https().devAPI().commands();
-
-    /**
-     * Unit test of {@link DownloadParamType#paramType} method.
-     */
-    @Test
-    public void testParamType() {
-        assertEquals(DownloadParamType.bounds, DownloadParamType.paramType("48.000,16.000,48.001,16.001"));
-        assertEquals(DownloadParamType.fileName, DownloadParamType.paramType("data.osm"));
-        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file:///home/foo/data.osm"));
-        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file://C:\\Users\\foo\\data.osm"));
-        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("http://somewhere.com/data.osm"));
-        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("https://somewhere.com/data.osm"));
-    }
+    public JOSMTestRules test = new JOSMTestRules().platform().https().devAPI().main().projection();
 
     /**
      * Unit tests on log messages.
+     * @deprecated to remove end of 2017
      */
     @Test
     @SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
+    @Deprecated
     public void testLogs() {
 
         assertNull(Main.getErrorMessage(null));
@@ -99,92 +74,6 @@ public class MainTest {
     public void testPreConstructorInit() {
         Main.preConstructorInit();
         assertNotNull(Main.getProjection());
-        assertEquals(Main.pref.get("laf", Main.platform.getDefaultStyle()), UIManager.getLookAndFeel().getClass().getCanonicalName());
-        assertNotNull(Main.toolbar);
-    }
-
-    /**
-     * Unit test of {@link Main#postConstructorProcessCmdLine} - empty case.
-     */
-    @Test
-    public void testPostConstructorProcessCmdLineEmpty() {
-        // Check the method accepts no arguments
-        Main.postConstructorProcessCmdLine(new ProgramArguments(new String[0]));
-    }
-
-    private static void doTestPostConstructorProcessCmdLine(String download, String downloadGps, boolean gpx) {
-        assertNull(Main.getLayerManager().getEditDataSet());
-        for (Future<?> f : Main.postConstructorProcessCmdLine(new ProgramArguments(new String[]{
-                "--download=" + download,
-                "--downloadgps=" + downloadGps,
-                "--selection=type: node"}))) {
-            try {
-                f.get();
-            } catch (InterruptedException | ExecutionException e) {
-                Main.error(e);
-            }
-        }
-        DataSet ds = Main.getLayerManager().getEditDataSet();
-        assertNotNull(ds);
-        assertFalse(ds.getSelected().isEmpty());
-        Main.getLayerManager().removeLayer(Main.getLayerManager().getEditLayer());
-        if (gpx) {
-            List<GpxLayer> gpxLayers = Main.getLayerManager().getLayersOfType(GpxLayer.class);
-            assertEquals(1, gpxLayers.size());
-            Main.getLayerManager().removeLayer(gpxLayers.iterator().next());
-        }
-    }
-
-    /**
-     * Unit test of {@link Main#postConstructorProcessCmdLine} - nominal case with bounds.
-     * This test assumes the DEV API contains nodes around 0,0 and GPX tracks around London
-     */
-    @Test
-    public void testPostConstructorProcessCmdLineBounds() {
-        doTestPostConstructorProcessCmdLine(
-                "0.01,0.01,0.05,0.05",
-                "51.35,-0.4,51.60,0.2", true);
-    }
-
-    /**
-     * Unit test of {@link Main#postConstructorProcessCmdLine} - nominal case with http/https URLs.
-     * This test assumes the DEV API contains nodes around 0,0 and GPX tracks around London
-     */
-    @Test
-    public void testPostConstructorProcessCmdLineHttpUrl() {
-        doTestPostConstructorProcessCmdLine(
-                "http://api06.dev.openstreetmap.org/api/0.6/map?bbox=0.01,0.01,0.05,0.05",
-                "https://master.apis.dev.openstreetmap.org/api/0.6/trackpoints?bbox=-0.4,51.35,0.2,51.6&page=0", true);
-    }
-
-    /**
-     * Unit test of {@link Main#postConstructorProcessCmdLine} - nominal case with file URLs.
-     * @throws MalformedURLException if an error occurs
-     */
-    @Test
-    public void testPostConstructorProcessCmdLineFileUrl() throws MalformedURLException {
-        doTestPostConstructorProcessCmdLine(
-                Paths.get(TestUtils.getTestDataRoot() + "multipolygon.osm").toUri().toURL().toExternalForm(),
-                Paths.get(TestUtils.getTestDataRoot() + "minimal.gpx").toUri().toURL().toExternalForm(), false);
-    }
-
-    /**
-     * Unit test of {@link Main#postConstructorProcessCmdLine} - nominal case with file names.
-     * @throws MalformedURLException if an error occurs
-     */
-    @Test
-    public void testPostConstructorProcessCmdLineFilename() throws MalformedURLException {
-        doTestPostConstructorProcessCmdLine(
-                Paths.get(TestUtils.getTestDataRoot() + "multipolygon.osm").toFile().getAbsolutePath(),
-                Paths.get(TestUtils.getTestDataRoot() + "minimal.gpx").toFile().getAbsolutePath(), false);
-    }
-
-    /**
-     * Unit test of {@link DownloadParamType} enum.
-     */
-    @Test
-    public void testEnumDownloadParamType() {
-        TestUtils.superficialEnumCodeCoverage(DownloadParamType.class);
     }
 
     /**
@@ -231,33 +120,6 @@ public class MainTest {
         Main.setOnline(OnlineResource.ALL);
     }
 
-    /**
-     * Unit test of {@link Main#getRegisteredActionShortcut}.
-     */
-    @Test
-    public void testGetRegisteredActionShortcut() {
-        Shortcut noKeystroke = Shortcut.registerShortcut("no", "keystroke", 0, 0);
-        assertNull(noKeystroke.getKeyStroke());
-        assertNull(Main.getRegisteredActionShortcut(noKeystroke));
-        Shortcut noAction = Shortcut.registerShortcut("foo", "bar", KeyEvent.VK_AMPERSAND, Shortcut.SHIFT);
-        assertNotNull(noAction.getKeyStroke());
-        assertNull(Main.getRegisteredActionShortcut(noAction));
-        AboutAction about = new AboutAction();
-        assertEquals(about, Main.getRegisteredActionShortcut(about.getShortcut()));
-    }
-
-    /**
-     * Unit test of {@link Main#addMapFrameListener} and {@link Main#removeMapFrameListener}.
-     */
-    @Test
-    public void testMapFrameListener() {
-        MapFrameListener listener = (o, n) -> { };
-        assertTrue(Main.addMapFrameListener(listener));
-        assertFalse(Main.addMapFrameListener(null));
-        assertTrue(Main.removeMapFrameListener(listener));
-        assertFalse(Main.removeMapFrameListener(null));
-    }
-
     private static class InitStatusListenerStub implements InitStatusListener {
 
         boolean updated;
diff --git a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java b/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
index 21f9743..9e966ce 100644
--- a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
@@ -1,6 +1,10 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
@@ -8,11 +12,15 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
+import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -21,12 +29,16 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 public final class AddImageryLayerActionTest {
     /**
      * We need prefs for this. We need platform for actions and the OSM API for checking blacklist.
-     * The timeout is set to default httpclient read timeout + connect timeout + a small delay to ignore
-     * common but harmless network issues.
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI().timeout(45500);
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI();
+
+    /**
+     * HTTP mock.
+     */
+    @Rule
+    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort().usingFilesUnderDirectory(TestUtils.getTestDataRoot()));
 
     /**
      * Unit test of {@link AddImageryLayerAction#updateEnabledState}.
@@ -44,12 +56,30 @@ public final class AddImageryLayerActionTest {
      * Unit test of {@link AddImageryLayerAction#actionPerformed} - Enabled cases for TMS.
      */
     @Test
-    public void testActionPerformedEnabled() {
-        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
+    public void testActionPerformedEnabledTms() {
+        assertTrue(MainApplication.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
         new AddImageryLayerAction(new ImageryInfo("foo_tms", "http://bar", "tms", null, null)).actionPerformed(null);
-        List<TMSLayer> tmsLayers = Main.getLayerManager().getLayersOfType(TMSLayer.class);
+        List<TMSLayer> tmsLayers = MainApplication.getLayerManager().getLayersOfType(TMSLayer.class);
         assertEquals(1, tmsLayers.size());
-        Main.getLayerManager().removeLayer(tmsLayers.get(0));
+        MainApplication.getLayerManager().removeLayer(tmsLayers.get(0));
+    }
+
+    /**
+     * Unit test of {@link AddImageryLayerAction#actionPerformed} - Enabled cases for WMS.
+     */
+    @Test
+    public void testActionPerformedEnabledWms() {
+        wireMockRule.stubFor(get(urlEqualTo("/wms?VERSION=1.1.1&SERVICE=WMS&REQUEST=GetCapabilities"))
+                .willReturn(aResponse()
+                    .withStatus(200)
+                    .withHeader("Content-Type", "text/xml")
+                    .withBodyFile("imagery/wms-capabilities.xml")));
+        new AddImageryLayerAction(new ImageryInfo("localhost", "http://localhost:" + wireMockRule.port() + "/wms?",
+                "wms_endpoint", null, null)).actionPerformed(null);
+        List<WMSLayer> wmsLayers = MainApplication.getLayerManager().getLayersOfType(WMSLayer.class);
+        assertEquals(1, wmsLayers.size());
+
+        MainApplication.getLayerManager().removeLayer(wmsLayers.get(0));
     }
 
     /**
@@ -57,12 +87,12 @@ public final class AddImageryLayerActionTest {
      */
     @Test
     public void testActionPerformedDisabled() {
-        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
+        assertTrue(MainApplication.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
         try {
             new AddImageryLayerAction(new ImageryInfo("foo")).actionPerformed(null);
         } catch (IllegalArgumentException expected) {
             assertEquals("Parameter 'info.url' must not be null", expected.getMessage());
         }
-        assertTrue(Main.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
+        assertTrue(MainApplication.getLayerManager().getLayersOfType(TMSLayer.class).isEmpty());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTestIT.java b/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTestIT.java
deleted file mode 100644
index a8773ff..0000000
--- a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTestIT.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.List;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.imagery.ImageryInfo;
-import org.openstreetmap.josm.gui.layer.WMSLayer;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
-/**
- * Unit tests for class {@link AddImageryLayerAction}.
- */
-public final class AddImageryLayerActionTestIT {
-    /**
-     * We need prefs for this. We need platform for actions and the OSM API for checking blacklist.
-     * The timeout is set to default httpclient read timeout + connect timeout + a small delay to ignore
-     * common but harmless network issues.
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI().timeout(45500);
-
-    /**
-     * Integration test of {@link AddImageryLayerAction#actionPerformed} - Enabled cases for WMS.
-     */
-    @Test
-    public void testActionPerformedEnabledWms() {
-        new AddImageryLayerAction(new ImageryInfo("wms.openstreetmap.fr", "http://wms.openstreetmap.fr/wms?",
-                "wms_endpoint", null, null)).actionPerformed(null);
-        List<WMSLayer> wmsLayers = Main.getLayerManager().getLayersOfType(WMSLayer.class);
-        assertEquals(1, wmsLayers.size());
-
-        Main.getLayerManager().removeLayer(wmsLayers.get(0));
-    }
-}
diff --git a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
index c907e05..b8035da 100644
--- a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
@@ -5,9 +5,8 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AlignInLineAction.InvalidSelection;
 import org.openstreetmap.josm.actions.AlignInLineAction.Line;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -15,13 +14,24 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link AlignInLineAction}.
  */
 public final class AlignInLineActionTest {
 
+    /**
+     * Setup test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().projection();
+
     /** Class under test. */
     private static AlignInLineAction action;
 
@@ -30,10 +40,8 @@ public final class AlignInLineActionTest {
      */
     @Before
     public void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-
         // Enable "Align in line" feature.
-        action = Main.main.menu.alignInLine;
+        action = MainApplication.getMenu().alignInLine;
         action.setEnabled(true);
     }
 
@@ -42,9 +50,10 @@ public final class AlignInLineActionTest {
      * nodes (the most distant in the way sequence, not the most euclidean-distant). See
      * https://josm.openstreetmap.de/ticket/9605#comment:3. Note that in this test, after alignment, way is overlapping
      * itself.
+     * @throws InvalidSelection never
      */
     @Test
-    public void testNodesOpenWay() {
+    public void testNodesOpenWay() throws InvalidSelection {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -58,7 +67,7 @@ public final class AlignInLineActionTest {
         Node point3 = new Node(new EastNorth(1, 1));
 
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
 
             // Create an open way.
             createWay(dataSet, point1, point2, point3);
@@ -66,10 +75,10 @@ public final class AlignInLineActionTest {
             // Select nodes to align.
             dataSet.addSelected(point1, point2, point3);
 
-            action.actionPerformed(null);
+            action.buildCommand().executeCommand();
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         // Points 1 and 3 are the extremities and must not have moved. Only point 2 must have moved.
@@ -81,9 +90,10 @@ public final class AlignInLineActionTest {
     /**
      * Test case: only nodes selected, part of a closed way: align these nodes on the line passing through the most
      * distant nodes.
+     * @throws InvalidSelection never
      */
     @Test
-    public void testNodesClosedWay() {
+    public void testNodesClosedWay() throws InvalidSelection {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -98,17 +108,17 @@ public final class AlignInLineActionTest {
         Node point4 = new Node(new EastNorth(0, 2));
 
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
 
             // Create a closed way.
             createWay(dataSet, point1, point2, point3, point4, point1);
             // Select nodes to align (point1 must be in the second position to exhibit the bug).
             dataSet.addSelected(point4, point1, point2);
 
-            action.actionPerformed(null);
+            action.buildCommand().executeCommand();
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         // Only point 1 must have moved.
@@ -121,9 +131,10 @@ public final class AlignInLineActionTest {
     /**
      * Test case: only nodes selected, part of multiple ways: align these nodes on the line passing through the most
      * distant nodes.
+     * @throws InvalidSelection never
      */
     @Test
-    public void testNodesOpenWays() {
+    public void testNodesOpenWays() throws InvalidSelection {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -138,7 +149,7 @@ public final class AlignInLineActionTest {
         Node point4 = new Node(new EastNorth(2, 0));
 
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
 
             // Create 2 ways.
             createWay(dataSet, point1, point2);
@@ -148,10 +159,10 @@ public final class AlignInLineActionTest {
             dataSet.addSelected(point1, point2, point3, point4);
 
             // Points must align between points 1 and 4.
-            action.actionPerformed(null);
+            action.buildCommand().executeCommand();
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         assertCoordEq(point1, 0, 2);
diff --git a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
index 22db624..965b1e6 100644
--- a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
@@ -16,11 +16,11 @@ import java.util.Arrays;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -65,7 +65,7 @@ public class CopyActionTest {
         action.actionPerformed(null);
         assertTrue(action.warningShown);
 
-        Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "test", null));
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "test", null));
         action.warningShown = false;
 
         action.updateEnabledState();
@@ -96,7 +96,7 @@ public class CopyActionTest {
         data.addPrimitive(way);
         data.setSelected(way);
 
-        Main.getLayerManager().addLayer(new OsmDataLayer(data, "test", null));
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(data, "test", null));
 
         CopyAction action = new CopyAction() {
             @Override
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
index 2e82692..0fb05af 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
@@ -10,13 +10,13 @@ import java.util.Collection;
 
 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.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.GeoProperty;
@@ -37,7 +37,7 @@ public final class CreateCircleActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().projection().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
 
     /**
      * Test case: When Create Circle action is performed with a single way selected,
@@ -66,11 +66,11 @@ public final class CreateCircleActionTest {
         CreateCircleAction action = new CreateCircleAction();
         action.setEnabled(true);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             action.actionPerformed(null);
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         // Expected result: Dataset contain one closed way, clockwise
@@ -137,11 +137,11 @@ public final class CreateCircleActionTest {
             CreateCircleAction action = new CreateCircleAction();
             action.setEnabled(true);
             try {
-                Main.getLayerManager().addLayer(layer);
+                MainApplication.getLayerManager().addLayer(layer);
                 action.actionPerformed(null);
             } finally {
                 // Ensure we clean the place before leaving, even if test fails.
-                Main.getLayerManager().removeLayer(layer);
+                MainApplication.getLayerManager().removeLayer(layer);
             }
 
             // Expected result: Dataset contain one closed way, clockwise
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
index 33703b3..c2032c6 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
@@ -11,14 +11,14 @@ import java.util.TreeMap;
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
 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.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Pair;
@@ -55,7 +55,7 @@ public class CreateMultipolygonActionTest {
 
     @SuppressWarnings("unchecked")
     private static Pair<SequenceCommand, Relation> createMultipolygonCommand(Collection<Way> ways, String pattern, Relation r)
-            throws ParseError {
+            throws SearchParseError {
         return CreateMultipolygonAction.createMultipolygonCommand(
             (Collection<Way>) (Collection<?>) SubclassFilteredCollection.filter(ways, SearchCompiler.compile(regexpSearch(pattern))), r);
     }
diff --git a/test/unit/org/openstreetmap/josm/actions/DeleteLayerActionTest.java b/test/unit/org/openstreetmap/josm/actions/DeleteLayerActionTest.java
index 52cc7fa..386ace7 100644
--- a/test/unit/org/openstreetmap/josm/actions/DeleteLayerActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/DeleteLayerActionTest.java
@@ -6,8 +6,8 @@ import static org.junit.Assert.assertNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -35,9 +35,9 @@ public final class DeleteLayerActionTest {
         action.actionPerformed(null);
         // OsmDataLayer
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
-        Main.getLayerManager().addLayer(layer);
-        assertNotNull(Main.getLayerManager().getActiveLayer());
+        MainApplication.getLayerManager().addLayer(layer);
+        assertNotNull(MainApplication.getLayerManager().getActiveLayer());
         action.actionPerformed(null);
-        assertNull(Main.getLayerManager().getActiveLayer());
+        assertNull(MainApplication.getLayerManager().getActiveLayer());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/FullscreenToggleActionTest.java b/test/unit/org/openstreetmap/josm/actions/FullscreenToggleActionTest.java
index 09ce5b2..92f87fc 100644
--- a/test/unit/org/openstreetmap/josm/actions/FullscreenToggleActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/FullscreenToggleActionTest.java
@@ -16,7 +16,7 @@ public class FullscreenToggleActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main();
 
     /**
      * Test {@link FullscreenToggleAction}
diff --git a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
index 024fb34..f26765b 100644
--- a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
@@ -16,7 +16,6 @@ import java.util.Set;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -25,6 +24,8 @@ 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.data.osm.search.SearchMode;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -46,7 +47,7 @@ public class JoinAreasActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection();
 
     /**
      * Non-regression test for bug #10511.
@@ -59,12 +60,12 @@ public class JoinAreasActionTest {
         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);
+            MainApplication.getLayerManager().addLayer(layer);
             try {
                 new JoinAreasAction().join(ds.getWays());
             } finally {
                 // Ensure we clean the place before leaving, even if test fails.
-                Main.getLayerManager().removeLayer(layer);
+                MainApplication.getLayerManager().removeLayer(layer);
             }
         }
     }
@@ -80,15 +81,15 @@ public class JoinAreasActionTest {
             DataSet ds = OsmReader.parseDataSet(is, null);
             assertEquals(10, ds.getWays().size());
             Layer layer = new OsmDataLayer(ds, null, null);
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             for (String ref : new String[]{"A", "B", "C", "D", "E"}) {
                 System.out.print("Joining ways " + ref);
-                Collection<OsmPrimitive> found = SearchAction.searchAndReturn("type:way ref="+ref, SearchAction.SearchMode.replace);
+                Collection<OsmPrimitive> found = SearchAction.searchAndReturn("type:way ref="+ref, SearchMode.replace);
                 assertEquals(2, found.size());
 
-                Main.main.menu.joinAreas.join(Utils.filteredCollection(found, Way.class));
+                MainApplication.getMenu().joinAreas.join(Utils.filteredCollection(found, Way.class));
 
-                Collection<OsmPrimitive> found2 = SearchAction.searchAndReturn("type:way ref="+ref, SearchAction.SearchMode.replace);
+                Collection<OsmPrimitive> found2 = SearchAction.searchAndReturn("type:way ref="+ref, SearchMode.replace);
                 assertEquals(1, found2.size());
                 System.out.println(" ==> OK");
             }
@@ -111,7 +112,7 @@ public class JoinAreasActionTest {
         }
 
         // set current edit layer
-        Main.getLayerManager().addLayer(new OsmDataLayer(dsToJoin, "join", null));
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(dsToJoin, "join", null));
 
         Collection<OsmPrimitive> testPrims = dsToJoin.getPrimitives(osm -> osm.get("test") != null);
         MultiMap<String, OsmPrimitive> tests = new MultiMap<>();
diff --git a/test/unit/org/openstreetmap/josm/actions/MergeLayerActionTest.java b/test/unit/org/openstreetmap/josm/actions/MergeLayerActionTest.java
index c9fb7c1..8028a3e 100644
--- a/test/unit/org/openstreetmap/josm/actions/MergeLayerActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/MergeLayerActionTest.java
@@ -7,8 +7,8 @@ import static org.junit.Assert.assertNull;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -25,7 +25,7 @@ public class MergeLayerActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main();
 
     private MergeLayerAction action;
 
@@ -37,8 +37,8 @@ public class MergeLayerActionTest {
         if (action == null) {
             action = new MergeLayerAction();
         }
-        for (TestLayer testLayer : Main.getLayerManager().getLayersOfType(TestLayer.class)) {
-            Main.getLayerManager().removeLayer(testLayer);
+        for (TestLayer testLayer : MainApplication.getLayerManager().getLayersOfType(TestLayer.class)) {
+            MainApplication.getLayerManager().removeLayer(testLayer);
         }
     }
 
@@ -47,9 +47,9 @@ public class MergeLayerActionTest {
      */
     @Test
     public void testMergeNoSourceLayer() {
-        assertNull(Main.getLayerManager().getActiveLayer());
+        assertNull(MainApplication.getLayerManager().getActiveLayer());
         action.actionPerformed(null);
-        assertEquals(0, Main.getLayerManager().getLayers().size());
+        assertEquals(0, MainApplication.getLayerManager().getLayers().size());
     }
 
     /**
@@ -58,10 +58,10 @@ public class MergeLayerActionTest {
     @Test
     public void testMergeNoTargetLayer() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
-        Main.getLayerManager().addLayer(layer);
-        assertEquals(1, Main.getLayerManager().getLayers().size());
+        MainApplication.getLayerManager().addLayer(layer);
+        assertEquals(1, MainApplication.getLayerManager().getLayers().size());
         assertNull(action.merge(layer));
-        assertEquals(1, Main.getLayerManager().getLayers().size());
+        assertEquals(1, MainApplication.getLayerManager().getLayers().size());
     }
 
     /**
@@ -72,10 +72,10 @@ public class MergeLayerActionTest {
     public void testMergeTwoEmptyLayers() throws Exception {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "1", null);
         OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "2", null);
-        Main.getLayerManager().addLayer(layer1);
-        Main.getLayerManager().addLayer(layer2);
-        assertEquals(2, Main.getLayerManager().getLayers().size());
+        MainApplication.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer2);
+        assertEquals(2, MainApplication.getLayerManager().getLayers().size());
         action.merge(layer2).get();
-        assertEquals(1, Main.getLayerManager().getLayers().size());
+        assertEquals(1, MainApplication.getLayerManager().getLayers().size());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java b/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java
index 165318f..196fe98 100644
--- a/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/MergeNodesActionTest.java
@@ -27,7 +27,7 @@ public class MergeNodesActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().projection();
 
     /**
      * Unit test of {@link MergeNodesAction#selectTargetLocationNode} - empty list
diff --git a/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java b/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
index 6cbb464..c1bf06f 100644
--- a/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
@@ -9,14 +9,14 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.OrthogonalizeAction.Direction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -99,7 +99,7 @@ public class OrthogonalizeActionTest {
         try (FileInputStream in = new FileInputStream(TestUtils.getTestDataRoot() + "orthogonalize.osm")) {
             final DataSet ds = OsmReader.parseDataSet(in, null);
             // TODO: Executing commands depends on active edit layer
-            Main.getLayerManager().addLayer(new OsmDataLayer(ds, "ds", null));
+            MainApplication.getLayerManager().addLayer(new OsmDataLayer(ds, "ds", null));
             for (String s : search) {
                 ds.addSelected(SubclassFilteredCollection.filter(ds.allPrimitives(), SearchCompiler.compile(s)));
             }
diff --git a/test/unit/org/openstreetmap/josm/actions/PurgeActionTest.java b/test/unit/org/openstreetmap/josm/actions/PurgeActionTest.java
index 5aa5668..6529711 100644
--- a/test/unit/org/openstreetmap/josm/actions/PurgeActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/PurgeActionTest.java
@@ -10,10 +10,10 @@ import java.io.InputStream;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
@@ -31,7 +31,7 @@ public class PurgeActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main();
 
     /**
      * Non-regression test for ticket #12038.
@@ -44,7 +44,7 @@ public class PurgeActionTest {
         try (InputStream is = TestUtils.getRegressionDataStream(12038, "data.osm")) {
             DataSet ds = OsmReader.parseDataSet(is, null);
             OsmDataLayer layer = new OsmDataLayer(ds, null, null);
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             try {
                 for (Way w : ds.getWays()) {
                     if (w.getId() == 222191929L) {
@@ -60,7 +60,7 @@ public class PurgeActionTest {
                 }
             } finally {
                 // Ensure we clean the place before leaving, even if test fails.
-                Main.getLayerManager().removeLayer(layer);
+                MainApplication.getLayerManager().removeLayer(layer);
             }
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java b/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java
index 72c46de..32c7426 100644
--- a/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java
@@ -8,13 +8,13 @@ import static org.junit.Assert.assertTrue;
 
 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.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 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.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -32,7 +32,7 @@ public final class SelectByInternalPointActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().main();
 
     /**
      * Tests that {@code SelectByInternalPointAction} satisfies utility class criterias.
@@ -48,7 +48,7 @@ public final class SelectByInternalPointActionTest {
      */
     @Test
     public void testNoDataSet() {
-        assertNull(Main.getLayerManager().getEditDataSet());
+        assertNull(MainApplication.getLayerManager().getEditDataSet());
         assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
         assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
         SelectByInternalPointAction.performSelection(null, false, false);
@@ -76,7 +76,7 @@ public final class SelectByInternalPointActionTest {
         r.addMember(new RelationMember("outer", w));
         ds.addPrimitive(r);
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         return layer;
     }
 
@@ -108,7 +108,7 @@ public final class SelectByInternalPointActionTest {
     @Test
     public void testPerformSelection() {
         initDataSet();
-        DataSet ds = Main.getLayerManager().getEditDataSet();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
         assertEquals(0, ds.getSelected().size());
         SelectByInternalPointAction.performSelection(null, false, false);
diff --git a/test/unit/org/openstreetmap/josm/actions/SimplifyWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/SimplifyWayActionTest.java
index c3a4870..28d3f91 100644
--- a/test/unit/org/openstreetmap/josm/actions/SimplifyWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/SimplifyWayActionTest.java
@@ -9,19 +9,22 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.stream.Stream;
 
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Unit tests for class {@link SimplifyWayAction}.
  */
@@ -33,11 +36,19 @@ public final class SimplifyWayActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-        action = Main.main.menu.simplifyWay;
-        action.setEnabled(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main();
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
+        if (action == null) {
+            action = MainApplication.getMenu().simplifyWay;
+            action.setEnabled(true);
+        }
     }
 
     private static Way createWaySelected(DataSet ds, double latStart) {
@@ -61,11 +72,11 @@ public final class SimplifyWayActionTest {
         DataSet ds = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertTrue(ds.getSelected().isEmpty());
             action.actionPerformed(null);
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -78,11 +89,11 @@ public final class SimplifyWayActionTest {
         createWaySelected(ds, 0.0);
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(1, ds.getSelected().size());
             action.actionPerformed(null);
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -97,11 +108,11 @@ public final class SimplifyWayActionTest {
         }
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(11, ds.getSelected().size());
             action.actionPerformed(null);
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
index 5d3216e..7c87940 100644
--- a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
@@ -10,10 +10,9 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SplitWayAction.Strategy;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -23,7 +22,11 @@ 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.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link SplitWayAction}.
@@ -36,11 +39,19 @@ public final class SplitWayActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-        action = Main.main.menu.splitWay;
-        action.setEnabled(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().projection();
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
+        if (action == null) {
+            action = MainApplication.getMenu().splitWay;
+            action.setEnabled(true);
+        }
     }
 
     /**
@@ -79,11 +90,11 @@ public final class SplitWayActionTest {
         dataSet.addSelected(w2);
 
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             action.actionPerformed(null);
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         // Ensures 3 ways.
@@ -186,7 +197,7 @@ public final class SplitWayActionTest {
             };
         final SplitWayAction.SplitWayResult result = SplitWayAction.splitWay(
                 layer, w2, SplitWayAction.buildSplitChunks(w2, Arrays.asList(n3, n4, n5)), new ArrayList<OsmPrimitive>(), strategy);
-        Main.main.undoRedo.add(result.getCommand());
+        MainApplication.undoRedo.add(result.getCommand());
 
         assertEquals(6, route.getMembersCount());
         assertEquals(w1, route.getMemberPrimitivesList().get(0));
diff --git a/test/unit/org/openstreetmap/josm/actions/UnGlueActionTest.java b/test/unit/org/openstreetmap/josm/actions/UnGlueActionTest.java
index 57a9e86..54599d4 100644
--- a/test/unit/org/openstreetmap/josm/actions/UnGlueActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/UnGlueActionTest.java
@@ -4,15 +4,18 @@ package org.openstreetmap.josm.actions;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link UnGlueAction}.
@@ -25,11 +28,19 @@ public final class UnGlueActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-        action = Main.main.menu.unglueNodes;
-        action.setEnabled(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main();
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
+        if (action == null) {
+            action = MainApplication.getMenu().unglueNodes;
+            action.setEnabled(true);
+        }
     }
 
     /**
@@ -40,13 +51,13 @@ public final class UnGlueActionTest {
         DataSet ds = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertTrue(ds.getSelected().isEmpty());
             assertTrue(ds.allPrimitives().isEmpty());
             action.actionPerformed(null);
             assertTrue(ds.allPrimitives().isEmpty());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -61,13 +72,13 @@ public final class UnGlueActionTest {
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         ds.setSelected(n);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(1, ds.getSelected().size());
             assertEquals(1, ds.allPrimitives().size());
             action.actionPerformed(null);
             assertEquals(1, ds.allPrimitives().size());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -88,13 +99,13 @@ public final class UnGlueActionTest {
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         ds.setSelected(n1);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(1, ds.getSelected().size());
             assertEquals(3, ds.allPrimitives().size());
             action.actionPerformed(null);
             assertEquals(3, ds.allPrimitives().size());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -121,13 +132,13 @@ public final class UnGlueActionTest {
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         ds.setSelected(n1);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(1, ds.getSelected().size());
             assertEquals(5, ds.allPrimitives().size());
             action.actionPerformed(null);
             assertEquals(6, ds.allPrimitives().size());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
index 69603d2..60a00c7 100644
--- a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
@@ -7,11 +7,11 @@ import java.util.Arrays;
 
 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.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -74,11 +74,11 @@ public final class UnJoinNodeWayActionTest {
         UnJoinNodeWayActionTestClass action = new UnJoinNodeWayActionTestClass();
         action.setEnabled(true);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             action.actionPerformed(null);
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
 
         // Ensures node n2 remove from w
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTaskTestParent.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTaskTestParent.java
new file mode 100644
index 0000000..b9a51d5
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTaskTestParent.java
@@ -0,0 +1,59 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
+
+import org.junit.Rule;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Superclass of {@link DownloadGpsTaskTest}, {@link DownloadOsmTaskTest} and {@link DownloadNotesTaskTest}.
+ */
+public abstract class AbstractDownloadTaskTestParent {
+
+    /**
+     * Setup test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().https();
+
+    /**
+     * HTTP mock.
+     */
+    @Rule
+    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort().usingFilesUnderDirectory(TestUtils.getTestDataRoot()));
+
+    /**
+     * Returns the path to remote test file to download via http.
+     * @return the path to remote test file, relative to JOSM root directory
+     */
+    protected abstract String getRemoteFile();
+
+    /**
+     * Returns the http URL to remote test file to download.
+     * @return the http URL to remote test file to download
+     */
+    protected final String getRemoteFileUrl() {
+        return "http://localhost:" + wireMockRule.port() + "/" + getRemoteFile();
+    }
+
+    /**
+     * Mock the HTTP server.
+     */
+    protected final void mockHttp() {
+        wireMockRule.stubFor(get(urlEqualTo("/" + getRemoteFile()))
+                .willReturn(aResponse()
+                    .withStatus(200)
+                    .withHeader("Content-Type", "text/xml")
+                    .withBodyFile(getRemoteFile())));
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
index 1de1584..74fcbc0 100644
--- a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
@@ -7,26 +7,13 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.ExecutionException;
 
-import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.gpx.GpxData;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link DownloadGpsTask}.
  */
-public class DownloadGpsTaskTest {
-
-    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/data_nodist/munich.gpx";
-
-    /**
-     * Setup test.
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().https();
+public class DownloadGpsTaskTest extends AbstractDownloadTaskTestParent {
 
     /**
      * Unit test of {@code DownloadGpsTask#acceptsUrl} method.
@@ -44,7 +31,7 @@ public class DownloadGpsTaskTest {
         assertTrue(task.acceptsUrl("https://www.openstreetmap.org/user/simon04/traces/750057"));
         assertTrue(task.acceptsUrl("https://www.openstreetmap.org/edit?gpx=750057"));
         assertTrue(task.acceptsUrl("http://www.openstreetmap.org/edit?gpx=2277313#map=14/-20.7321/-40.5328"));
-        assertTrue(task.acceptsUrl(REMOTE_FILE));
+        assertTrue(task.acceptsUrl(getRemoteFileUrl()));
     }
 
     /**
@@ -54,11 +41,17 @@ public class DownloadGpsTaskTest {
      */
     @Test
     public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        mockHttp();
         DownloadGpsTask task = new DownloadGpsTask();
-        task.loadUrl(false, REMOTE_FILE, null).get();
+        task.loadUrl(false, getRemoteFileUrl(), null).get();
         GpxData data = task.getDownloadedData();
         assertNotNull(data);
         assertFalse(data.waypoints.isEmpty());
         assertFalse(data.tracks.isEmpty());
     }
+
+    @Override
+    protected String getRemoteFile() {
+        return "samples/data.gpx";
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java
index ef6888c..a130c0a 100644
--- a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java
@@ -7,26 +7,13 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.ExecutionException;
 
-import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.osm.NoteData;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link DownloadNotesTask}.
  */
-public class DownloadNotesTaskTest {
-
-    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/test/data/planet-notes-extract.osn";
-
-    /**
-     * Setup test.
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().https();
+public class DownloadNotesTaskTest extends AbstractDownloadTaskTestParent {
 
     /**
      * Unit test of {@code DownloadNotesTask#acceptsUrl} method.
@@ -40,7 +27,7 @@ public class DownloadNotesTaskTest {
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.json?bbox=-0.65094,51.312159,0.374908,51.669148"));
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.xml?bbox=-0.65094,51.312159,0.374908,51.669148"));
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.gpx?bbox=-0.65094,51.312159,0.374908,51.669148"));
-        assertTrue(task.acceptsUrl(REMOTE_FILE));
+        assertTrue(task.acceptsUrl(getRemoteFileUrl()));
     }
 
     /**
@@ -50,10 +37,16 @@ public class DownloadNotesTaskTest {
      */
     @Test
     public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        mockHttp();
         DownloadNotesTask task = new DownloadNotesTask();
-        task.loadUrl(false, REMOTE_FILE, null).get();
+        task.loadUrl(false, getRemoteFileUrl(), null).get();
         NoteData data = task.getDownloadedData();
         assertNotNull(data);
         assertFalse(data.getNotes().isEmpty());
     }
+
+    @Override
+    protected String getRemoteFile() {
+        return "samples/data.osn";
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java
index 9baa702..5ac0ba9 100644
--- a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java
@@ -7,26 +7,13 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.ExecutionException;
 
-import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link DownloadOsmTask}.
  */
-public class DownloadOsmTaskTest {
-
-    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/data_nodist/direction-arrows.osm";
-
-    /**
-     * Setup test.
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().https();
+public class DownloadOsmTaskTest extends AbstractDownloadTaskTestParent {
 
     /**
      * Unit test of {@code DownloadOsmTask#acceptsUrl} method.
@@ -42,7 +29,7 @@ public class DownloadOsmTaskTest {
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/nodes?nodes=101,102,103"));
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/ways?ways=101,102,103"));
         assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/relations?relations=101,102,103"));
-        assertTrue(task.acceptsUrl(REMOTE_FILE));
+        assertTrue(task.acceptsUrl(getRemoteFileUrl()));
     }
 
     /**
@@ -52,11 +39,17 @@ public class DownloadOsmTaskTest {
      */
     @Test
     public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        mockHttp();
         DownloadOsmTask task = new DownloadOsmTask();
-        task.loadUrl(false, REMOTE_FILE, null).get();
+        task.loadUrl(false, getRemoteFileUrl(), null).get();
         DataSet ds = task.getDownloadedData();
         assertNotNull(ds);
         assertFalse(ds.getNodes().isEmpty());
         assertFalse(ds.getWays().isEmpty());
     }
+
+    @Override
+    protected String getRemoteFile() {
+        return "samples/data.osm";
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandlerTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandlerTest.java
index 5b4a046..5610192 100644
--- a/test/unit/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandlerTest.java
@@ -14,10 +14,10 @@ import java.util.concurrent.TimeoutException;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -119,10 +119,10 @@ public class PostDownloadHandlerTest {
      */
     @Test
     public void testRunExceptionFuture() {
-        Main.clearLastErrorAndWarnings();
+        Logging.clearLastErrorAndWarnings();
         new PostDownloadHandler(null, newFuture("testRunExceptionFuture")).run();
-        assertTrue(Main.getLastErrorAndWarnings().toString(),
-                Main.getLastErrorAndWarnings().contains("E: java.util.concurrent.ExecutionException: testRunExceptionFuture"));
+        assertTrue(Logging.getLastErrorAndWarnings().toString(),
+                Logging.getLastErrorAndWarnings().contains("E: java.util.concurrent.ExecutionException: testRunExceptionFuture"));
     }
 
     /**
@@ -130,9 +130,9 @@ public class PostDownloadHandlerTest {
      */
     @Test
     public void testRunNoError() {
-        Main.clearLastErrorAndWarnings();
+        Logging.clearLastErrorAndWarnings();
         new PostDownloadHandler(newTask(Collections.emptyList()), newFuture(null)).run();
-        assertTrue(Main.getLastErrorAndWarnings().toString(), Main.getLastErrorAndWarnings().isEmpty());
+        assertTrue(Logging.getLastErrorAndWarnings().toString(), Logging.getLastErrorAndWarnings().isEmpty());
     }
 
     /**
@@ -140,9 +140,9 @@ public class PostDownloadHandlerTest {
      */
     @Test
     public void testRunOneError() {
-        Main.clearLastErrorAndWarnings();
+        Logging.clearLastErrorAndWarnings();
         new PostDownloadHandler(newTask(Collections.singletonList(new Object())), newFuture(null)).run();
-        assertTrue(Main.getLastErrorAndWarnings().toString(), Main.getLastErrorAndWarnings().isEmpty());
+        assertTrue(Logging.getLastErrorAndWarnings().toString(), Logging.getLastErrorAndWarnings().isEmpty());
     }
 
     /**
@@ -150,9 +150,9 @@ public class PostDownloadHandlerTest {
      */
     @Test
     public void testRunMultipleErrors() {
-        Main.clearLastErrorAndWarnings();
+        Logging.clearLastErrorAndWarnings();
         new PostDownloadHandler(newTask(Arrays.asList("foo", new Exception("bar"), new Object())), newFuture(null)).run();
-        assertTrue(Main.getLastErrorAndWarnings().toString(),
-                Main.getLastErrorAndWarnings().contains("E: java.lang.Exception: bar"));
+        assertTrue(Logging.getLastErrorAndWarnings().toString(),
+                Logging.getLastErrorAndWarnings().contains("E: java.lang.Exception: bar"));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
index 80053f2..cbdfabe 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/AddNoteActionTest.java
@@ -8,10 +8,11 @@ import java.util.Collections;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.NoteData;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -27,7 +28,7 @@ public class AddNoteActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection();
 
     /**
      * Unit test of {@link AddNoteAction#enterMode} and {@link AddNoteAction#exitMode}.
@@ -36,14 +37,15 @@ public class AddNoteActionTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             AddNoteAction mapMode = new AddNoteAction(new NoteData(Collections.<Note>emptyList()));
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
index f51b2b7..857961a 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
@@ -6,10 +6,11 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.mapmode.DeleteAction.DeleteMode;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -25,7 +26,7 @@ public class DeleteActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection();
 
     /**
      * Unit test of {@link DeleteAction#enterMode} and {@link DeleteAction#exitMode}.
@@ -34,14 +35,15 @@ public class DeleteActionTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             DeleteAction mapMode = new DeleteAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
index e81414c..66c7265 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
@@ -16,12 +16,13 @@ import javax.swing.JList;
 
 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.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -38,7 +39,7 @@ public class DrawActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection();
 
     /**
      * Non regression test case for bug #12011.
@@ -52,10 +53,11 @@ public class DrawActionTest {
     public void testTicket12011() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
 
         // fix map view position
-        Main.map.mapView.zoomTo(new EastNorth(0, 0), 1);
+        MapFrame map = MainApplication.getMap();
+        map.mapView.zoomTo(new EastNorth(0, 0), 1);
 
         Node n1 = new Node(new EastNorth(0, 0));
         Node n2 = new Node(new EastNorth(100, 0));
@@ -68,10 +70,10 @@ public class DrawActionTest {
         dataSet.addPrimitive(w);
 
         try {
-            assertTrue(Main.map.selectDrawTool(false));
+            assertTrue(map.selectDrawTool(false));
 
-            Main.map.mapModeDraw.mouseReleased(new MouseEvent(
-                    Main.map,
+            map.mapModeDraw.mouseReleased(new MouseEvent(
+                    map,
                     MouseEvent.MOUSE_RELEASED,
                     2000,
                     InputEvent.BUTTON1_DOWN_MASK,
@@ -89,7 +91,7 @@ public class DrawActionTest {
 
             assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
 
-            Main.main.undoRedo.undo();
+            MainApplication.undoRedo.undo();
 
             assertEquals(2, w.getNodesCount());
             assertTrue(dataSet.getSelectedNodes().isEmpty());
@@ -97,7 +99,7 @@ public class DrawActionTest {
             assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
index 9679f8b..cf64a57 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
@@ -6,10 +6,11 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.mapmode.ExtrudeAction.Mode;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -25,7 +26,7 @@ public class ExtrudeActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().platform().main().projection();
 
     /**
      * Unit test of {@link ExtrudeAction#enterMode} and {@link ExtrudeAction#exitMode}.
@@ -34,14 +35,15 @@ public class ExtrudeActionTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             ExtrudeAction mapMode = new ExtrudeAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
index f008179..cfb5cb9 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
@@ -6,10 +6,11 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.State;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -25,7 +26,7 @@ public class ImproveWayAccuracyActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().platform().main().projection();
 
     /**
      * Unit test of {@link ImproveWayAccuracyAction#enterMode} and {@link ImproveWayAccuracyAction#exitMode}.
@@ -34,14 +35,15 @@ public class ImproveWayAccuracyActionTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             ImproveWayAccuracyAction mapMode = new ImproveWayAccuracyAction();
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
index 0d5512f..1888929 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
@@ -5,14 +5,14 @@ import java.awt.Cursor;
 import java.awt.event.MouseListener;
 import java.awt.geom.Point2D;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 
 class MapViewMock extends MapView {
     MapViewMock() {
-        this(Main.getLayerManager());
+        this(MainApplication.getLayerManager());
     }
 
     MapViewMock(MainLayerManager layerManager) {
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
index 97fa064..4e06357 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
@@ -6,11 +6,12 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.mapmode.ParallelWayAction.Mode;
 import org.openstreetmap.josm.actions.mapmode.ParallelWayAction.Modifier;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -26,7 +27,7 @@ public class ParallelWayActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().platform().main().projection();
 
     /**
      * Unit test of {@link ParallelWayAction#enterMode} and {@link ParallelWayAction#exitMode}.
@@ -35,14 +36,15 @@ public class ParallelWayActionTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
-            ParallelWayAction mapMode = new ParallelWayAction(Main.map);
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MainApplication.getLayerManager().addLayer(layer);
+            MapFrame map = MainApplication.getMap();
+            ParallelWayAction mapMode = new ParallelWayAction(map);
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java
index 65510a3..8b7f551 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/PlayHeadDragModeTest.java
@@ -6,8 +6,9 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -24,7 +25,7 @@ public class PlayHeadDragModeTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().platform().main().projection();
 
     /**
      * Unit test of {@link PlayHeadDragMode#enterMode} and {@link PlayHeadDragMode#exitMode}.
@@ -33,14 +34,15 @@ public class PlayHeadDragModeTest {
     public void testMode() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             PlayHeadDragMode mapMode = new PlayHeadDragMode(PlayHeadMarker.create());
-            MapMode oldMapMode = Main.map.mapMode;
-            assertTrue(Main.map.selectMapMode(mapMode));
-            assertEquals(mapMode, Main.map.mapMode);
-            assertTrue(Main.map.selectMapMode(oldMapMode));
+            MapFrame map = MainApplication.getMap();
+            MapMode oldMapMode = map.mapMode;
+            assertTrue(map.selectMapMode(mapMode));
+            assertEquals(mapMode, map.mapMode);
+            assertTrue(map.selectMapMode(oldMapMode));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
index 3ab0aa1..238c194 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
@@ -21,6 +21,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.MainLayerManager;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -58,7 +59,7 @@ public class SelectActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().projection().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
 
     /**
      * Test case: Move a two nodes way near a third node.
@@ -87,16 +88,17 @@ public class SelectActionTest {
         dataSet.addSelected(w);
 
         Main.pref.put("edit.initial-move-delay", "0");
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         try {
-            SelectAction action = new SelectActionMock(Main.map, dataSet, layer);
+            MapFrame map = MainApplication.getMap();
+            SelectAction action = new SelectActionMock(map, dataSet, layer);
             nodesMerged = false;
 
             action.setEnabled(true);
             action.putValue("active", true);
 
             MouseEvent event;
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_PRESSED,
                                    0,
                                    InputEvent.BUTTON1_DOWN_MASK | InputEvent.CTRL_DOWN_MASK,
@@ -104,7 +106,7 @@ public class SelectActionTest {
                                    1,
                                    false, MouseEvent.BUTTON1);
             action.mousePressed(event);
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_DRAGGED,
                                    1000,
                                    InputEvent.BUTTON1_DOWN_MASK | InputEvent.CTRL_DOWN_MASK,
@@ -112,7 +114,7 @@ public class SelectActionTest {
                                    1,
                                    false, MouseEvent.BUTTON1);
             action.mouseDragged(event);
-            event = new MouseEvent(Main.map,
+            event = new MouseEvent(map,
                                    MouseEvent.MOUSE_RELEASED,
                                    2000,
                                    InputEvent.BUTTON1_DOWN_MASK | InputEvent.CTRL_DOWN_MASK,
@@ -142,7 +144,7 @@ public class SelectActionTest {
                        Double.compare(r2.getEastNorth().east(), 100), 0);
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java b/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java
index 27b9985..aaef855 100644
--- a/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java
@@ -11,7 +11,6 @@ import java.util.Collection;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.PseudoCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.APIDataSet;
@@ -19,6 +18,7 @@ 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.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -33,7 +33,7 @@ public class FixDataHookTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().main();
 
     /**
      * Test of {@link FixDataHook#checkUpload} method.
@@ -41,9 +41,9 @@ public class FixDataHookTest {
     @Test
     public void testCheckUpload() {
         // Empty data set
-        Main.main.undoRedo.commands.clear();
+        MainApplication.undoRedo.commands.clear();
         new FixDataHook().checkUpload(new APIDataSet());
-        assertTrue(Main.main.undoRedo.commands.isEmpty());
+        assertTrue(MainApplication.undoRedo.commands.isEmpty());
 
         // Complete data set
         Node emptyNode = new Node();
@@ -76,11 +76,11 @@ public class FixDataHookTest {
         APIDataSet ads = new APIDataSet();
         ads.init(Arrays.asList(emptyNode, emptyWay, emptyRelation, w1, w2, w3, w4, w5, w6, w7, r1, r2));
 
-        Main.main.undoRedo.commands.clear();
+        MainApplication.undoRedo.commands.clear();
         new FixDataHook().checkUpload(ads);
-        assertEquals(1, Main.main.undoRedo.commands.size());
+        assertEquals(1, MainApplication.undoRedo.commands.size());
 
-        SequenceCommand seq = (SequenceCommand) Main.main.undoRedo.commands.iterator().next();
+        SequenceCommand seq = (SequenceCommand) MainApplication.undoRedo.commands.iterator().next();
         Collection<? extends OsmPrimitive> prims = seq.getParticipatingPrimitives();
         assertNotNull(prims);
         assertEquals(9, prims.size());
diff --git a/test/unit/org/openstreetmap/josm/actions/upload/ValidateUploadHookTest.java b/test/unit/org/openstreetmap/josm/actions/upload/ValidateUploadHookTest.java
index a127eb3..d44ff70 100644
--- a/test/unit/org/openstreetmap/josm/actions/upload/ValidateUploadHookTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/upload/ValidateUploadHookTest.java
@@ -1,6 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions.upload;
 
+import static org.junit.Assert.assertTrue;
+
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.APIDataSet;
@@ -18,13 +20,13 @@ public class ValidateUploadHookTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().timeout(20000);
+    public JOSMTestRules test = new JOSMTestRules().platform().fakeAPI().timeout(20000);
 
     /**
      * Test of {@link ValidateUploadHook#checkUpload} method.
      */
     @Test
     public void testCheckUpload() {
-        new ValidateUploadHook().checkUpload(new APIDataSet());
+        assertTrue(new ValidateUploadHook().checkUpload(new APIDataSet()));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/command/AddCommandTest.java b/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
index f7b1789..9c79939 100644
--- a/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
@@ -8,7 +8,6 @@ import java.util.ArrayList;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -16,6 +15,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -41,7 +41,7 @@ public class AddCommandTest {
     @Test
     public void testAdd() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
         assertArrayEquals(new Object[0], layer1.data.allPrimitives().toArray());
 
         Node osm = new Node(LatLon.ZERO);
@@ -60,8 +60,8 @@ public class AddCommandTest {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
         OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "l1", null);
 
-        Main.getLayerManager().addLayer(layer1);
-        Main.getLayerManager().addLayer(layer2);
+        MainApplication.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer2);
 
         Node osm = new Node(LatLon.ZERO);
         assertTrue(new AddCommand(layer2, osm).executeCommand());
@@ -76,7 +76,7 @@ public class AddCommandTest {
     @Test
     public void testUndo() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
         Node osm = new Node(LatLon.ZERO);
         layer1.data.addPrimitive(osm);
 
diff --git a/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java b/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
index aa1f4fa..2879a14 100644
--- a/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
@@ -13,7 +13,6 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -23,6 +22,7 @@ import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -48,7 +48,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testAdd() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
         assertTrue(new AddPrimitivesCommand(testData).executeCommand());
@@ -63,7 +63,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testAddSetSelection() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
         assertTrue(new AddPrimitivesCommand(testData, testData.subList(2, 3)).executeCommand());
@@ -82,8 +82,8 @@ public class AddPrimitivesCommandTest {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
         OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "l1", null);
 
-        Main.getLayerManager().addLayer(layer1);
-        Main.getLayerManager().addLayer(layer2);
+        MainApplication.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer2);
 
         List<PrimitiveData> testData = createTestData();
         assertTrue(new AddPrimitivesCommand(testData, testData.subList(2, 3), layer1).executeCommand());
@@ -101,7 +101,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testAddIgnoresExisting() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
         assertTrue(new AddPrimitivesCommand(testData).executeCommand());
@@ -121,7 +121,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testDescription() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
         NodeData data2 = createTestNode(7);
@@ -146,7 +146,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testUndo() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
 
@@ -181,7 +181,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testUndoIgnoresExisting() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
 
@@ -219,7 +219,7 @@ public class AddPrimitivesCommandTest {
     @Test
     public void testParticipatingPrimitives() {
         OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         List<PrimitiveData> testData = createTestData();
         AddPrimitivesCommand command = new AddPrimitivesCommand(testData);
diff --git a/test/unit/org/openstreetmap/josm/command/CommandTest.java b/test/unit/org/openstreetmap/josm/command/CommandTest.java
index 47b59e7..44d2bf8 100644
--- a/test/unit/org/openstreetmap/josm/command/CommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/CommandTest.java
@@ -11,7 +11,6 @@ import java.util.Collection;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -20,6 +19,7 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -140,7 +140,7 @@ public class CommandTest {
          */
         public CommandTestData() {
             layer = new OsmDataLayer(new DataSet(), "layer", null);
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
 
             existingNode = createNode(5);
             existingNode2 = createNode(6);
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
index 401873e..da83ed4 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
@@ -5,18 +5,20 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -25,24 +27,30 @@ import nl.jqno.equalsverifier.Warning;
  */
 public class ConflictAddCommandTest {
 
-    private static OsmDataLayer layer;
+    private OsmDataLayer layer;
 
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
         layer = new OsmDataLayer(new DataSet(), null, null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
     }
 
     /**
      * Cleanup test resources.
      */
-    @AfterClass
-    public static void tearDownAfterClass() {
-        Main.getLayerManager().removeLayer(layer);
+    @After
+    public void tearDown() {
+        MainApplication.getLayerManager().removeLayer(layer);
     }
 
     /**
@@ -50,15 +58,15 @@ public class ConflictAddCommandTest {
      */
     @Test
     public void testExecuteUndoCommand() {
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
         Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
-        ConflictAddCommand cmd = new ConflictAddCommand(layer, conflict);
+        ConflictAddCommand cmd = new ConflictAddCommand(ds, conflict);
         assertTrue(cmd.executeCommand());
-        assertFalse(layer.getConflicts().isEmpty());
-        assertTrue(layer.getConflicts().hasConflict(conflict));
+        assertFalse(ds.getConflicts().isEmpty());
+        assertTrue(ds.getConflicts().hasConflict(conflict));
         cmd.undoCommand();
-        assertFalse(layer.getConflicts().hasConflict(conflict));
-        assertTrue(layer.getConflicts().isEmpty());
+        assertFalse(ds.getConflicts().hasConflict(conflict));
+        assertTrue(ds.getConflicts().isEmpty());
     }
 
     /**
@@ -66,7 +74,7 @@ public class ConflictAddCommandTest {
      */
     @Test
     public void testGetDescriptionIcon() {
-        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
+        OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
         Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
         assertNotNull(new ConflictAddCommand(layer, conflict).getDescriptionIcon());
     }
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
index b15a3d9..8fac6d8 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
@@ -5,20 +5,22 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -27,24 +29,30 @@ import nl.jqno.equalsverifier.Warning;
  */
 public class CoordinateConflictResolveCommandTest {
 
-    private static OsmDataLayer layer;
+    private OsmDataLayer layer;
 
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
         layer = new OsmDataLayer(new DataSet(), null, null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
     }
 
     /**
      * Cleanup test resources.
      */
-    @AfterClass
-    public static void tearDownAfterClass() {
-        Main.getLayerManager().removeLayer(layer);
+    @After
+    public void tearDown() {
+        MainApplication.getLayerManager().removeLayer(layer);
     }
 
     private static Conflict<Node> createConflict() {
diff --git a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java b/test/unit/org/openstreetmap/josm/data/APIDataSetTest.java
similarity index 95%
rename from test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
rename to test/unit/org/openstreetmap/josm/data/APIDataSetTest.java
index 7bf63f8..e913f49 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
+++ b/test/unit/org/openstreetmap/josm/data/APIDataSetTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data.osm;
+package org.openstreetmap.josm.data;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -10,9 +10,14 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
-import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
+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.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/data/cache/HostLimitQueueTest.java b/test/unit/org/openstreetmap/josm/data/cache/HostLimitQueueTest.java
index bd35d19..faef279 100644
--- a/test/unit/org/openstreetmap/josm/data/cache/HostLimitQueueTest.java
+++ b/test/unit/org/openstreetmap/josm/data/cache/HostLimitQueueTest.java
@@ -13,8 +13,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -63,7 +63,7 @@ public class HostLimitQueueTest {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
-                Main.trace(e);
+                Logging.trace(e);
             } finally {
                 this.counter.incrementAndGet();
                 executionFinished();
diff --git a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
index 821a337..d64236e 100644
--- a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
+++ b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
@@ -13,9 +13,9 @@ import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.ICachedLoaderListener.LoadResult;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -120,7 +120,7 @@ public class JCSCachedTileLoaderJobTest {
                     listener.wait();
                 } catch (InterruptedException e1) {
                     // do nothing, still wait
-                    Main.trace(e1);
+                    Logging.trace(e1);
                 }
             }
         }
@@ -142,7 +142,7 @@ public class JCSCachedTileLoaderJobTest {
                     listener.wait();
                 } catch (InterruptedException e1) {
                     // do nothing, wait
-                    Main.trace(e1);
+                    Logging.trace(e1);
                 }
             }
         }
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
index c183407..33660ad 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
@@ -158,7 +158,7 @@ public class TemplatedWMSTileSourceTest {
         assertEquals(expected.getLat(), result.lat(), 1e-4);
         assertEquals(LatLon.normalizeLon(expected.getLon() - result.lon()), 0.0, 1e-4);
         LatLon tileCenter = new Bounds(result, getTileLatLon(source, x+1, y+1, z)).getCenter();
-        TileXY backwardsResult = source.latLonToTileXY(tileCenter.toCoordinate(), z);
+        TileXY backwardsResult = source.latLonToTileXY(CoordinateConversion.llToCoor(tileCenter), z);
         assertEquals(x, backwardsResult.getXIndex());
         assertEquals(y, backwardsResult.getYIndex());
     }
@@ -178,7 +178,7 @@ public class TemplatedWMSTileSourceTest {
                 Main.getProjection().getWorldBoundsLatLon().contains(location)
                 );
 
-        TileXY tileIndex = source.latLonToTileXY(location.toCoordinate(), z);
+        TileXY tileIndex = source.latLonToTileXY(CoordinateConversion.llToCoor(location), z);
 
         assertTrue("X index: " + tileIndex.getXIndex() + " greater than tileXmax: " + source.getTileXMax(z) + " at zoom: " + z,
                 tileIndex.getXIndex() <= source.getTileXMax(z));
@@ -212,7 +212,7 @@ public class TemplatedWMSTileSourceTest {
     }
 
     private LatLon getTileLatLon(TemplatedWMSTileSource source, int x, int y, int z) {
-        return new LatLon(source.tileXYToLatLon(x, y, z));
+        return CoordinateConversion.coorToLL(source.tileXYToLatLon(x, y, z));
     }
 
     private void verifyTileSquarness(TemplatedWMSTileSource source, int x, int y, int z) {
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
index 2f79ae8..900c0c6 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
@@ -128,7 +128,7 @@ public class WMTSTileSourceTest {
     }
 
     private void verifyBounds(Bounds bounds, WMTSTileSource testSource, int z, int x, int y) {
-        LatLon ret = new LatLon(testSource.tileXYToLatLon(x, y, z));
+        LatLon ret = CoordinateConversion.coorToLL(testSource.tileXYToLatLon(x, y, z));
         assertTrue(ret.toDisplayString() + " doesn't lie within: " + bounds.toString(), bounds.contains(ret));
         int tileXmax = testSource.getTileXMax(z);
         int tileYmax = testSource.getTileYMax(z);
@@ -302,7 +302,7 @@ public class WMTSTileSourceTest {
     }
 
     private void verifyTile(LatLon expected, WMTSTileSource source, int x, int y, int z) {
-        LatLon ll = new LatLon(source.tileXYToLatLon(x, y, z));
+        LatLon ll = CoordinateConversion.coorToLL(source.tileXYToLatLon(x, y, z));
         assertEquals("Latitude", expected.lat(), ll.lat(), 1e-05);
         assertEquals("Longitude", expected.lon(), ll.lon(), 1e-05);
     }
@@ -313,8 +313,8 @@ public class WMTSTileSourceTest {
 
     private void verifyMercatorTile(WMTSTileSource testSource, int x, int y, int z, int zoomOffset) {
         TemplatedTMSTileSource verifier = new TemplatedTMSTileSource(testImageryTMS);
-        LatLon result = new LatLon(testSource.tileXYToLatLon(x, y, z));
-        LatLon expected = new LatLon(verifier.tileXYToLatLon(x, y, z + zoomOffset));
+        LatLon result = CoordinateConversion.coorToLL(testSource.tileXYToLatLon(x, y, z));
+        LatLon expected = CoordinateConversion.coorToLL(verifier.tileXYToLatLon(x, y, z + zoomOffset));
         assertEquals("Longitude", LatLon.normalizeLon(expected.lon() - result.lon()), 0.0, 1e-04);
         assertEquals("Latitude", expected.lat(), result.lat(), 1e-04);
     }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/ChangesetDataSetTest.java b/test/unit/org/openstreetmap/josm/data/osm/ChangesetDataSetTest.java
index 036e199..e4e6497 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/ChangesetDataSetTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/ChangesetDataSetTest.java
@@ -12,7 +12,6 @@ import java.util.Set;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetDataSetEntry;
@@ -47,7 +46,7 @@ public class ChangesetDataSetTest {
             cds.getPrimitivesByModificationType(null);
             fail("Should have thrown an IllegalArgumentException as we gave a null argument.");
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             // Was expected
         }
 
diff --git a/test/unit/org/openstreetmap/josm/data/osm/ChangesetTest.java b/test/unit/org/openstreetmap/josm/data/osm/ChangesetTest.java
index b4f4718..7a2ed67 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/ChangesetTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/ChangesetTest.java
@@ -16,12 +16,11 @@ import java.util.Map;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -49,7 +48,7 @@ public class ChangesetTest {
             cs.setKeys(null);
             Assert.fail("Should have thrown an IllegalArgumentException as we gave a null argument.");
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             // Was expected
         }
 
@@ -75,7 +74,7 @@ public class ChangesetTest {
             cs.setKeys(keys);
             Assert.fail("Should have thrown an IllegalArgumentException as we gave a too long value.");
         } catch (IllegalArgumentException e) {
-            Main.trace(e);
+            Logging.trace(e);
             // Was expected
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java
similarity index 82%
rename from test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
rename to test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java
index d371eb7..e396ae1 100644
--- a/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java
@@ -1,6 +1,10 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui;
+package org.openstreetmap.josm.data.osm;
 
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
@@ -9,22 +13,18 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.data.osm.OsmUtils;
-import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.xml.sax.SAXException;
 
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -33,12 +33,17 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 public class DefaultNameFormatterTest {
 
     /**
-     * Setup tests
+     * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
+
+    /**
+     * HTTP mock.
+     */
+    @Rule
+    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort().usingFilesUnderDirectory(TestUtils.getTestDataRoot()));
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/9632">#9632</a>.
@@ -49,8 +54,13 @@ public class DefaultNameFormatterTest {
     @Test
     @SuppressFBWarnings(value = "ITA_INEFFICIENT_TO_ARRAY")
     public void testTicket9632() throws IllegalDataException, IOException, SAXException {
-        String source = "http://josm.openstreetmap.de/josmfile?page=Presets/BicycleJunction&preset";
-        TaggingPresets.addTaggingPresets(TaggingPresetReader.readAll(source, true));
+        String source = "presets/Presets_BicycleJunction-preset.xml";
+        wireMockRule.stubFor(get(urlEqualTo("/" + source))
+                .willReturn(aResponse()
+                    .withStatus(200)
+                    .withHeader("Content-Type", "text/xml")
+                    .withBodyFile(source)));
+        TaggingPresets.addTaggingPresets(TaggingPresetReader.readAll("http://localhost:" + wireMockRule.port() + "/" + source, true));
 
         Comparator<Relation> comparator = DefaultNameFormatter.getInstance().getRelationComparator();
 
diff --git a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
index b4351c1..730b8af 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
@@ -15,10 +15,10 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Filter.FilterPreferenceEntry;
+import org.openstreetmap.josm.data.osm.search.SearchMode;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -40,7 +40,7 @@ public class FilterTest {
     public JOSMTestRules test = new JOSMTestRules();
 
     @Test
-    public void testBasic() throws ParseError {
+    public void testBasic() throws SearchParseError {
         DataSet ds = new DataSet();
         Node n1 = new Node(LatLon.ZERO);
         n1.put("amenity", "parking");
diff --git a/test/unit/org/openstreetmap/josm/data/osm/event/SelectionEventManagerTest.java b/test/unit/org/openstreetmap/josm/data/osm/event/SelectionEventManagerTest.java
index 82ffc08..14c7a0e 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/event/SelectionEventManagerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/event/SelectionEventManagerTest.java
@@ -10,12 +10,12 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -60,8 +60,8 @@ public class SelectionEventManagerTest {
         // automatically adds the layers
         CommandTestDataWithRelation testData1 = new CommandTestDataWithRelation();
         CommandTestDataWithRelation testData2 = new CommandTestDataWithRelation();
-        Main.getLayerManager().setActiveLayer(testData1.layer);
-        assertEquals(testData1.layer, Main.getLayerManager().getEditLayer());
+        MainApplication.getLayerManager().setActiveLayer(testData1.layer);
+        assertEquals(testData1.layer, MainApplication.getLayerManager().getEditLayer());
 
         SelectionListener listener1 = new SelectionListener("IMMEDIATELY");
         SelectionListener listener2 = new SelectionListener("IN_EDT_CONSOLIDATED");
@@ -86,7 +86,7 @@ public class SelectionEventManagerTest {
         assertSelectionEquals(listeners, new HashSet<OsmPrimitive>(Arrays.asList(testData1.existingNode2)));
 
         // changing to other dataset should trigger a empty selection
-        Main.getLayerManager().setActiveLayer(testData2.layer);
+        MainApplication.getLayerManager().setActiveLayer(testData2.layer);
         assertSelectionEquals(listeners, new HashSet<OsmPrimitive>(Arrays.asList()));
 
         // This should not trigger anything, since the layer is not active any more.
diff --git a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
index 836bd61..0e67b57 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
@@ -11,10 +11,10 @@ import java.util.Map;
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.User;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryRelationTest.java b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryRelationTest.java
index 16e44a7..cabf685 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryRelationTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryRelationTest.java
@@ -10,10 +10,10 @@ import java.util.Map;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.data.osm.User;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
index df581b8..ca4a67b 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
@@ -12,11 +12,11 @@ import java.util.Map;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.User;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -82,7 +82,7 @@ public class HistoryWayTest {
             fail("expected expection of type " + IndexOutOfBoundsException.class.toString());
         } catch (IndexOutOfBoundsException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
 
         way.addNode(5);
diff --git a/test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java b/test/unit/org/openstreetmap/josm/data/osm/search/PushbackTokenizerTest.java
similarity index 85%
rename from test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java
rename to test/unit/org/openstreetmap/josm/data/osm/search/PushbackTokenizerTest.java
index 3368159..af20e6b 100644
--- a/test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/search/PushbackTokenizerTest.java
@@ -1,10 +1,10 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.search;
+package org.openstreetmap.josm.data.osm.search;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.actions.search.PushbackTokenizer.Token;
+import org.openstreetmap.josm.data.osm.search.PushbackTokenizer.Token;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java b/test/unit/org/openstreetmap/josm/data/osm/search/SearchCompilerTest.java
similarity index 84%
rename from test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
rename to test/unit/org/openstreetmap/josm/data/osm/search/SearchCompilerTest.java
index 17e6ba0..e40bfd1 100644
--- a/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/search/SearchCompilerTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.search;
+package org.openstreetmap.josm.data.osm.search;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -18,10 +18,6 @@ import java.util.Collections;
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ExactKeyValue;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
-import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -34,6 +30,8 @@ import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.ExactKeyValue;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetMenu;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
@@ -68,7 +66,7 @@ public class SearchCompilerTest {
         private final Match m;
         private final Match n;
 
-        private SearchContext(String state) throws ParseError {
+        private SearchContext(String state) throws SearchParseError {
             m = SearchCompiler.compile(state);
             n = SearchCompiler.compile('-' + state);
             ds.addPrimitive(n1);
@@ -106,10 +104,10 @@ public class SearchCompilerTest {
 
     /**
      * Search anything.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testAny() throws ParseError {
+    public void testAny() throws SearchParseError {
         final SearchCompiler.Match c = SearchCompiler.compile("foo");
         assertTrue(c.match(newPrimitive("foobar", "true")));
         assertTrue(c.match(newPrimitive("name", "hello-foo-xy")));
@@ -119,10 +117,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by equality key=value.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testEquals() throws ParseError {
+    public void testEquals() throws SearchParseError {
         final SearchCompiler.Match c = SearchCompiler.compile("foo=bar");
         assertFalse(c.match(newPrimitive("foobar", "true")));
         assertTrue(c.match(newPrimitive("foo", "bar")));
@@ -133,10 +131,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by comparison.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testCompare() throws ParseError {
+    public void testCompare() throws SearchParseError {
         final SearchCompiler.Match c1 = SearchCompiler.compile("start_date>1950");
         assertTrue(c1.match(newPrimitive("start_date", "1950-01-01")));
         assertTrue(c1.match(newPrimitive("start_date", "1960")));
@@ -173,10 +171,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by nth.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testNth() throws ParseError {
+    public void testNth() throws SearchParseError {
         final DataSet dataSet = new DataSet();
         final Way way = new Way();
         final Node node0 = new Node(new LatLon(1, 1));
@@ -201,19 +199,19 @@ public class SearchCompilerTest {
 
     /**
      * Search by negative nth.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testNthParseNegative() throws ParseError {
+    public void testNthParseNegative() throws SearchParseError {
         assertEquals("Nth{nth=-1, modulo=false}", SearchCompiler.compile("nth:-1").toString());
     }
 
     /**
      * Search by modified status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testModified() throws ParseError {
+    public void testModified() throws SearchParseError {
         SearchContext sc = new SearchContext("modified");
         // Not modified but new
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
@@ -246,10 +244,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by selected status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testSelected() throws ParseError {
+    public void testSelected() throws SearchParseError {
         SearchContext sc = new SearchContext("selected");
         // Not selected
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
@@ -266,10 +264,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by incomplete status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testIncomplete() throws ParseError {
+    public void testIncomplete() throws SearchParseError {
         SearchContext sc = new SearchContext("incomplete");
         // Not incomplete
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
@@ -292,10 +290,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by untagged status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testUntagged() throws ParseError {
+    public void testUntagged() throws SearchParseError {
         SearchContext sc = new SearchContext("untagged");
         // Untagged
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
@@ -312,10 +310,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by closed status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testClosed() throws ParseError {
+    public void testClosed() throws SearchParseError {
         SearchContext sc = new SearchContext("closed");
         // Closed
         sc.w1.addNode(sc.n1);
@@ -331,10 +329,10 @@ public class SearchCompilerTest {
 
     /**
      * Search by new status.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testNew() throws ParseError {
+    public void testNew() throws SearchParseError {
         SearchContext sc = new SearchContext("new");
         // New
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
@@ -351,10 +349,10 @@ public class SearchCompilerTest {
 
     /**
      * Search for node objects.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testTypeNode() throws ParseError {
+    public void testTypeNode() throws SearchParseError {
         final SearchContext sc = new SearchContext("type:node");
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
             sc.match(p, OsmPrimitiveType.NODE.equals(p.getType()));
@@ -363,10 +361,10 @@ public class SearchCompilerTest {
 
     /**
      * Search for way objects.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testTypeWay() throws ParseError {
+    public void testTypeWay() throws SearchParseError {
         final SearchContext sc = new SearchContext("type:way");
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
             sc.match(p, OsmPrimitiveType.WAY.equals(p.getType()));
@@ -375,10 +373,10 @@ public class SearchCompilerTest {
 
     /**
      * Search for relation objects.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testTypeRelation() throws ParseError {
+    public void testTypeRelation() throws SearchParseError {
         final SearchContext sc = new SearchContext("type:relation");
         for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
             sc.match(p, OsmPrimitiveType.RELATION.equals(p.getType()));
@@ -387,10 +385,10 @@ public class SearchCompilerTest {
 
     /**
      * Search for users.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testUser() throws ParseError {
+    public void testUser() throws SearchParseError {
         final SearchContext foobar = new SearchContext("user:foobar");
         foobar.n1.setUser(User.createLocalUser("foobar"));
         foobar.match(foobar.n1, true);
@@ -409,17 +407,17 @@ public class SearchCompilerTest {
         try {
             SearchCompiler.compile("foo type bar");
             fail();
-        } catch (ParseError parseError) {
+        } catch (SearchParseError parseError) {
             assertEquals("<html>Expecting <code>:</code> after <i>type</i>", parseError.getMessage());
         }
     }
 
     /**
      * Search for primitive timestamps.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testTimestamp() throws ParseError {
+    public void testTimestamp() throws SearchParseError {
         final Match search = SearchCompiler.compile("timestamp:2010/2011");
         final Node n1 = new Node();
         n1.setTimestamp(DateUtils.fromString("2010-01-22"));
@@ -430,10 +428,10 @@ public class SearchCompilerTest {
 
     /**
      * Tests the implementation of the Boolean logic.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testBooleanLogic() throws ParseError {
+    public void testBooleanLogic() throws SearchParseError {
         final SearchCompiler.Match c1 = SearchCompiler.compile("foo AND bar AND baz");
         assertTrue(c1.match(newPrimitive("foobar", "baz")));
         assertEquals("foo && bar && baz", c1.toString());
@@ -453,10 +451,10 @@ public class SearchCompilerTest {
 
     /**
      * Tests {@code buildSearchStringForTag}.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testBuildSearchStringForTag() throws ParseError {
+    public void testBuildSearchStringForTag() throws SearchParseError {
         final Tag tag1 = new Tag("foo=", "bar\"");
         final Tag tag2 = new Tag("foo=", "=bar");
         final String search1 = SearchCompiler.buildSearchStringForTag(tag1.getKey(), tag1.getValue());
@@ -471,10 +469,10 @@ public class SearchCompilerTest {
 
     /**
      * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/13870">Bug #13870</a>.
-     * @throws ParseError always
+     * @throws SearchParseError always
      */
-    @Test(expected = ParseError.class)
-    public void testPattern13870() throws ParseError {
+    @Test(expected = SearchParseError.class)
+    public void testPattern13870() throws SearchParseError {
         // https://bugs.openjdk.java.net/browse/JI-9044959
         SearchSetting setting = new SearchSetting();
         setting.regexSearch = true;
@@ -502,11 +500,11 @@ public class SearchCompilerTest {
 
     /**
      * Robustness test for preset searching. Ensures that the query 'preset:' is not accepted.
-     * @throws ParseError always
+     * @throws SearchParseError always
      * @since 12464
      */
-    @Test(expected = ParseError.class)
-    public void testPresetSearchMissingValue() throws ParseError {
+    @Test(expected = SearchParseError.class)
+    public void testPresetSearchMissingValue() throws SearchParseError {
         SearchSetting settings = new SearchSetting();
         settings.text = "preset:";
         settings.mapCSSSearch = false;
@@ -519,11 +517,11 @@ public class SearchCompilerTest {
     /**
      * Robustness test for preset searching. Validates that it is not possible to search for
      * non existing presets.
-     * @throws ParseError always
+     * @throws SearchParseError always
      * @since 12464
      */
-    @Test(expected = ParseError.class)
-    public void testPresetNotExist() throws ParseError {
+    @Test(expected = SearchParseError.class)
+    public void testPresetNotExist() throws SearchParseError {
         String testPresetName = "groupnamethatshouldnotexist/namethatshouldnotexist";
         SearchSetting settings = new SearchSetting();
         settings.text = "preset:" + testPresetName;
@@ -538,11 +536,11 @@ public class SearchCompilerTest {
     /**
      * Robustness tests for preset searching. Ensures that combined preset names (having more than
      * 1 word) must be enclosed with " .
-     * @throws ParseError always
+     * @throws SearchParseError always
      * @since 12464
      */
-    @Test(expected = ParseError.class)
-    public void testPresetMultipleWords() throws ParseError {
+    @Test(expected = SearchParseError.class)
+    public void testPresetMultipleWords() throws SearchParseError {
         TaggingPreset testPreset = new TaggingPreset();
         testPreset.name = "Test Combined Preset Name";
         testPreset.group = new TaggingPresetMenu();
@@ -561,15 +559,15 @@ public class SearchCompilerTest {
 
 
     /**
-     * Ensures that correct presets are stored in the {@link org.openstreetmap.josm.actions.search.SearchCompiler.Preset}
+     * Ensures that correct presets are stored in the {@link org.openstreetmap.josm.data.osm.search.SearchCompiler.Preset}
      * class against which the osm primitives are tested.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      * @throws NoSuchFieldException if there is no field called 'presets'
      * @throws IllegalAccessException if cannot access the field where all matching presets are stored
      * @since 12464
      */
     @Test
-    public void testPresetLookup() throws ParseError, NoSuchFieldException, IllegalAccessException {
+    public void testPresetLookup() throws SearchParseError, NoSuchFieldException, IllegalAccessException {
         TaggingPreset testPreset = new TaggingPreset();
         testPreset.name = "Test Preset Name";
         testPreset.group = new TaggingPresetMenu();
@@ -600,15 +598,15 @@ public class SearchCompilerTest {
 
     /**
      * Ensures that the wildcard search works and that correct presets are stored in
-     * the {@link org.openstreetmap.josm.actions.search.SearchCompiler.Preset} class against which
+     * the {@link org.openstreetmap.josm.data.osm.search.SearchCompiler.Preset} class against which
      * the osm primitives are tested.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      * @throws NoSuchFieldException if there is no field called 'presets'
      * @throws IllegalAccessException if cannot access the field where all matching presets are stored
      * @since 12464
      */
     @Test
-    public void testPresetLookupWildcard() throws ParseError, NoSuchFieldException, IllegalAccessException {
+    public void testPresetLookupWildcard() throws SearchParseError, NoSuchFieldException, IllegalAccessException {
         TaggingPresetMenu group = new TaggingPresetMenu();
         group.name = "TestPresetGroup";
 
@@ -649,11 +647,11 @@ public class SearchCompilerTest {
 
     /**
      * Ensures that correct primitives are matched against the specified preset.
-     * @throws ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      * @since 12464
      */
     @Test
-    public void testPreset() throws ParseError {
+    public void testPreset() throws SearchParseError {
         final String presetName = "Test Preset Name";
         final String presetGroupName = "Test Preset Group";
         final String key = "test_key1";
@@ -688,4 +686,3 @@ public class SearchCompilerTest {
         }
     }
 }
-
diff --git a/test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java b/test/unit/org/openstreetmap/josm/data/osm/search/SearchModeTest.java
similarity index 75%
rename from test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java
rename to test/unit/org/openstreetmap/josm/data/osm/search/SearchModeTest.java
index 89481a2..4d5a290 100644
--- a/test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/search/SearchModeTest.java
@@ -1,18 +1,17 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.search;
+package org.openstreetmap.josm.data.osm.search;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
- * Unit tests for class {@link SearchCompiler}.
+ * Unit tests for class {@link SearchMode}.
  */
-public class SearchActionTest {
+public class SearchModeTest {
 
     /**
      * Setup rules.
diff --git a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTest.java b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTest.java
index 1005cf4..2132719 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTest.java
@@ -29,8 +29,8 @@ import java.util.Locale;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.validation.routines.DomainValidator.ArrayType;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Tests for the DomainValidator.
@@ -341,28 +341,28 @@ public class DomainValidatorTest {
             fail("Expected IllegalArgumentException");
         } catch (IllegalArgumentException iae) {
             // expected
-            Main.debug(iae.getMessage());
+            Logging.debug(iae.getMessage());
         }
         try {
             DomainValidator.updateTLDOverride(ArrayType.GENERIC_RO, new String[]{"com"});
             fail("Expected IllegalArgumentException");
         } catch (IllegalArgumentException iae) {
             // expected
-            Main.debug(iae.getMessage());
+            Logging.debug(iae.getMessage());
         }
         try {
             DomainValidator.updateTLDOverride(ArrayType.INFRASTRUCTURE_RO, new String[]{"com"});
             fail("Expected IllegalArgumentException");
         } catch (IllegalArgumentException iae) {
             // expected
-            Main.debug(iae.getMessage());
+            Logging.debug(iae.getMessage());
         }
         try {
             DomainValidator.updateTLDOverride(ArrayType.LOCAL_RO, new String[]{"com"});
             fail("Expected IllegalArgumentException");
         } catch (IllegalArgumentException iae) {
             // expected
-            Main.debug(iae.getMessage());
+            Logging.debug(iae.getMessage());
         }
     }
 
@@ -430,7 +430,7 @@ public class DomainValidatorTest {
             fail("Expected IllegalStateException");
         } catch (IllegalStateException ise) {
             // expected
-            Main.debug(ise.getMessage());
+            Logging.debug(ise.getMessage());
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
index 338772e..fb0b826 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
@@ -47,7 +47,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -83,7 +83,7 @@ public class DomainValidatorTestIT {
         try {
             timestamp = download(txtFile, "http://data.iana.org/TLD/tlds-alpha-by-domain.txt", 0L);
         } catch (ConnectException e) {
-            Main.error(e);
+            Logging.error(e);
             // Try again one more time in case of random network issue
             timestamp = download(txtFile, "http://data.iana.org/TLD/tlds-alpha-by-domain.txt", 0L);
         }
diff --git a/test/unit/org/openstreetmap/josm/data/validation/routines/RegexValidatorTest.java b/test/unit/org/openstreetmap/josm/data/validation/routines/RegexValidatorTest.java
index 8a0fe73..71c1b3b 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/routines/RegexValidatorTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/routines/RegexValidatorTest.java
@@ -26,7 +26,7 @@ import java.util.Arrays;
 import java.util.regex.PatternSyntaxException;
 
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Test Case for RegexValidatorTest.
@@ -243,7 +243,7 @@ public class RegexValidatorTest {
             new RegexValidator(invalidRegex);
         } catch (PatternSyntaxException e) {
             // expected
-            Main.debug(e.getMessage());
+            Logging.debug(e.getMessage());
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/CoastlinesTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/CoastlinesTest.java
index c8ad1bf..59785d5 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/CoastlinesTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/CoastlinesTest.java
@@ -22,7 +22,7 @@ public class CoastlinesTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules();
 
     /**
      * Test all error cases manually created in coastline.osm.
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.java
index 45534e0..0914346 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.java
@@ -5,9 +5,11 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit test of {@link ConditionalKeys}.
@@ -18,12 +20,17 @@ public class ConditionalKeysTest {
 
     /**
      * Setup test
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules rule = new JOSMTestRules().presets();
+
+    /**
+     * Setup test
      * @throws Exception if an error occurs
      */
     @Before
     public void setUp() throws Exception {
-        JOSMFixture.createUnitTestFixture().init();
-        TaggingPresets.readFromPreferences();
         test.initialize();
     }
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
index 8a24d96..242a05a 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
@@ -18,7 +18,6 @@ import java.util.Set;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.ChangePropertyKeyCommand;
@@ -37,6 +36,7 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -184,7 +184,7 @@ public class MapCSSTagCheckerTest {
             assertionErrors.addAll(c.checkAsserts(schecks));
         }
         for (String msg : assertionErrors) {
-            Main.error(msg);
+            Logging.error(msg);
         }
         assertTrue("not all assertions included in the tests are met", assertionErrors.isEmpty());
     }
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java
index 3fb4521..af99b4e 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/MultipolygonTestTest.java
@@ -34,7 +34,7 @@ public class MultipolygonTestTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().projection().mapStyles().presets().main().platform();
 
     private static Way createUnclosedWay(String tags) {
         List<Node> nodes = new ArrayList<>();
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/SelfIntersectingWayTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/SelfIntersectingWayTest.java
index 9bacd92..8e5145f 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/SelfIntersectingWayTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/SelfIntersectingWayTest.java
@@ -24,7 +24,7 @@ public class SelfIntersectingWayTest {
      */
     @BeforeClass
     public static void setUp() throws Exception {
-        JOSMFixture.createUnitTestFixture().init(false);
+        JOSMFixture.createUnitTestFixture().init();
     }
 
     private static List<Node> createNodes() {
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
index 2253496..32fcf33 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
@@ -9,14 +9,15 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * JUnit Test of {@link TagChecker}.
@@ -26,11 +27,9 @@ public class TagCheckerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-        TaggingPresets.readFromPreferences();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules rule = new JOSMTestRules().presets();
 
     List<TestError> test(OsmPrimitive primitive) throws IOException {
         final TagChecker checker = new TagChecker();
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 0365ec5..b504fdb 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
@@ -16,10 +16,10 @@ import java.util.function.Function;
 import java.util.function.Predicate;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.io.OsmReader;
 
 /**
diff --git a/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java b/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java
index 324d0a2..897c0ce 100644
--- a/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/MainApplicationTest.java
@@ -2,26 +2,47 @@
 package org.openstreetmap.josm.gui;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
+import java.awt.BorderLayout;
+import java.awt.event.KeyEvent;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
+import java.net.MalformedURLException;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 
-import org.junit.BeforeClass;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.UIManager;
+
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.AboutAction;
 import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.SplashScreen.SplashProgressMonitor;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.plugins.PluginHandlerTestIT;
 import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.plugins.PluginListParseException;
 import org.openstreetmap.josm.plugins.PluginListParser;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Shortcut;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -33,9 +54,64 @@ public class MainApplicationTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().https().devAPI().timeout(20000);
+
+    /**
+     * Make sure {@link MainApplication#contentPanePrivate} is initialized.
+     */
+    public static void initContentPane() {
+        if (MainApplication.contentPanePrivate == null) {
+            MainApplication.contentPanePrivate = new JPanel(new BorderLayout());
+        }
+    }
+
+    /**
+     * Returns {@link MainApplication#contentPanePrivate} (not public).
+     * @return {@link MainApplication#contentPanePrivate}
+     */
+    public static JComponent getContentPane() {
+        return MainApplication.contentPanePrivate;
+    }
+
+    /**
+     * Make sure {@code MainApplication.mainPanel} is initialized.
+     * @param reAddListeners {@code true} to re-add listeners
+     */
+    @SuppressWarnings("deprecation")
+    public static void initMainPanel(boolean reAddListeners) {
+        if (MainApplication.mainPanel == null) {
+            MainApplication.mainPanel = new MainPanel(MainApplication.getLayerManager());
+        }
+        if (reAddListeners) {
+            MainApplication.mainPanel.reAddListeners();
+        }
+        if (Main.main != null) {
+            Main.main.panel = MainApplication.mainPanel;
+        }
+    }
+
+    /**
+     * Make sure {@code MainApplication.menu} is initialized.
+     */
+    @SuppressWarnings("deprecation")
+    public static void initMainMenu() {
+        MainApplication.menu = new MainMenu();
+        Main.main.menu = MainApplication.menu;
+    }
+
+    /**
+     * Make sure {@link MainApplication#toolbar} is initialized.
+     */
+    @SuppressWarnings("deprecation")
+    public static void initToolbar() {
+        if (MainApplication.toolbar == null) {
+            MainApplication.toolbar = new ToolbarPreferences();
+        }
+        if (Main.toolbar == null) {
+            Main.toolbar = MainApplication.getToolbar();
+        }
     }
 
     @SuppressFBWarnings(value = "DM_DEFAULT_ENCODING")
@@ -77,6 +153,19 @@ public class MainApplicationTest {
     }
 
     /**
+     * Unit test of {@link DownloadParamType#paramType} method.
+     */
+    @Test
+    public void testParamType() {
+        assertEquals(DownloadParamType.bounds, DownloadParamType.paramType("48.000,16.000,48.001,16.001"));
+        assertEquals(DownloadParamType.fileName, DownloadParamType.paramType("data.osm"));
+        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file:///home/foo/data.osm"));
+        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file://C:\\Users\\foo\\data.osm"));
+        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("http://somewhere.com/data.osm"));
+        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("https://somewhere.com/data.osm"));
+    }
+
+    /**
      * Test of {@link MainApplication#updateAndLoadEarlyPlugins} and {@link MainApplication#loadLatePlugins} methods.
      * @throws PluginListParseException if an error occurs
      */
@@ -109,8 +198,128 @@ public class MainApplicationTest {
         }
     }
 
+    /**
+     * Unit test of {@link MainApplication#setupUIManager}.
+     */
+    @Test
+    public void testSetupUIManager() {
+        MainApplication.setupUIManager();
+        assertEquals(Main.pref.get("laf", Main.platform.getDefaultStyle()), UIManager.getLookAndFeel().getClass().getCanonicalName());
+    }
+
     private static PluginInformation newPluginInformation(String plugin) throws PluginListParseException {
         return PluginListParser.createInfo(plugin+".jar", "https://svn.openstreetmap.org/applications/editors/josm/dist/"+plugin+".jar",
                 "");
     }
+
+    /**
+     * Unit test of {@link MainApplication#postConstructorProcessCmdLine} - empty case.
+     */
+    @Test
+    public void testPostConstructorProcessCmdLineEmpty() {
+        // Check the method accepts no arguments
+        MainApplication.postConstructorProcessCmdLine(new ProgramArguments(new String[0]));
+    }
+
+    private static void doTestPostConstructorProcessCmdLine(String download, String downloadGps, boolean gpx) {
+        assertNull(MainApplication.getLayerManager().getEditDataSet());
+        for (Future<?> f : MainApplication.postConstructorProcessCmdLine(new ProgramArguments(new String[]{
+                "--download=" + download,
+                "--downloadgps=" + downloadGps,
+                "--selection=type: node"}))) {
+            try {
+                f.get();
+            } catch (InterruptedException | ExecutionException e) {
+                Logging.error(e);
+            }
+        }
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
+        assertNotNull(ds);
+        assertFalse(ds.getSelected().isEmpty());
+        MainApplication.getLayerManager().removeLayer(MainApplication.getLayerManager().getEditLayer());
+        if (gpx) {
+            List<GpxLayer> gpxLayers = MainApplication.getLayerManager().getLayersOfType(GpxLayer.class);
+            assertEquals(1, gpxLayers.size());
+            MainApplication.getLayerManager().removeLayer(gpxLayers.iterator().next());
+        }
+    }
+
+    /**
+     * Unit test of {@link MainApplication#postConstructorProcessCmdLine} - nominal case with bounds.
+     * This test assumes the DEV API contains nodes around 0,0 and GPX tracks around London
+     */
+    @Test
+    public void testPostConstructorProcessCmdLineBounds() {
+        doTestPostConstructorProcessCmdLine(
+                "0.01,0.01,0.05,0.05",
+                "51.35,-0.4,51.60,0.2", true);
+    }
+
+    /**
+     * Unit test of {@link MainApplication#postConstructorProcessCmdLine} - nominal case with http/https URLs.
+     * This test assumes the DEV API contains nodes around 0,0 and GPX tracks around London
+     */
+    @Test
+    public void testPostConstructorProcessCmdLineHttpUrl() {
+        doTestPostConstructorProcessCmdLine(
+                "http://api06.dev.openstreetmap.org/api/0.6/map?bbox=0.01,0.01,0.05,0.05",
+                "https://master.apis.dev.openstreetmap.org/api/0.6/trackpoints?bbox=-0.4,51.35,0.2,51.6&page=0", true);
+    }
+
+    /**
+     * Unit test of {@link MainApplication#postConstructorProcessCmdLine} - nominal case with file URLs.
+     * @throws MalformedURLException if an error occurs
+     */
+    @Test
+    public void testPostConstructorProcessCmdLineFileUrl() throws MalformedURLException {
+        doTestPostConstructorProcessCmdLine(
+                Paths.get(TestUtils.getTestDataRoot() + "multipolygon.osm").toUri().toURL().toExternalForm(),
+                Paths.get(TestUtils.getTestDataRoot() + "minimal.gpx").toUri().toURL().toExternalForm(), false);
+    }
+
+    /**
+     * Unit test of {@link MainApplication#postConstructorProcessCmdLine} - nominal case with file names.
+     * @throws MalformedURLException if an error occurs
+     */
+    @Test
+    public void testPostConstructorProcessCmdLineFilename() throws MalformedURLException {
+        doTestPostConstructorProcessCmdLine(
+                Paths.get(TestUtils.getTestDataRoot() + "multipolygon.osm").toFile().getAbsolutePath(),
+                Paths.get(TestUtils.getTestDataRoot() + "minimal.gpx").toFile().getAbsolutePath(), false);
+    }
+
+    /**
+     * Unit test of {@link MainApplication#getRegisteredActionShortcut}.
+     */
+    @Test
+    public void testGetRegisteredActionShortcut() {
+        Shortcut noKeystroke = Shortcut.registerShortcut("no", "keystroke", 0, 0);
+        assertNull(noKeystroke.getKeyStroke());
+        assertNull(MainApplication.getRegisteredActionShortcut(noKeystroke));
+        Shortcut noAction = Shortcut.registerShortcut("foo", "bar", KeyEvent.VK_AMPERSAND, Shortcut.SHIFT);
+        assertNotNull(noAction.getKeyStroke());
+        assertNull(MainApplication.getRegisteredActionShortcut(noAction));
+        AboutAction about = new AboutAction();
+        assertEquals(about, MainApplication.getRegisteredActionShortcut(about.getShortcut()));
+    }
+
+    /**
+     * Unit test of {@link MainApplication#addMapFrameListener} and {@link MainApplication#removeMapFrameListener}.
+     */
+    @Test
+    public void testMapFrameListener() {
+        MapFrameListener listener = (o, n) -> { };
+        assertTrue(MainApplication.addMapFrameListener(listener));
+        assertFalse(MainApplication.addMapFrameListener(null));
+        assertTrue(MainApplication.removeMapFrameListener(listener));
+        assertFalse(MainApplication.removeMapFrameListener(null));
+    }
+
+    /**
+     * Unit test of {@link DownloadParamType} enum.
+     */
+    @Test
+    public void testEnumDownloadParamType() {
+        TestUtils.superficialEnumCodeCoverage(DownloadParamType.class);
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java b/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java
index 4a21c58..10ed729 100644
--- a/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/MapScalerTest.java
@@ -7,12 +7,15 @@ import static org.junit.Assert.assertNull;
 
 import java.awt.Color;
 
-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.TestUtils;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.MapScaler.AccessibleMapScaler;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link MapScaler} class.
@@ -22,18 +25,18 @@ public class MapScalerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Unit test of {@link MapScaler#MapScaler}.
      */
     @Test
     public void testMapScaler() {
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
         assertEquals(Color.WHITE, MapScaler.getColor());
-        MapScaler ms = new MapScaler(Main.map.mapView);
+        MapScaler ms = new MapScaler(MainApplication.getMap().mapView);
         assertEquals("/MapView/Scaler", ms.helpTopic());
         ms.paint(TestUtils.newGraphics());
         AccessibleMapScaler ams = (AccessibleMapScaler) ms.getAccessibleContext();
diff --git a/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java b/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
index 01454f7..e4d040e 100644
--- a/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
@@ -13,12 +13,14 @@ import javax.swing.JTable;
 import javax.swing.table.TableCellRenderer;
 
 import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
 import org.reflections.Reflections;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Checks if all classes implementing the {@link TableCellRenderer} interface do
  * accept a null value as second parameter for
@@ -46,10 +48,9 @@ public class TableCellRendererTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createFunctionalTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform().main();
 
     /**
      * Unit test of all table cell renderers against null values.
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
index 1280fef..39bd980 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
@@ -19,11 +19,11 @@ import javax.swing.DefaultListSelectionModel;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.testutils.DatasetFactory;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -359,7 +359,7 @@ public class NodeListMergeModelTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
 
         try {
@@ -367,7 +367,7 @@ public class NodeListMergeModelTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
index 6ce97de..8066f6c 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
@@ -7,10 +7,10 @@ import static org.junit.Assert.fail;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -93,7 +93,7 @@ public class TagMergeItemTest {
             fail("expected IllegalArgumentException not thrown");
         } catch (IllegalArgumentException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
@@ -140,7 +140,7 @@ public class TagMergeItemTest {
             fail("expected IllegalStateException");
         } catch (IllegalStateException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 
@@ -153,7 +153,7 @@ public class TagMergeItemTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            Main.trace(e);
+            Logging.trace(e);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandlerTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandlerTest.java
index eb63f75..eae677e 100644
--- a/test/unit/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandlerTest.java
@@ -27,7 +27,7 @@ public class OsmTransferHandlerTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().projection().commands();
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection().main().platform();
 
     private final OsmTransferHandler transferHandler = new OsmTransferHandler();
 
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java
index 2204456..8e73207 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java
@@ -6,10 +6,11 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -25,7 +26,7 @@ public class CommandStackDialogTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Unit test of {@link CommandStackDialog} class - empty case.
@@ -45,27 +46,28 @@ public class CommandStackDialogTest {
     @Test
     public void testCommandStackDialogNotEmpty() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         try {
             Command cmd1 = TestUtils.newCommand();
             Command cmd2 = TestUtils.newCommand();
-            Main.main.undoRedo.add(cmd1);
-            Main.main.undoRedo.add(cmd2);
-            Main.main.undoRedo.undo(1);
+            MainApplication.undoRedo.add(cmd1);
+            MainApplication.undoRedo.add(cmd2);
+            MainApplication.undoRedo.undo(1);
 
-            assertFalse(Main.main.undoRedo.commands.isEmpty());
-            assertFalse(Main.main.undoRedo.redoCommands.isEmpty());
+            assertFalse(MainApplication.undoRedo.commands.isEmpty());
+            assertFalse(MainApplication.undoRedo.redoCommands.isEmpty());
 
+            MapFrame map = MainApplication.getMap();
             CommandStackDialog dlg = new CommandStackDialog();
-            Main.map.addToggleDialog(dlg);
+            map.addToggleDialog(dlg);
             dlg.unfurlDialog();
             assertTrue(dlg.isVisible());
-            Main.map.removeToggleDialog(dlg);
+            map.removeToggleDialog(dlg);
             dlg.hideDialog();
             assertFalse(dlg.isVisible());
         } finally {
-            Main.main.undoRedo.clean();
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.undoRedo.clean();
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java
index ebf30b1..f0ddcef 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/ConflictDialogTest.java
@@ -9,13 +9,15 @@ import java.awt.image.BufferedImage;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 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.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.ConflictDialog.ConflictPainter;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -30,7 +32,7 @@ public class ConflictDialogTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Unit test of {@link ConflictDialog#ConflictDialog}.
@@ -53,7 +55,9 @@ public class ConflictDialogTest {
      */
     @Test
     public void testConflictPainter() {
-        ConflictPainter cp = new ConflictPainter(Main.map.mapView, new BufferedImage(800, 600, BufferedImage.TYPE_3BYTE_BGR).createGraphics());
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
+        ConflictPainter cp = new ConflictPainter(MainApplication.getMap().mapView,
+                new BufferedImage(800, 600, BufferedImage.TYPE_3BYTE_BGR).createGraphics());
         Node n1 = new Node(1, 1);
         n1.setCoor(new LatLon(1, 1));
         Node n2 = new Node(2, 1);
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
index ad698e2..ced1aad 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
@@ -10,11 +10,11 @@ import javax.swing.JPanel;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -30,7 +30,7 @@ public class InspectPrimitiveDialogTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection().mapStyles();
 
     /**
      * Unit test of {@link InspectPrimitiveDialog#genericMonospacePanel}.
@@ -46,8 +46,7 @@ public class InspectPrimitiveDialogTest {
     @Test
     public void testBuildDataText() {
         DataSet ds = new DataSet();
-        OsmDataLayer layer = new OsmDataLayer(ds, "", null);
-        assertEquals("", InspectPrimitiveDialog.buildDataText(layer, new ArrayList<>(ds.allPrimitives())));
+        assertEquals("", InspectPrimitiveDialog.buildDataText(ds, new ArrayList<>(ds.allPrimitives())));
         Node n = new Node(LatLon.ZERO);
         n.setOsmId(1, 1);
         ds.addPrimitive(n);
@@ -60,7 +59,7 @@ public class InspectPrimitiveDialogTest {
                 "  In changeset: 0\n" +
                 "  Coordinates: 0.0, 0.0\n" +
                 "  Coordinates (projected): 0.0, -7.081154551613622E-10\n" +
-                "\n", InspectPrimitiveDialog.buildDataText(layer, new ArrayList<>(ds.allPrimitives())));
+                "\n", InspectPrimitiveDialog.buildDataText(ds, new ArrayList<>(ds.allPrimitives())));
     }
 
     /**
@@ -112,7 +111,7 @@ public class InspectPrimitiveDialogTest {
         // CHECKSTYLE.ON: LineLength
 
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals("", InspectPrimitiveDialog.buildMapPaintText());
             Node n = new Node(LatLon.ZERO);
             n.setUser(User.getAnonymous());
@@ -127,7 +126,7 @@ public class InspectPrimitiveDialogTest {
             assertEquals(baseText + baseText + "The 2 selected objects have identical style caches.",
                     InspectPrimitiveDialog.buildMapPaintText().replaceAll("@(\\p{XDigit})+", ""));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java
index c851829..532184e 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/MapPaintDialogTest.java
@@ -3,7 +3,9 @@ package org.openstreetmap.josm.gui.dialogs;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -18,13 +20,14 @@ public class MapPaintDialogTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Unit test of {@link MapPaintDialog.InfoAction} class.
      */
     @Test
     public void testInfoAction() {
-        Main.map.mapPaintDialog.new InfoAction().actionPerformed(null);
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
+        MainApplication.getMap().mapPaintDialog.new InfoAction().actionPerformed(null);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/MinimapDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/MinimapDialogTest.java
index f3ebc4a..36eee87 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/MinimapDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/MinimapDialogTest.java
@@ -20,7 +20,7 @@ public class MinimapDialogTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform();
 
     /**
      * Unit test of {@link MinimapDialog} class.
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/layer/DuplicateActionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/layer/DuplicateActionTest.java
index 5181e0e..f449fa6 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/layer/DuplicateActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/layer/DuplicateActionTest.java
@@ -10,8 +10,8 @@ import java.io.InputStream;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -37,11 +37,11 @@ public class DuplicateActionTest {
     public void testTicket4539() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(4539, "josm_error_#4539.osm.zip")) {
             OsmDataLayer layer = new OsmDataLayer(OsmReader.parseDataSet(is, null), null, null);
-            OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
+            OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             assertNull(editLayer);
             try {
                 new DuplicateAction(layer, null).actionPerformed(null);
-                editLayer = Main.getLayerManager().getEditLayer();
+                editLayer = MainApplication.getLayerManager().getEditLayer();
                 assertNotNull(editLayer);
                 assertFalse(layer.equals(editLayer));
                 assertEquals(layer.data.getNodes().size(), editLayer.data.getNodes().size());
@@ -50,7 +50,7 @@ public class DuplicateActionTest {
             } finally {
                 // Ensure we clean the place before leaving, even if test fails.
                 if (editLayer != null) {
-                    Main.getLayerManager().removeLayer(editLayer);
+                    MainApplication.getLayerManager().removeLayer(editLayer);
                 }
             }
         }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java
index a66f50a..2ed0e7f 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java
@@ -5,11 +5,9 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-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.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
@@ -27,15 +25,7 @@ public class LayerVisibilityActionTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().projection().platform();
-
-    /**
-     * Somewhere deep down the dependencies we need shortcuts
-     */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection().platform().main();
 
     /**
      * Unit test of {@link LayerVisibilityAction} class.
@@ -43,7 +33,7 @@ public class LayerVisibilityActionTest {
     @Test
     public void testLayerVisibilityAction() {
         TMSLayer layer = TMSLayerTest.createTmsLayer();
-        LayerListModel model = new LayerListDialog(Main.getLayerManager()) {
+        LayerListModel model = new LayerListDialog(MainApplication.getLayerManager()) {
             @Override
             protected void registerInWindowMenu() {
                 // ignore
@@ -53,7 +43,7 @@ public class LayerVisibilityActionTest {
         action.updateEnabledState();
         assertFalse(action.isEnabled());
 
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         model.setSelectedLayer(layer);
         action.updateEnabledState();
         assertTrue(action.isEnabled());
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
index d4c292b..72749f8 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
@@ -10,9 +10,9 @@ import java.util.Collections;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.osm.search.SearchSetting;
 import org.openstreetmap.josm.data.preferences.CollectionProperty;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -33,10 +33,10 @@ public class RecentTagCollectionTest {
     /**
      * Performs various tests on a {@link RecentTagCollection}.
      *
-     * @throws SearchCompiler.ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testVarious() throws SearchCompiler.ParseError {
+    public void testVarious() throws SearchParseError {
         final RecentTagCollection recentTags = new RecentTagCollection(2);
         assertTrue(recentTags.isEmpty());
 
@@ -62,7 +62,7 @@ public class RecentTagCollectionTest {
         recentTags.add(foo);
         recentTags.add(bar);
         recentTags.add(baz);
-        final SearchAction.SearchSetting searchSetting = new SearchAction.SearchSetting();
+        final SearchSetting searchSetting = new SearchSetting();
         recentTags.ignoreTag(baz, searchSetting);
         recentTags.ignoreTag(new Tag("something", "else"), searchSetting);
         assertEquals("\"name\"=\"baz\" OR \"something\"=\"else\"", searchSetting.text);
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java
new file mode 100644
index 0000000..f82a88a
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java
@@ -0,0 +1,68 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit tests of {@link TagEditHelper} class.
+ */
+public class TagEditHelperTest {
+
+    /**
+     * Setup tests
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    private static TagEditHelper newTagEditHelper() {
+        DefaultTableModel propertyData = new DefaultTableModel();
+        JTable tagTable = new JTable(propertyData);
+        Map<String, Map<String, Integer>> valueCount = new HashMap<>();
+        return new TagEditHelper(tagTable, propertyData, valueCount);
+    }
+
+    /**
+     * Checks that autocompleting list items are sorted correctly.
+     */
+    @Test
+    public void testAcItemComparator() {
+        List<AutoCompletionListItem> list = new ArrayList<>();
+        list.add(new AutoCompletionListItem("Bing Sat"));
+        list.add(new AutoCompletionListItem("survey"));
+        list.add(new AutoCompletionListItem("Bing"));
+        list.add(new AutoCompletionListItem("digitalglobe"));
+        list.add(new AutoCompletionListItem("bing"));
+        list.add(new AutoCompletionListItem("DigitalGlobe"));
+        list.sort(TagEditHelper.DEFAULT_AC_ITEM_COMPARATOR);
+        assertEquals(Arrays.asList("Bing", "bing", "Bing Sat", "digitalglobe", "DigitalGlobe", "survey"),
+                list.stream().map(AutoCompletionListItem::getValue).collect(Collectors.toList()));
+    }
+
+    /**
+     * Unit test of {@link TagEditHelper#containsDataKey}.
+     */
+    @Test
+    public void testContainsDataKey() {
+        assertFalse(newTagEditHelper().containsDataKey("foo"));
+        // TODO: complete test
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
index b11bb2f..a260f71 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
@@ -40,7 +40,7 @@ public class GenericRelationEditorTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().main();
 
     /**
      * Returns a new relation editor for unit tests.
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableTest.java
index 5b4a662..a16b15e 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableTest.java
@@ -9,12 +9,12 @@ import java.awt.event.MouseListener;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable.DoubleClickAdapter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -49,7 +49,7 @@ public class SelectionTableTest {
         // Add a new layer as active one
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             // Constructs models and table
             MemberTableModel memberTableModel = new MemberTableModel(r, layer, null);
             memberTableModel.populate(r);
@@ -84,7 +84,7 @@ public class SelectionTableTest {
                 memberTableModel.unregister();
             }
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
index bc5a1ab..d60ffb2 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
@@ -26,7 +26,7 @@ public class RelationEditorActionsTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().main();
 
     /**
      * Check that all actions do not crash.
diff --git a/test/unit/org/openstreetmap/josm/data/CustomConfiguratorTest.java b/test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java
similarity index 97%
rename from test/unit/org/openstreetmap/josm/data/CustomConfiguratorTest.java
rename to test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java
index 108c233..2ad8735 100644
--- a/test/unit/org/openstreetmap/josm/data/CustomConfiguratorTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/CustomConfiguratorTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data;
+package org.openstreetmap.josm.gui.io;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -17,7 +17,8 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.data.CustomConfigurator.PreferencesUtils;
+import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.PreferencesUtils;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
 
diff --git a/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java b/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java
index 3293493..a1ae286 100644
--- a/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/UploadDialogTest.java
@@ -9,6 +9,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java b/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java
index 15f3338..199032a 100644
--- a/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java
@@ -8,6 +8,7 @@ import org.junit.Test;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanelTest.java b/test/unit/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanelTest.java
index 8062da1..950f42b 100644
--- a/test/unit/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanelTest.java
@@ -5,6 +5,8 @@ import static org.junit.Assert.assertEquals;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.io.UploadStrategy;
+import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/io/JpgImporterTest.java b/test/unit/org/openstreetmap/josm/gui/io/importexport/JpgImporterTest.java
similarity index 96%
rename from test/unit/org/openstreetmap/josm/io/JpgImporterTest.java
rename to test/unit/org/openstreetmap/josm/gui/io/importexport/JpgImporterTest.java
index 2cea3ec..d242c33 100644
--- a/test/unit/org/openstreetmap/josm/io/JpgImporterTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/importexport/JpgImporterTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java b/test/unit/org/openstreetmap/josm/gui/io/importexport/NoteImporterTest.java
similarity index 80%
rename from test/unit/org/openstreetmap/josm/io/NoteImporterTest.java
rename to test/unit/org/openstreetmap/josm/gui/io/importexport/NoteImporterTest.java
index 90f0905..aacc137 100644
--- a/test/unit/org/openstreetmap/josm/io/NoteImporterTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/io/importexport/NoteImporterTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
+package org.openstreetmap.josm.gui.io.importexport;
 
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -8,8 +8,8 @@ import java.io.File;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 /**
@@ -28,8 +28,8 @@ public class NoteImporterTest {
      */
     @Test
     public void testTicket12531() {
-        Main.getLayerManager().resetState();
-        assertNull(Main.map);
+        MainApplication.getLayerManager().resetState();
+        assertNull(MainApplication.getMap());
         assertTrue(new NoteImporter().importDataHandleExceptions(
                 new File(TestUtils.getRegressionDataFile(12531, "notes.osn")), null));
     }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayerTest.java
index 7ae7bec..2173513 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayerTest.java
@@ -28,6 +28,8 @@ import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.TileSourceInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.TileLoaderFactory;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -43,7 +45,7 @@ public class AbstractTileSourceLayerTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().projection().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
 
     private static final class TMSTileStubSource extends AbstractTMSTileSource {
         private TMSTileStubSource() {
@@ -146,6 +148,7 @@ public class AbstractTileSourceLayerTest {
      */
     @Before
     public void setUp() {
+        MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
         testLayer = new TileSourceStubLayer();
         testLayer.addInvalidationListener(l -> invalidated.set(true));
     }
diff --git a/test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java b/test/unit/org/openstreetmap/josm/gui/layer/AutosaveTaskTest.java
similarity index 95%
rename from test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java
rename to test/unit/org/openstreetmap/josm/gui/layer/AutosaveTaskTest.java
index d630a1e..10b6e13 100644
--- a/test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/AutosaveTaskTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data;
+package org.openstreetmap.josm.gui.layer;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -21,12 +21,11 @@ import java.util.List;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.AutosaveTask.AutosaveLayerInfo;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.AutosaveTask.AutosaveLayerInfo;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -130,7 +129,7 @@ public class AutosaveTaskTest {
     @Test
     public void testAutosaveIgnoresUnmodifiedLayer() {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "OsmData", null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         try {
             task.schedule();
             assertEquals(0, countFiles());
@@ -166,7 +165,7 @@ public class AutosaveTaskTest {
     private void runAutosaveTaskSeveralTimes(int times) {
         DataSet data = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(data, "OsmData", null);
-        Main.getLayerManager().addLayer(layer);
+        MainApplication.getLayerManager().addLayer(layer);
         try {
             task.schedule();
             assertEquals(0, countFiles());
@@ -206,7 +205,7 @@ public class AutosaveTaskTest {
     public void testAutosaveHandlesDupplicateNames() {
         DataSet data1 = new DataSet();
         OsmDataLayer layer1 = new OsmDataLayer(data1, "OsmData", null);
-        Main.getLayerManager().addLayer(layer1);
+        MainApplication.getLayerManager().addLayer(layer1);
 
         DataSet data2 = new DataSet();
         OsmDataLayer layer2 = new OsmDataLayer(data2, "OsmData", null);
@@ -215,7 +214,7 @@ public class AutosaveTaskTest {
             task.schedule();
             assertEquals(0, countFiles());
             // also test adding layer later
-            Main.getLayerManager().addLayer(layer2);
+            MainApplication.getLayerManager().addLayer(layer2);
 
             data1.addPrimitive(new Node(new LatLon(10, 10)));
             data2.addPrimitive(new Node(new LatLon(10, 10)));
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
index 0056f12..7561fd3 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
@@ -14,20 +14,22 @@ import java.util.TimeZone;
 
 import javax.swing.JScrollPane;
 
-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.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.io.GpxReaderTest;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.xml.sax.SAXException;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Unit tests of {@link GpxLayer} class.
  */
@@ -36,10 +38,9 @@ public class GpxLayerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection().i18n();
 
     private static String getHtml(GpxLayer layer) {
         return ((HtmlPanel) ((JScrollPane) layer.getInfoComponent()).getViewport().getView()).getEditorPane().getText();
@@ -144,7 +145,7 @@ public class GpxLayerTest {
                      "          \n" +
                      "        </td>\n" +
                      "        <td>\n" +
-                     "          1/3/16 12:59 PM - 1:00 PM (0:00)\n" +
+                     "          1/3/16 11:59 AM - 12:00 PM (0:00)\n" +
                      "        </td>\n" +
                      "        <td>\n" +
                      "          12.0 m\n" +
@@ -207,11 +208,11 @@ public class GpxLayerTest {
     public void testPaint() throws Exception {
         GpxLayer layer = getMinimalGpxLayer();
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertTrue(layer.getMenuEntries().length > 0);
-            layer.paint(TestUtils.newGraphics(), Main.map.mapView, layer.data.getMetaBounds());
+            layer.paint(TestUtils.newGraphics(), MainApplication.getMap().mapView, layer.data.getMetaBounds());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java
index 7de4d8e..deaa050 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/MarkerLayerTest.java
@@ -6,8 +6,10 @@ import static org.junit.Assert.assertNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -23,7 +25,7 @@ public class MarkerLayerTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().commands();
+    public JOSMTestRules test = new JOSMTestRules().main().projection();
 
     /**
      * Unit test of {@code Main.map.mapView.playHeadMarker}.
@@ -31,13 +33,17 @@ public class MarkerLayerTest {
     @Test
     public void testPlayHeadMarker() {
         try {
+            MainApplication.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "", null));
+            MapFrame map = MainApplication.getMap();
             MarkerLayer layer = new MarkerLayer(new GpxData(), null, null, null);
-            assertNull(Main.map.mapView.playHeadMarker);
-            Main.getLayerManager().addLayer(layer);
-            assertNotNull(Main.map.mapView.playHeadMarker);
-            Main.getLayerManager().removeLayer(layer);
+            assertNull(map.mapView.playHeadMarker);
+            MainApplication.getLayerManager().addLayer(layer);
+            assertNotNull(map.mapView.playHeadMarker);
+            MainApplication.getLayerManager().removeLayer(layer);
         } finally {
-            Main.map.mapView.playHeadMarker = null;
+            if (MainApplication.isDisplayingMapView()) {
+                MainApplication.getMap().mapView.playHeadMarker = null;
+            }
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
index 2a2f0b9..707f03c 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
@@ -11,7 +11,6 @@ import java.io.File;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -21,6 +20,7 @@ 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.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * Unit tests of {@link OsmDataLayer} class.
@@ -43,7 +43,7 @@ public class OsmDataLayerTest {
         DataSet ds = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             int n = OsmDataLayer.PROPERTY_RECENT_RELATIONS_NUMBER.get();
             assertTrue(n > 0);
             for (int i = 0; i < 2*n; i++) {
@@ -59,7 +59,7 @@ public class OsmDataLayerTest {
             }
             assertTrue(layer.getRecentRelations().isEmpty());
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -133,11 +133,11 @@ public class OsmDataLayerTest {
         fillDataSet(ds);
         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertTrue(layer.getMenuEntries().length > 0);
-            layer.paint(TestUtils.newGraphics(), Main.map.mapView, new Bounds(LatLon.ZERO));
+            layer.paint(TestUtils.newGraphics(), MainApplication.getMap().mapView, new Bounds(LatLon.ZERO));
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java
index 21d2004..94409d3 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/TMSLayerTest.java
@@ -3,12 +3,14 @@ package org.openstreetmap.josm.gui.layer;
 
 import static org.junit.Assert.assertEquals;
 
-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.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link TMSLayer} class.
@@ -18,10 +20,9 @@ public class TMSLayerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Creates a new TMS layer.
@@ -49,11 +50,11 @@ public class TMSLayerTest {
 
     private static void test(ImageryType expected, TMSLayer layer) {
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertEquals(expected, layer.getInfo().getImageryType());
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/ValidatorLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/ValidatorLayerTest.java
index 9d9ff2f..afb4efe 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/ValidatorLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/ValidatorLayerTest.java
@@ -9,7 +9,7 @@ import static org.junit.Assert.assertTrue;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 
 /**
  * Unit tests of {@link ValidatorLayer} class.
@@ -32,7 +32,7 @@ public class ValidatorLayerTest {
         ValidatorLayer layer = null;
         try {
             layer = new ValidatorLayer();
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             assertFalse(layer.isMergable(null));
             assertNotNull(layer.getIcon());
             assertEquals("<html>No validation errors</html>", layer.getToolTipText());
@@ -41,7 +41,7 @@ public class ValidatorLayerTest {
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
             if (layer != null) {
-                Main.getLayerManager().removeLayer(layer);
+                MainApplication.getLayerManager().removeLayer(layer);
             }
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java
index ab88b5d..645b0f8 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/WMSLayerTest.java
@@ -3,12 +3,14 @@ package org.openstreetmap.josm.gui.layer;
 
 import static org.junit.Assert.assertEquals;
 
-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.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link WMSLayer} class.
@@ -18,10 +20,9 @@ public class WMSLayerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().platform().projection();
 
     /**
      * Unit test of {@link WMSLayer#WMSLayer}.
@@ -29,12 +30,12 @@ public class WMSLayerTest {
     @Test
     public void testWMSLayer() {
         WMSLayer wms = new WMSLayer(new ImageryInfo("test wms", "http://localhost"));
-        Main.getLayerManager().addLayer(wms);
+        MainApplication.getLayerManager().addLayer(wms);
         try {
             assertEquals(ImageryType.WMS, wms.getInfo().getImageryType());
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(wms);
+            MainApplication.getLayerManager().removeLayer(wms);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/WMTSLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/WMTSLayerTest.java
index 7d55aa7..d6ee271 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/WMTSLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/WMTSLayerTest.java
@@ -3,11 +3,13 @@ package org.openstreetmap.josm.gui.layer;
 
 import static org.junit.Assert.assertEquals;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link WMTSLayer} class.
@@ -17,10 +19,9 @@ public class WMTSLayerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     /**
      * Unit test of {@link WMTSLayer#WMTSLayer}.
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
index ac189b7..a8fd52a 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
@@ -11,9 +11,9 @@ import java.util.List;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer.Loader;
@@ -44,13 +44,13 @@ public class GeoImageLayerTest {
             GpxReader reader = new GpxReader(in);
             assertTrue(reader.parse(true));
             GpxLayer gpxLayer = new GpxLayer(reader.getGpxData());
-            Main.getLayerManager().addLayer(gpxLayer);
-            assertEquals(1, Main.getLayerManager().getLayers().size());
+            MainApplication.getLayerManager().addLayer(gpxLayer);
+            assertEquals(1, MainApplication.getLayerManager().getLayers().size());
             new Loader(
                     Collections.singleton(new File(TestUtils.getRegressionDataFile(12255, "G0016941.JPG"))),
                     gpxLayer).run();
-            assertEquals(2, Main.getLayerManager().getLayers().size());
-            GeoImageLayer layer = Main.getLayerManager().getLayersOfType(GeoImageLayer.class).iterator().next();
+            assertEquals(2, MainApplication.getLayerManager().getLayers().size());
+            GeoImageLayer layer = MainApplication.getLayerManager().getLayersOfType(GeoImageLayer.class).iterator().next();
             assertEquals(gpxLayer, layer.getGpxLayer());
             List<ImageEntry> images = layer.getImages();
             assertEquals(1, images.size());
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java b/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java
index 15542c2..fd7623c 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java
@@ -1,10 +1,12 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.layer.gpx;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.gui.layer.GpxLayerTest;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link ChooseTrackVisibilityAction} class.
@@ -14,10 +16,9 @@ public class ChooseTrackVisibilityActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
 
     /**
      * Test action.
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java b/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java
index 1f3d8fd..ae5de13 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java
@@ -6,17 +6,19 @@ import static org.junit.Assert.assertNotNull;
 
 import java.io.IOException;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.TagMap;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.io.GpxReaderTest;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.xml.sax.SAXException;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Unit tests of {@link ConvertToDataLayerAction} class.
  */
@@ -25,10 +27,9 @@ public class ConvertToDataLayerActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     /**
      * Tests a conversion from a GPX marker layer to a OSM dataset
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java b/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java
index f80b8fc..d850b35 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java
@@ -6,10 +6,10 @@ import static org.junit.Assert.assertNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.GpxReaderTest;
@@ -32,13 +32,13 @@ public class DownloadAlongTrackActionTest {
     private static PleaseWaitRunnable createTask(String file) throws Exception {
         final OsmDataLayer layer = new OsmDataLayer(new DataSet(), DownloadAlongTrackActionTest.class.getName(), null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             // Perform action
             final GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + file);
             return new DownloadAlongTrackAction(gpx).createTask();
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackActionTest.java b/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackActionTest.java
index 3a54301..369780f 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackActionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackActionTest.java
@@ -6,15 +6,17 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-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.gpx.GpxData;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayerTest;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.gpx.DownloadWmsAlongTrackAction.PrecacheWmsTask;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link DownloadWmsAlongTrackAction} class.
@@ -24,10 +26,9 @@ public class DownloadWmsAlongTrackActionTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform().main().projection();
 
     /**
      * Test action without layer.
@@ -46,7 +47,7 @@ public class DownloadWmsAlongTrackActionTest {
         // Create new TMS layer and clear cache
         TMSLayer layer = new TMSLayer(new ImageryInfo("OSM TMS", "https://a.tile.openstreetmap.org/{zoom}/{x}/{y}.png", "tms", null, null));
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             TMSLayer.getCache().clear();
             assertTrue(TMSLayer.getCache().getMatching(".*").isEmpty());
             // Perform action
@@ -57,7 +58,7 @@ public class DownloadWmsAlongTrackActionTest {
             assertFalse(TMSLayer.getCache().getMatching(".*").isEmpty());
         } finally {
             // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
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 d63dcbc..aed725e 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
@@ -8,17 +8,19 @@ import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;
 
-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.TestUtils;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.io.GpxReaderTest;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.xml.sax.SAXException;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Unit tests of {@link GpxDrawHelper} class.
  */
@@ -27,10 +29,9 @@ public class GpxDrawHelperTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/12312">#12312</a>.
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java
index a5596eb..5251a79 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java
@@ -8,15 +8,19 @@ import static org.junit.Assert.assertTrue;
 import java.awt.Color;
 import java.util.Arrays;
 
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 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.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link MarkerLayer} class.
@@ -26,9 +30,15 @@ public class MarkerLayerTest {
     /**
      * Setup tests
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main().platform().preferences().projection();
+
+    /**
+     * Setup tests
+     */
+    @Before
+    public void setUp() {
         Main.pref.put("marker.traceaudio", true);
     }
 
@@ -39,6 +49,7 @@ public class MarkerLayerTest {
     public void testMarkerLayer() {
         assertEquals(Color.magenta, MarkerLayer.getGenericColor());
         MarkerLayer layer = new MarkerLayer(new GpxData(), "foo", null, null);
+        MainApplication.getLayerManager().addLayer(layer);
 
         assertEquals("foo", layer.getName());
         assertEquals(Color.magenta, layer.getColorProperty().get());
diff --git a/test/unit/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUITest.java b/test/unit/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUITest.java
index b9bef99..5d536e4 100644
--- a/test/unit/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUITest.java
+++ b/test/unit/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUITest.java
@@ -5,7 +5,7 @@ import static org.junit.Assert.assertNotNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -27,6 +27,6 @@ public class FullyAutomaticAuthorizationUITest {
      */
     @Test
     public void testFullyAutomaticAuthorizationUI() {
-        assertNotNull(new FullyAutomaticAuthorizationUI("", Main.worker));
+        assertNotNull(new FullyAutomaticAuthorizationUI("", MainApplication.worker));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUITest.java b/test/unit/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUITest.java
index bdd618a..1c1e6e4 100644
--- a/test/unit/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUITest.java
+++ b/test/unit/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUITest.java
@@ -5,7 +5,7 @@ import static org.junit.Assert.assertNotNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -27,6 +27,6 @@ public class ManualAuthorizationUITest {
      */
     @Test
     public void testManualAuthorizationUI() {
-        assertNotNull(new ManualAuthorizationUI("", Main.worker));
+        assertNotNull(new ManualAuthorizationUI("", MainApplication.worker));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUITest.java b/test/unit/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUITest.java
index ad2dc08..beba991 100644
--- a/test/unit/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUITest.java
+++ b/test/unit/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUITest.java
@@ -5,7 +5,7 @@ import static org.junit.Assert.assertNotNull;
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -27,6 +27,6 @@ public class SemiAutomaticAuthorizationUITest {
      */
     @Test
     public void testSemiAutomaticAuthorizationUI() {
-        assertNotNull(new SemiAutomaticAuthorizationUI("", Main.worker));
+        assertNotNull(new SemiAutomaticAuthorizationUI("", MainApplication.worker));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java
index 69e0fec..fb99b24 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTest.java
@@ -3,8 +3,13 @@ package org.openstreetmap.josm.gui.preferences.imagery;
 
 import static org.junit.Assert.assertNotNull;
 
+import java.io.File;
+import java.util.Arrays;
+
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.gui.preferences.PreferencesTestUtils;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -20,7 +25,7 @@ public class ImageryPreferenceTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().platform().commands();
+    public JOSMTestRules test = new JOSMTestRules().platform().main();
 
     /**
      * Unit test of {@link ImageryPreference#ImageryPreference}.
@@ -35,6 +40,8 @@ public class ImageryPreferenceTest {
      */
     @Test
     public void testAddGui() {
+        String fileUrl = new File(TestUtils.getTestDataRoot()+"__files/imagery/maps.xml").toURI().toString();
+        Main.pref.putCollection("imagery.layers.sites", Arrays.asList(fileUrl));
         PreferencesTestUtils.doTestPreferenceSettingAddGui(new ImageryPreference.Factory(), null);
     }
 }
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 f3c3240..942822b 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
@@ -14,6 +14,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.Timeout;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference;
 import org.openstreetmap.josm.gui.mappaint.StyleKeys;
@@ -22,7 +23,6 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.Instruction;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Instruction.AssignmentInstruction;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSRule;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
index 6109ca6..9212e0c 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
@@ -17,10 +17,11 @@ import org.junit.Test;
 import org.junit.rules.Timeout;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -66,7 +67,7 @@ public class TaggingPresetPreferenceTestIT {
                 testPresets(allMessages, source);
             } catch (IOException e) {
                 try {
-                    Main.warn(e);
+                    Logging.warn(e);
                     // try again in case of temporary network error
                     testPresets(allMessages, source);
                 } catch (SAXException | IOException e1) {
@@ -94,7 +95,7 @@ public class TaggingPresetPreferenceTestIT {
     private static void testPresets(Set<String> allMessages, ExtendedSourceEntry source) throws SAXException, IOException {
         Collection<TaggingPreset> presets = TaggingPresetReader.readAll(source.url, true);
         assertFalse(presets.isEmpty());
-        Collection<String> errorsAndWarnings = Main.getLastErrorAndWarnings();
+        Collection<String> errorsAndWarnings = Logging.getLastErrorAndWarnings();
         boolean error = false;
         for (String message : errorsAndWarnings) {
             if (message.contains(TaggingPreset.PRESET_ICON_ERROR_MSG_PREFIX)) {
@@ -107,7 +108,7 @@ public class TaggingPresetPreferenceTestIT {
         }
         System.out.println(error ? " => KO" : " => OK");
         if (error) {
-            Main.clearLastErrorAndWarnings();
+            Logging.clearLastErrorAndWarnings();
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java b/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java
index 8486b5e..00373fb 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java
@@ -11,9 +11,9 @@ import java.util.Collection;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.ParseResult;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
 
 /**
  * Integration tests of {@link ValidatorTagCheckerRulesPreference} class.
diff --git a/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java b/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java
index aea6c68..f0bb568 100644
--- a/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java
@@ -9,11 +9,12 @@ import java.util.Collections;
 
 import javax.swing.JPanel;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link PresetLink} class.
@@ -23,11 +24,9 @@ public class PresetLinkTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-        TaggingPresets.readFromPreferences();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules rule = new JOSMTestRules().presets();
 
     /**
      * Unit test for {@link PresetLink#addToPanel}.
diff --git a/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java b/test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java
similarity index 97%
rename from test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java
rename to test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java
index 802f81a..af04bf8 100644
--- a/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/util/WindowGeometryTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools;
+package org.openstreetmap.josm.gui.util;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -16,8 +16,8 @@ import javax.swing.JPanel;
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.util.WindowGeometry.WindowGeometryException;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
-import org.openstreetmap.josm.tools.WindowGeometry.WindowGeometryException;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
diff --git a/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java b/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java
index 8bd3657..143075b 100644
--- a/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java
@@ -1,20 +1,27 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
 
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.util.regex.Matcher;
 
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.io.OverpassDownloadReader.OverpassOutpoutFormat;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
 import org.openstreetmap.josm.tools.Utils;
 
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -27,11 +34,27 @@ public class OverpassDownloadReaderTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().timeout(15000);
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    /**
+     * HTTP mock.
+     */
+    @Rule
+    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort().usingFilesUnderDirectory(TestUtils.getTestDataRoot()));
+
+    private static final String NOMINATIM_URL_PATH = "/search?format=xml&q=";
+
+    /**
+     * Setup test.
+     */
+    @Before
+    public void setUp() {
+        NameFinder.NOMINATIM_URL_PROP.put("http://localhost:" + wireMockRule.port() + NOMINATIM_URL_PATH);
+    }
 
     private String getExpandedQuery(String search) {
         final String query = OverpassTurboQueryWizard.getInstance().constructQuery(search);
-        final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), OverpassServerPreference.getOverpassServer(), query)
+        final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), null, query)
                 .getRequestForBbox(1, 2, 3, 4)
                 .substring("interpreter?data=".length());
         return Utils.decodeUrl(request);
@@ -54,11 +77,20 @@ public class OverpassDownloadReaderTest {
                 "out meta;", query);
     }
 
+    private void stubNominatim(String query) {
+        wireMockRule.stubFor(get(urlEqualTo(NOMINATIM_URL_PATH + query))
+                .willReturn(aResponse()
+                    .withStatus(200)
+                    .withHeader("Content-Type", "text/xml")
+                    .withBodyFile("nominatim/" + query + ".xml")));
+    }
+
     /**
      * Tests evaluating the extended query feature {@code geocodeArea}.
      */
     @Test
     public void testGeocodeArea() {
+        stubNominatim("London");
         final String query = getExpandedQuery("amenity=drinking_water in London");
         assertEquals("" +
                 "[out:xml][timeout:25];\n" +
@@ -77,6 +109,7 @@ public class OverpassDownloadReaderTest {
      */
     @Test
     public void testGeocodeUnknownArea() {
+        stubNominatim("foo-bar-baz-does-not-exist");
         final String query = OverpassDownloadReader.expandExtendedQueries("{{geocodeArea:foo-bar-baz-does-not-exist}}");
         assertEquals("// Failed to evaluate {{geocodeArea:foo-bar-baz-does-not-exist}}\n", query);
     }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
index 6c2431a..bf28732 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
@@ -27,6 +27,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -62,7 +63,7 @@ public class RemoteControlTest {
             Files.deleteIfExists(Paths.get(
                     RemoteControl.getRemoteControlDir()).resolve(RemoteControlHttpsServer.KEYSTORE_FILENAME));
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandlerTest.java
index e3fb551..1db9098 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandlerTest.java
@@ -1,15 +1,16 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link AddNodeHandler} class.
@@ -25,10 +26,9 @@ public class AddNodeHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     private static AddNodeHandler newHandler(String url) throws RequestHandlerBadRequestException {
         AddNodeHandler req = new AddNodeHandler();
@@ -58,10 +58,10 @@ public class AddNodeHandlerTest {
         thrown.expectMessage("NumberFormatException (empty String)");
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             newHandler(null).handle();
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -95,10 +95,10 @@ public class AddNodeHandlerTest {
     public void testNominalRequest() throws Exception {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             newHandler("https://localhost?lat=0&lon=0").handle();
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandlerTest.java
index 0fd302a..0eb9794 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandlerTest.java
@@ -1,15 +1,16 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link AddWayHandler} class.
@@ -25,10 +26,9 @@ public class AddWayHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     private static AddWayHandler newHandler(String url) throws RequestHandlerBadRequestException {
         AddWayHandler req = new AddWayHandler();
@@ -58,10 +58,10 @@ public class AddWayHandlerTest {
         thrown.expectMessage("Invalid coordinates: []");
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             newHandler(null).handle();
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 
@@ -95,10 +95,10 @@ public class AddWayHandlerTest {
     public void testNominalRequest() throws Exception {
         OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
         try {
-            Main.getLayerManager().addLayer(layer);
+            MainApplication.getLayerManager().addLayer(layer);
             newHandler("https://localhost?way=0,0;1,1").handle();
         } finally {
-            Main.getLayerManager().removeLayer(layer);
+            MainApplication.getLayerManager().removeLayer(layer);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandlerTest.java
index 2aa4e60..9333ae7 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandlerTest.java
@@ -1,12 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link ImageryHandler} class.
@@ -22,10 +23,9 @@ public class ImageryHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform();
 
     private static ImageryHandler newHandler(String url) throws RequestHandlerBadRequestException {
         ImageryHandler req = new ImageryHandler();
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
index 1043019..d49a8e0 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
@@ -5,17 +5,18 @@ import static org.junit.Assert.assertEquals;
 
 import java.io.File;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Utils;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * Unit tests of {@link ImportHandler} class.
  */
@@ -30,10 +31,9 @@ public class ImportHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().main();
 
     private static ImportHandler newHandler(String url) throws RequestHandlerBadRequestException {
         ImportHandler req = new ImportHandler();
@@ -95,8 +95,8 @@ public class ImportHandlerTest {
         try {
             newHandler("https://localhost?url=" + Utils.encodeUrl(url)).handle();
         } finally {
-            for (OsmDataLayer layer : Main.getLayerManager().getLayersOfType(OsmDataLayer.class)) {
-                Main.getLayerManager().removeLayer(layer);
+            for (OsmDataLayer layer : MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class)) {
+                MainApplication.getLayerManager().removeLayer(layer);
             }
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandlerTest.java
index 2f92840..197e935 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandlerTest.java
@@ -1,12 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link LoadAndZoomHandler} class.
@@ -22,10 +23,9 @@ public class LoadAndZoomHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     private static LoadAndZoomHandler newHandler(String url) throws RequestHandlerBadRequestException {
         LoadAndZoomHandler req = new LoadAndZoomHandler();
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandlerTest.java
index 1f8ed54..07f976f 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandlerTest.java
@@ -1,12 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link LoadObjectHandler} class.
@@ -22,10 +23,9 @@ public class LoadObjectHandlerTest {
     /**
      * Setup test.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     private static LoadObjectHandler newHandler(String url) throws RequestHandlerBadRequestException {
         LoadObjectHandler req = new LoadObjectHandler();
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
index e3aadf0..e66f885 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
@@ -7,15 +7,26 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link RequestHandler} class.
  */
 public class RequestHandlerTest {
 
+    /**
+     * Setup test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
     Map<String, String> getRequestParameter(String url) throws RequestHandlerBadRequestException {
         final RequestHandler req = new RequestHandler() {
             @Override
diff --git a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
index 284fea6..c6d5f56 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
@@ -9,11 +9,10 @@ import java.io.File;
 import java.io.IOException;
 import java.util.List;
 
-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.TestUtils;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -22,6 +21,9 @@ import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for Session reading.
@@ -31,10 +33,9 @@ public class SessionReaderTest {
     /**
      * Setup tests.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform().projection();
 
     private static String getSessionDataDir() {
         return TestUtils.getTestDataRoot() + "/sessions";
@@ -138,9 +139,9 @@ public class SessionReaderTest {
      */
     @Test
     public void testReadNotes() throws IOException, IllegalDataException {
-        if (Main.isDisplayingMapView()) {
-            for (NoteLayer nl : Main.getLayerManager().getLayersOfType(NoteLayer.class)) {
-                Main.getLayerManager().removeLayer(nl);
+        if (MainApplication.isDisplayingMapView()) {
+            for (NoteLayer nl : MainApplication.getLayerManager().getLayersOfType(NoteLayer.class)) {
+                MainApplication.getLayerManager().removeLayer(nl);
             }
         }
         final List<Layer> layers = testRead("notes.joz");
diff --git a/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java b/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
index d52890e..28c8b7c 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
@@ -9,9 +9,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
@@ -20,6 +20,7 @@ import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.notes.Note;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -27,10 +28,12 @@ import org.openstreetmap.josm.gui.layer.NoteLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
-import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
+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;
+
 /**
  * Unit tests for Session writing.
  */
@@ -83,10 +86,16 @@ public class SessionWriterTest {
     /**
      * Setup tests.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-        ProjectionPreference.setProjection();
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().platform().projection().main();
+
+    /**
+     * Setup tests.
+     */
+    @Before
+    public void setUp() {
+        MainApplication.getLayerManager().addLayer(createOsmLayer());
     }
 
     private void testWrite(List<Layer> layers, final boolean zip) throws IOException {
diff --git a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
index 396ab1d..0f12e53 100644
--- a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
+++ b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -69,7 +70,7 @@ public class PluginHandlerTestIT {
         assertFalse(info.getClass().getName().isEmpty());
 
         // Filter deprecated and unmaintained ones, or those not responsive enough to match our continuous integration needs
-        List<String> uncooperatingPlugins = Arrays.asList("ebdirigo", "scoutsigns");
+        List<String> uncooperatingPlugins = Arrays.asList("ebdirigo", "scoutsigns", "josm-config");
         Set<String> deprecatedPlugins = PluginHandler.getDeprecatedAndUnmaintainedPlugins();
         for (Iterator<PluginInformation> it = plugins.iterator(); it.hasNext();) {
             PluginInformation pi = it.next();
@@ -97,13 +98,13 @@ public class PluginHandlerTestIT {
         List<PluginInformation> loadedPlugins = PluginHandler.getPlugins();
         for (int i = 0; i < 2; i++) {
             OsmDataLayer layer = new OsmDataLayer(new DataSet(), "Layer "+i, null);
-            testPlugin(Main.getLayerManager()::addLayer, layer, layerExceptions, loadedPlugins);
-            testPlugin(Main.getLayerManager()::removeLayer, layer, layerExceptions, loadedPlugins);
+            testPlugin(MainApplication.getLayerManager()::addLayer, layer, layerExceptions, loadedPlugins);
+            testPlugin(MainApplication.getLayerManager()::removeLayer, layer, layerExceptions, loadedPlugins);
         }
         for (int i = 0; i < 2; i++) {
             GpxLayer layer = new GpxLayer(new GpxData());
-            testPlugin(Main.getLayerManager()::addLayer, layer, layerExceptions, loadedPlugins);
-            testPlugin(Main.getLayerManager()::removeLayer, layer, layerExceptions, loadedPlugins);
+            testPlugin(MainApplication.getLayerManager()::addLayer, layer, layerExceptions, loadedPlugins);
+            testPlugin(MainApplication.getLayerManager()::removeLayer, layer, layerExceptions, loadedPlugins);
         }
 
         MapUtils.debugPrint(System.out, null, loadingExceptions);
diff --git a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
index 341aebe..919f28b 100644
--- a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
+++ b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
@@ -16,7 +16,9 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.data.projection.Projections;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.CertificateAmendment;
 import org.openstreetmap.josm.io.OsmApi;
@@ -26,6 +28,7 @@ import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MemoryManagerTest;
+import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 import org.openstreetmap.josm.tools.Territories;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -50,8 +53,11 @@ public class JOSMTestRules implements TestRule {
     private boolean commands;
     private boolean allowMemoryManagerLeaks;
     private boolean useMapStyles;
+    private boolean usePresets;
     private boolean useHttps;
     private boolean territories;
+    private boolean rlTraffic;
+    private boolean main;
 
     /**
      * Disable the default timeout for this test. Use with care.
@@ -186,6 +192,17 @@ public class JOSMTestRules implements TestRule {
     }
 
     /**
+     * Use presets in this test.
+     * @return this instance, for easy chaining
+     * @since 12568
+     */
+    public JOSMTestRules presets() {
+        preferences();
+        usePresets = true;
+        return this;
+    }
+
+    /**
      * Use boundaries dataset in this test.
      * @return this instance, for easy chaining
      * @since 12545
@@ -195,6 +212,29 @@ public class JOSMTestRules implements TestRule {
         return this;
     }
 
+    /**
+     * Use right and lefthand traffic dataset in this test.
+     * @return this instance, for easy chaining
+     * @since 12556
+     */
+    public JOSMTestRules rlTraffic() {
+        territories();
+        rlTraffic = true;
+        return this;
+    }
+
+    /**
+     * Use the {@link Main#main}, {@code Main.contentPanePrivate}, {@code Main.mainPanel},
+     *         {@link Main#menu}, {@link Main#toolbar} global variables in this test.
+     * @return this instance, for easy chaining
+     * @since 12557
+     */
+    public JOSMTestRules main() {
+        platform();
+        main = true;
+        return this;
+    }
+
     @Override
     public Statement apply(Statement base, Description description) {
         Statement statement = base;
@@ -287,13 +327,30 @@ public class JOSMTestRules implements TestRule {
             MapPaintStyles.readFromPreferences();
         }
 
+        if (usePresets) {
+            // Reset the presets.
+            TaggingPresets.readFromPreferences();
+        }
+
         if (territories) {
             Territories.initialize();
         }
 
+        if (rlTraffic) {
+            RightAndLefthandTraffic.initialize();
+        }
+
         if (commands) {
             // TODO: Implement a more selective version of this once Main is restructured.
             JOSMFixture.createUnitTestFixture().init(true);
+        } else {
+            if (main) {
+                new MainApplication();
+                JOSMFixture.initContentPane();
+                JOSMFixture.initMainPanel(true);
+                JOSMFixture.initToolbar();
+                JOSMFixture.initMainMenu();
+            }
         }
     }
 
@@ -317,7 +374,7 @@ public class JOSMTestRules implements TestRule {
     public static void cleanLayerEnvironment() {
         // Get the instance before cleaning - this ensures that it is initialized.
         SelectionEventManager eventManager = SelectionEventManager.getInstance();
-        Main.getLayerManager().resetState();
+        MainApplication.getLayerManager().resetState();
         eventManager.resetState();
     }
 
diff --git a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
index afe559e..2ad2840 100644
--- a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
@@ -103,8 +103,8 @@ public class ExifReaderTest {
         LatLon latlon = ExifReader.readLatLon(directionSampleFile);
         assertNotNull(latlon);
         DecimalFormat f = new DecimalFormat("00.0");
-        assertEquals("51°46'"+f.format(43.0)+"\"", LatLon.dms(latlon.lat()));
-        assertEquals("8°21'"+f.format(56.3)+"\"", LatLon.dms(latlon.lon()));
+        assertEquals("51°46'"+f.format(43.0)+"\"", LatLon.degreesMinutesSeconds(latlon.lat()));
+        assertEquals("8°21'"+f.format(56.3)+"\"", LatLon.degreesMinutesSeconds(latlon.lon()));
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
index 04235e4..1581e3c 100644
--- a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
@@ -8,11 +8,11 @@ import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
diff --git a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
index 51d1cfa..2244274 100644
--- a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.tools;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -98,7 +97,7 @@ public class OsmUrlToBoundsTest {
                 bounds = OsmUrlToBounds.parse(item.url);
             } catch (IllegalArgumentException e) {
                 // Ignore. check if bounds is null after
-                Main.trace(e);
+                Logging.trace(e);
             }
             Assert.assertEquals(item.url, item.bounds, bounds);
         }
diff --git a/test/unit/org/openstreetmap/josm/tools/PlatformHookOsxTest.java b/test/unit/org/openstreetmap/josm/tools/PlatformHookOsxTest.java
index d6a8c47..f3dcbae 100644
--- a/test/unit/org/openstreetmap/josm/tools/PlatformHookOsxTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/PlatformHookOsxTest.java
@@ -36,7 +36,7 @@ public class PlatformHookOsxTest {
      */
     @Test
     public void testStartupHook() {
-        hook.startupHook();
+        hook.startupHook((a,b,c,d) -> System.out.println("callback"));
     }
 
     /**
@@ -69,7 +69,7 @@ public class PlatformHookOsxTest {
                 hook.openUrl(Main.getJOSMWebsite());
                 fail("Expected IOException");
             } catch (IOException e) {
-                Main.info(e.getMessage());
+                Logging.info(e.getMessage());
             }
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/tools/PlatformHookWindowsTest.java b/test/unit/org/openstreetmap/josm/tools/PlatformHookWindowsTest.java
index 6813e96..c1ce65d 100644
--- a/test/unit/org/openstreetmap/josm/tools/PlatformHookWindowsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/PlatformHookWindowsTest.java
@@ -43,7 +43,7 @@ public class PlatformHookWindowsTest {
      */
     @Test
     public void testStartupHook() {
-        hook.startupHook();
+        hook.startupHook((a,b,c,d) -> System.out.println("callback"));
     }
 
     /**
@@ -59,7 +59,7 @@ public class PlatformHookWindowsTest {
                 PlatformHookWindows.getRootKeystore();
                 fail("Expected KeyStoreException");
             } catch (KeyStoreException e) {
-                Main.info(e.getMessage());
+                Logging.info(e.getMessage());
             }
         }
     }
@@ -77,7 +77,7 @@ public class PlatformHookWindowsTest {
                 PlatformHookWindows.removeInsecureCertificates();
                 fail("Expected KeyStoreException");
             } catch (KeyStoreException e) {
-                Main.info(e.getMessage());
+                Logging.info(e.getMessage());
             }
         }
     }
@@ -98,7 +98,7 @@ public class PlatformHookWindowsTest {
                 hook.setupHttpsCertificate(RemoteControlHttpsServer.ENTRY_ALIAS, trustedCert);
                 fail("Expected KeyStoreException");
             } catch (KeyStoreException e) {
-                Main.info(e.getMessage());
+                Logging.info(e.getMessage());
             }
         }
     }
@@ -124,7 +124,7 @@ public class PlatformHookWindowsTest {
                 hook.openUrl(Main.getJOSMWebsite());
                 fail("Expected IOException");
             } catch (IOException e) {
-                Main.info(e.getMessage());
+                Logging.info(e.getMessage());
             }
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java b/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java
index 349c0c1..1f5a6e2 100644
--- a/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java
@@ -20,7 +20,7 @@ public class RightAndLefthandTrafficTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules rules = new JOSMTestRules().platform().projection().commands();
+    public JOSMTestRules rules = new JOSMTestRules().platform().projection().rlTraffic();
 
     /**
      * Tests that {@code RightAndLefthandTraffic} satisfies utility class criterias.
diff --git a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
index 4d09f52..34c3330 100644
--- a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
@@ -224,6 +224,9 @@ public class UtilsTest {
     public void testGetJavaUpdate() {
         String javaVersion = System.getProperty("java.version");
         try {
+            System.setProperty("java.version", "1.8.0");
+            assertEquals(0, Utils.getJavaUpdate());
+
             System.setProperty("java.version", "1.8.0_131");
             assertEquals(131, Utils.getJavaUpdate());
 
@@ -264,6 +267,11 @@ public class UtilsTest {
 
             System.setProperty("java.runtime.version", "9.1.2+62");
             assertEquals(62, Utils.getJavaBuild());
+
+            // IBM version example
+            System.setProperty("java.runtime.version", "pwa6480sr4fp7-20170627_02 (SR4 FP7)");
+            assertEquals(0, Utils.getJavaBuild());
+
         } finally {
             System.setProperty("java.runtime.version", javaVersion);
         }
diff --git a/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanelTest.java b/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanelTest.java
index d12c213..8d88ee8 100644
--- a/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanelTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanelTest.java
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertNotNull;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.gui.bugreport.BugReportSettingsPanel;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
diff --git a/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java b/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java
index 267020d..8fd3529 100644
--- a/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.gui.bugreport.DebugTextDisplay;
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
diff --git a/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateParserTest.java b/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateParserTest.java
index 78e8422..8c32844 100644
--- a/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateParserTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateParserTest.java
@@ -8,11 +8,12 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
+import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.testutils.DatasetFactory;
 import org.unitils.reflectionassert.ReflectionAssert;
 
@@ -78,17 +79,17 @@ public class TemplateParserTest {
         ReflectionAssert.assertReflectionEquals(condition, parser.parse());
     }
 
-    private static Match compile(String expression) throws SearchCompiler.ParseError {
+    private static Match compile(String expression) throws SearchParseError {
         return SearchCompiler.compile(expression);
     }
 
     /**
      * Test to parse a search expression condition.
      * @throws ParseError if the template cannot be parsed
-     * @throws SearchCompiler.ParseError if an error has been encountered while compiling
+     * @throws SearchParseError if an error has been encountered while compiling
      */
     @Test
-    public void testConditionSearchExpression() throws ParseError, SearchCompiler.ParseError {
+    public void testConditionSearchExpression() throws ParseError, SearchParseError {
         TemplateParser parser = new TemplateParser("?{ admin_level = 2 'NUTS 1' | admin_level = 4 'NUTS 2' |  '{admin_level}'}");
         Condition condition = new Condition();
         condition.getEntries().add(new SearchExpressionCondition(compile("admin_level = 2"), new StaticText("NUTS 1")));
@@ -106,14 +107,16 @@ public class TemplateParserTest {
                 else
                     return null;
             } else {
-                if ("name".equals(name))
+                switch (name) {
+                case "name":
                     return "waypointName";
-                else if ("number".equals(name))
+                case "number":
                     return 10;
-                else if ("special:key".equals(name))
+                case "special:key":
                     return "specialKey";
-                else
+                default:
                     return null;
+                }
             }
         }
 
diff --git a/tools/checkstyle/.classpath b/tools/checkstyle/.classpath
new file mode 100644
index 0000000..7498423
--- /dev/null
+++ b/tools/checkstyle/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/tools/checkstyle/.project b/tools/checkstyle/.project
new file mode 100644
index 0000000..7b6d2c0
--- /dev/null
+++ b/tools/checkstyle/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>JOSM-Checkstyle-Eclipse-Plugin</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools/checkstyle/.settings/org.eclipse.core.resources.prefs b/tools/checkstyle/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..4824b80
--- /dev/null
+++ b/tools/checkstyle/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools/checkstyle/.settings/org.eclipse.jdt.core.prefs b/tools/checkstyle/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..bb35fa0
--- /dev/null
+++ b/tools/checkstyle/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tools/checkstyle/META-INF/MANIFEST.MF b/tools/checkstyle/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..53b1d9b
--- /dev/null
+++ b/tools/checkstyle/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JOSM Checkstyle Eclipse Plugin
+Bundle-SymbolicName: org.openstreetmap.josm.checkstyle-eclipse-plugin;singleton:=true
+Bundle-Version: 8.0.0.qualifier
+Require-Bundle: net.sf.eclipsecs.checkstyle,
+ net.sf.eclipsecs.core,
+ net.sf.eclipsecs.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Eclipse-LazyStart: true
+Bundle-Vendor: https://josm.openstreetmap.de/
+Import-Package: org.eclipse.core.resources,
+ org.eclipse.jdt.core.dom,
+ org.eclipse.jface.resource,
+ org.eclipse.jface.text,
+ org.eclipse.swt.graphics,
+ org.eclipse.ui
+
diff --git a/tools/checkstyle/build.properties b/tools/checkstyle/build.properties
new file mode 100644
index 0000000..a82b7b7
--- /dev/null
+++ b/tools/checkstyle/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               josm_checks.xml,\
+               josm_filters.xml
+bin.excludes = checkstyle-all.jar
+               
\ No newline at end of file
diff --git a/tools/checkstyle/josm_checks.xml b/tools/checkstyle/josm_checks.xml
index 93965a7..5071372 100644
--- a/tools/checkstyle/josm_checks.xml
+++ b/tools/checkstyle/josm_checks.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
 
-<!--
-    This configuration file was written by the eclipse-cs plugin configuration editor
+<!--
+    This configuration file was written by the eclipse-cs plugin configuration editor
 -->
-<!--
-    Checkstyle-Configuration: JOSM
-    Description: 
-JOSM Checkstyle rules
+<!--
+    Checkstyle-Configuration: JOSM
+    Description: 
+JOSM Checkstyle rules
 -->
 <module name="Checker">
   <property name="severity" value="warning"/>
@@ -102,6 +102,7 @@ JOSM Checkstyle rules
     <module name="OuterTypeFilename"/>
     <module name="FinalClass"/>
     <module name="HideUtilityClassConstructor"/>
+    <module name="org.openstreetmap.josm.TopLevelJavadocCheck"/>
   </module>
   <module name="Header">
     <property name="header" value="// License: GPL. For details, see LICENSE file."/>
diff --git a/tools/checkstyle/josm_filters.xml b/tools/checkstyle/josm_filters.xml
index e56ae8a..07f4510 100644
--- a/tools/checkstyle/josm_filters.xml
+++ b/tools/checkstyle/josm_filters.xml
@@ -43,4 +43,6 @@
   <suppress checks="HeaderCheck" files="MultiSplitPane\.java" />
   <suppress checks="HeaderCheck" files="DNSName(Fix)?\.java" />
   <suppress checks="FileLengthCheck" files="DomainValidator\.java" />
+  <suppress checks="org.openstreetmap.josm.TopLevelJavadocCheck" files="package-info\.java" />
+  <suppress checks="org.openstreetmap.josm.TopLevelJavadocCheck" files="[\\/]test[\\/]" />
 </suppressions>
diff --git a/tools/checkstyle/plugin.xml b/tools/checkstyle/plugin.xml
new file mode 100644
index 0000000..a44e82e
--- /dev/null
+++ b/tools/checkstyle/plugin.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+    <!-- This plugin provides custom Checkstyle modules. -->
+    <extension
+          point="net.sf.eclipsecs.core.checkstyleAddonProvider">
+    </extension>
+    
+    <!-- This plugin provides custom quickfixes for Checkstyle problems.
+    <extension
+          point="net.sf.eclipsecs.ui.checkstyleQuickfixProvider">
+    </extension>-->
+
+    <!-- 
+        builtin check configuration
+    -->
+    <extension
+        id="checkstyle.CheckConfiguration"
+        point="net.sf.eclipsecs.core.configurations">
+        <check-configuration
+            name="JOSM Checkstyle checks"
+            location="josm_checks.xml"
+            description="JOSM Checkstyle checks"
+            default-weight="2">
+        </check-configuration>
+    </extension>
+
+    <!-- 
+        checkstyle plugin filter
+    
+    <extension
+        id="checkstyle.CheckstyleFilters"
+        point="net.sf.eclipsecs.core.filters">
+        <filter
+            name="Sample Filter"
+            internal-name="SampleFilter"
+            description="Sample Filter (doing nothing)"
+            class="net.sf.eclipsecs.sample.filter.SampleFilter"/>
+    </extension>-->
+</plugin>
diff --git a/tools/checkstyle/src/checkstyle_packages.xml b/tools/checkstyle/src/checkstyle_packages.xml
new file mode 100644
index 0000000..28b4213
--- /dev/null
+++ b/tools/checkstyle/src/checkstyle_packages.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE checkstyle-packages PUBLIC
+    "-//Puppy Crawl//DTD Package Names 1.0//EN"
+    "http://www.puppycrawl.com/dtds/packages_1_0.dtd">
+
+<checkstyle-packages>
+    <!--
+      Define the Java packages where your custom Checkstyle module classes (checks, filters) reside here.
+      See http://checkstyle.sourceforge.net/config.html#Packages for more info.
+      -->
+    <package name="org.openstreetmap.josm">
+    </package>
+</checkstyle-packages>
diff --git a/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java b/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java
new file mode 100644
index 0000000..b9ed8a0
--- /dev/null
+++ b/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java
@@ -0,0 +1,96 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm;
+
+import com.puppycrawl.tools.checkstyle.JavadocDetailNodeParser;
+import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
+import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.DetailNode;
+import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
+import com.puppycrawl.tools.checkstyle.utils.JavadocUtils;
+
+/**
+ * Checks that there is Javadoc for every top level class, interface or enum.
+ */
+public class TopLevelJavadocCheck extends AbstractCheck {
+
+    private boolean foundTopLevelClass;
+
+    @Override
+    public int[] getAcceptableTokens() {
+        return getDefaultTokens();
+    }
+
+    @Override
+    public int[] getDefaultTokens() {
+        return new int[]{TokenTypes.CLASS_DEF, TokenTypes.INTERFACE_DEF, TokenTypes.ENUM_DEF};
+    }
+
+    @Override
+    public int[] getRequiredTokens() {
+        return new int[0];
+    }
+
+    @Override
+    public boolean isCommentNodesRequired() {
+        return true;
+    }
+
+    @Override
+    public void beginTree(DetailAST rootAST) {
+        foundTopLevelClass = false;
+    }
+
+    @Override
+    public void finishTree(DetailAST rootAST) {
+        if (!foundTopLevelClass) {
+            this.log(rootAST.getLineNo(), "assertion failure: unable to find toplevel class or interface");
+        }
+    }
+
+    private boolean hasJavadoc(DetailAST ast) {
+        DetailAST blockCommentBegin = ast.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
+        if (blockCommentBegin == null) {
+            DetailAST modifiers = ast.findFirstToken(TokenTypes.MODIFIERS);
+            if (modifiers == null)
+                return false;
+            blockCommentBegin = modifiers.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
+            if (blockCommentBegin == null) {
+                DetailAST annotation = modifiers.findFirstToken(TokenTypes.ANNOTATION);
+                if (annotation == null)
+                    return false;
+                blockCommentBegin = annotation.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
+                if (blockCommentBegin == null)
+                    return false;
+            }
+        }
+        if (!JavadocUtils.isJavadocComment(blockCommentBegin))
+            return false;
+        DetailNode javadocTree = new JavadocDetailNodeParser().parseJavadocAsDetailNode(blockCommentBegin).getTree();
+        return hasProperText(javadocTree);
+    }
+
+    private boolean hasProperText(DetailNode javadoc) {
+        if (javadoc == null) return false;
+        for (DetailNode child : javadoc.getChildren()) {
+            if (child.getType() == JavadocTokenTypes.TEXT) {
+                if (!child.getText().trim().isEmpty())
+                    return true;
+            } else if (child.getType() == JavadocTokenTypes.HTML_ELEMENT) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public void visitToken(DetailAST ast) {
+        DetailAST parent = ast.getParent();
+        if (parent == null || parent.getType() == TokenTypes.EOF) {
+            foundTopLevelClass = true;
+            if (!hasJavadoc(ast)) {
+                this.log(ast.getLineNo(), "incomplete or missing Javadoc for top level class or interface");
+            }
+        }
+   }
+}
diff --git a/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.properties b/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.properties
new file mode 100644
index 0000000..b54f97b
--- /dev/null
+++ b/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.properties
@@ -0,0 +1,4 @@
+JosmCustomChecks.desc = JOSM custom Checkstyle modules.
+
+TopLevelJavadoc.name = Top-Level Javadoc
+TopLevelJavadoc.desc = Checks that there is Javadoc for every top level class, interface or enum
diff --git a/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.xml b/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.xml
new file mode 100644
index 0000000..2feab0a
--- /dev/null
+++ b/tools/checkstyle/src/org/openstreetmap/josm/checkstyle-metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE checkstyle-metadata PUBLIC
+"-//eclipse-cs//DTD Check Metadata 1.1//EN"
+"http://eclipse-cs.sourceforge.net/dtds/checkstyle-metadata_1_1.dtd">
+<checkstyle-metadata>
+    <rule-group-metadata name="JOSM custom checks"  priority="1600">
+        <description>%JosmCustomChecks.desc</description>
+
+        <rule-metadata name="%TopLevelJavadoc.name" internal-name="TopLevelJavadoc" parent="TreeWalker">
+            <alternative-name internal-name="org.openstreetmap.josm.TopLevelJavadocCheck" />
+            <description>%TopLevelJavadoc.desc</description>
+        </rule-metadata>
+    </rule-group-metadata>
+</checkstyle-metadata>
diff --git a/tools/checkstyle/src/org/openstreetmap/josm/messages.properties b/tools/checkstyle/src/org/openstreetmap/josm/messages.properties
new file mode 100644
index 0000000..d3f5a12
--- /dev/null
+++ b/tools/checkstyle/src/org/openstreetmap/josm/messages.properties
@@ -0,0 +1 @@
+

-- 
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