Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 33075)
@@ -44,6 +44,12 @@
     public static final Pattern WIKIDATA_PATTERN = Pattern.compile("Q\\d+");
     private static final XPath X_PATH = XPath.getInstance();
-
-    private WikipediaApp() {
+    private final String wikipediaLang;
+
+    private WikipediaApp(final String wikipediaLang) {
+        this.wikipediaLang = wikipediaLang;
+    }
+
+    public static WikipediaApp forLanguage(final String wikipediaLang) {
+        return new WikipediaApp(wikipediaLang);
     }
 
@@ -56,5 +62,5 @@
     }
 
-    public static String getSiteUrl(String wikipediaLang) {
+    public String getSiteUrl() {
         if ("wikidata".equals(wikipediaLang)) {
             return "https://www.wikidata.org";
@@ -64,8 +70,8 @@
     }
 
-    public static List<WikipediaEntry> getEntriesFromCoordinates(String wikipediaLang, LatLon min, LatLon max) {
+    public List<WikipediaEntry> getEntriesFromCoordinates(LatLon min, LatLon max) {
         try {
             // construct url
-            final String url = getSiteUrl(wikipediaLang) + "/w/api.php"
+            final String url = getSiteUrl() + "/w/api.php"
                     + "?action=query"
                     + "&list=geosearch"
@@ -120,5 +126,5 @@
     }
 
-    public static List<WikipediaEntry> getEntriesFromCategory(String wikipediaLang, String category, int depth) {
+    public List<WikipediaEntry> getEntriesFromCategory(String category, int depth) {
         try {
             final String url = "https://tools.wmflabs.org/cats-php/"
@@ -145,7 +151,7 @@
     }
 
-    public static void updateWIWOSMStatus(String wikipediaLang, List<WikipediaEntry> entries) {
+    public void updateWIWOSMStatus(List<WikipediaEntry> entries) {
         if (entries.size() > 20) {
-            partitionList(entries, 20).forEach(chunk -> updateWIWOSMStatus(wikipediaLang, chunk));
+            partitionList(entries, 20).forEach(chunk -> updateWIWOSMStatus(chunk));
             return;
         }
@@ -179,5 +185,5 @@
     }
 
-    public static Stream<String> getWikipediaArticles(final String wikipediaLang, OsmPrimitive p) {
+    public Stream<String> getWikipediaArticles(final OsmPrimitive p) {
         if ("wikidata".equals(wikipediaLang)) {
             return Stream.of(p.get("wikidata")).filter(Objects::nonNull);
@@ -194,5 +200,5 @@
      * Returns a map mapping wikipedia articles to wikidata ids.
      */
-    public static Map<String, String> getWikidataForArticles(String wikipediaLang, List<String> articles) {
+    public Map<String, String> getWikidataForArticles(Collection<String> articles) {
         return articles.stream()
                 .distinct()
@@ -216,9 +222,9 @@
                 .values()
                 .stream()
-                .flatMap(chunk -> getWikidataForArticles0(wikipediaLang, chunk).entrySet().stream())
+                .flatMap(chunk -> getWikidataForArticles0(chunk).entrySet().stream())
                 .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
     }
 
-    private static Map<String, String> getWikidataForArticles0(String wikipediaLang, List<String> articles) {
+    private Map<String, String> getWikidataForArticles0(List<String> articles) {
         if (articles.isEmpty()) {
             return Collections.emptyMap();
@@ -249,7 +255,7 @@
     }
 
-    public static List<String> getCategoriesForPrefix(final String wikipediaLang, final String prefix) {
-        try {
-            final String url = getSiteUrl(wikipediaLang) + "/w/api.php"
+    public List<String> getCategoriesForPrefix(final String prefix) {
+        try {
+            final String url = getSiteUrl() + "/w/api.php"
                     + "?action=query"
                     + "&list=prefixsearch"
@@ -334,7 +340,7 @@
     }
 
-    public static Collection<WikipediaEntry> getInterwikiArticles(String wikipediaLang, String article) {
-        try {
-            final String url = getSiteUrl(wikipediaLang) + "/w/api.php" +
+    public Collection<WikipediaEntry> getInterwikiArticles(String article) {
+        try {
+            final String url = getSiteUrl() + "/w/api.php" +
                     "?action=query" +
                     "&prop=langlinks" +
@@ -356,7 +362,7 @@
     }
 
-    public static LatLon getCoordinateForArticle(String wikipediaLang, String article) {
-        try {
-            final String url = getSiteUrl(wikipediaLang) + "/w/api.php" +
+    public LatLon getCoordinateForArticle(String article) {
+        try {
+            final String url = getSiteUrl() + "/w/api.php" +
                     "?action=query" +
                     "&prop=coordinates" +
Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/FetchWikidataAction.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/FetchWikidataAction.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/FetchWikidataAction.java	(revision 33075)
@@ -129,5 +129,5 @@
                     "Fetching {0} Wikidata ID for language ''{1}''",
                     "Fetching {0} Wikidata IDs for language ''{1}''", size, size, lang));
-            final Map<String, String> wikidataByWikipedia = WikipediaApp.getWikidataForArticles(lang, new ArrayList<>(byArticle.keySet()));
+            final Map<String, String> wikidataByWikipedia = WikipediaApp.forLanguage(lang).getWikidataForArticles(byArticle.keySet());
             ConditionalOptionPaneUtil.startBulkOperation(GuiUtils.PREF_OVERWRITE);
             for (Map.Entry<String, Set<OsmPrimitive>> i : byArticle.entrySet()) {
Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/WikipediaAddNamesAction.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/WikipediaAddNamesAction.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/actions/WikipediaAddNamesAction.java	(revision 33075)
@@ -31,5 +31,5 @@
         final WikipediaEntry wp = WikipediaEntry.parseTag("wikipedia", getWikipediaValue());
         List<String[]> tags = new ArrayList<>();
-        WikipediaApp.getInterwikiArticles(wp.lang, wp.article).stream()
+        WikipediaApp.forLanguage(wp.lang).getInterwikiArticles(wp.article).stream()
                 .filter(this::useWikipediaLangArticle)
                 .map(i -> new String[]{"name:" + i.lang, i.article})
Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/data/WikipediaEntry.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/data/WikipediaEntry.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/data/WikipediaEntry.java	(revision 33075)
@@ -80,5 +80,5 @@
 
     public String getBrowserUrl() {
-        return WikipediaApp.getSiteUrl(lang) + "/wiki/" + Utils.encodeUrl(article.replace(" ", "_"));
+        return WikipediaApp.forLanguage(lang).getSiteUrl() + "/wiki/" + Utils.encodeUrl(article.replace(" ", "_"));
     }
 
Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaCategorySearchDialog.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaCategorySearchDialog.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaCategorySearchDialog.java	(revision 33075)
@@ -58,5 +58,5 @@
                 final List<String> entries = query == null || query.isEmpty()
                         ? Collections.emptyList()
-                        : WikipediaApp.getCategoriesForPrefix(WikipediaToggleDialog.wikipediaLang.get(), query);
+                        : WikipediaApp.forLanguage(WikipediaToggleDialog.wikipediaLang.get()).getCategoriesForPrefix(query);
                 GuiHelper.runInEDT(() -> lsResultModel.setItems(entries));
             }, 200, TimeUnit.MILLISECONDS);
Index: applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaToggleDialog.java
===================================================================
--- applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaToggleDialog.java	(revision 33074)
+++ applications/editors/josm/plugins/wikipedia/src/org/wikipedia/gui/WikipediaToggleDialog.java	(revision 33075)
@@ -113,5 +113,5 @@
     private void updateTitle() {
         final String lang = getLanguageOfFirstItem();
-        final String host = WikipediaApp.getSiteUrl(lang).split("/+")[1];
+        final String host = WikipediaApp.forLanguage(lang).getSiteUrl().split("/+")[1];
         if (titleContext == null) {
             setTitle(host);
@@ -155,6 +155,6 @@
                     @Override
                     List<WikipediaEntry> getEntries() {
-                        return WikipediaApp.getEntriesFromCoordinates(
-                                wikidata ? "wikidata" : wikipediaLang.get(), min, max);
+                        return WikipediaApp.forLanguage(wikidata ? "wikidata" : wikipediaLang.get())
+                                .getEntriesFromCoordinates(min, max);
                     }
                 }.execute();
@@ -175,5 +175,5 @@
             publish(entries.toArray(new WikipediaEntry[entries.size()]));
             WikipediaApp.partitionList(entries, 20).forEach(chunk -> {
-                WikipediaApp.updateWIWOSMStatus(chunk.get(0).lang, chunk);
+                WikipediaApp.forLanguage(chunk.get(0).lang).updateWIWOSMStatus(chunk);
                 list.repaint();
             });
@@ -217,6 +217,6 @@
                 @Override
                 List<WikipediaEntry> getEntries() {
-                    return WikipediaApp.getEntriesFromCategory(
-                            wikipediaLang.get(), category, Main.pref.getInteger("wikipedia.depth", 3));
+                    return WikipediaApp.forLanguage(wikipediaLang.get())
+                            .getEntriesFromCategory(category, Main.pref.getInteger("wikipedia.depth", 3));
                 }
             }.execute();
@@ -341,5 +341,5 @@
             final LatLon latLon = entry.coordinate != null
                     ? entry.coordinate
-                    : WikipediaApp.getCoordinateForArticle(entry.lang, entry.article);
+                    : WikipediaApp.forLanguage(entry.lang).getCoordinateForArticle(entry.article);
             if (latLon == null) {
                 return;
@@ -354,5 +354,5 @@
         if (Main.main != null && Main.getLayerManager().getEditDataSet() != null) {
             Main.getLayerManager().getEditDataSet().allPrimitives().stream()
-                    .flatMap(p -> WikipediaApp.getWikipediaArticles(language, p))
+                    .flatMap(p -> WikipediaApp.forLanguage(language).getWikipediaArticles(p))
                     .forEach(articles::add);
         }
