Index: /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 16427)
@@ -105,5 +105,5 @@
         int interval = PROP_INTERVAL.get();
         if (NetworkManager.isOffline(OnlineResource.OSM_API)) {
-            Logging.info(tr("{0} not available (offline mode)", tr("Message notifier")));
+            Logging.info(OfflineAccessException.forResource(tr("Message notifier")).getMessage());
         } else if (!isRunning() && interval > 0 && isUserEnoughIdentified()) {
             task = EXECUTOR.scheduleAtFixedRate(WORKER, 0, interval, TimeUnit.MINUTES);
Index: /trunk/src/org/openstreetmap/josm/io/OfflineAccessException.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OfflineAccessException.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/io/OfflineAccessException.java	(revision 16427)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -15,3 +17,12 @@
         super(s);
     }
+
+    /**
+     * Returns a new OfflineAccessException with a translated message for the given resource
+     * @param name the translated name/description of the resource
+     * @return a new OfflineAccessException
+     */
+    public static OfflineAccessException forResource(String name) {
+        return new OfflineAccessException(tr("{0} not available (offline mode)", name));
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/io/OnlineResource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OnlineResource.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/io/OnlineResource.java	(revision 16427)
@@ -69,5 +69,5 @@
     public final void checkOfflineAccess(String downloadString, String ignore) {
         if (NetworkManager.isOffline(downloadString)) {
-            throw new OfflineAccessException(tr("Unable to access ''{0}'': {1} not available (offline mode)", downloadString, getLocName()));
+            throw OfflineAccessException.forResource(downloadString);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 16427)
@@ -256,5 +256,5 @@
             if (capabilities == null) {
                 if (NetworkManager.isOffline(OnlineResource.OSM_API)) {
-                    Logging.warn(tr("{0} not available (offline mode)", tr("OSM API")));
+                    Logging.warn(OfflineAccessException.forResource(tr("")).getMessage());
                 } else {
                     Logging.error(tr("Unable to initialize OSM API."));
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 16427)
@@ -158,5 +158,5 @@
         try {
             if (NetworkManager.isOffline(urlStr)) {
-                throw new OsmApiException(new OfflineAccessException(tr("{0} not available (offline mode)", urlStr)));
+                throw new OsmApiException(OfflineAccessException.forResource(urlStr));
             }
 
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 16426)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 16427)
@@ -67,4 +67,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.NetworkManager;
+import org.openstreetmap.josm.io.OfflineAccessException;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Destroyable;
@@ -435,5 +436,5 @@
     public static boolean checkAndConfirmPluginUpdate(Component parent) {
         if (Preferences.main().getPluginSites().stream().anyMatch(NetworkManager::isOffline)) {
-            Logging.info(tr("{0} not available (offline mode)", tr("Plugin update")));
+            Logging.info(OfflineAccessException.forResource(tr("Plugin update")).getMessage());
             return false;
         }
