Index: /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaAddNamesAction.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaAddNamesAction.java	(revision 29033)
+++ /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaAddNamesAction.java	(revision 29033)
@@ -0,0 +1,63 @@
+// License: GPL. See LICENSE file for details./*
+package org.wikipedia;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
+
+public class WikipediaAddNamesAction extends JosmAction {
+
+    public WikipediaAddNamesAction() {
+        super(tr("Add names from Wikipedia"), "dialogs/wikipedia",
+                tr("Fetches interwiki links from Wikipedia in order to several name tags"),
+                null, true);
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        String[] parts = getWikipediaValue().split(":", 2);
+        List<String[]> tags = new ArrayList<String[]>();
+        for (WikipediaApp.WikipediaLangArticle i : WikipediaApp.getInterwikiArticles(parts[0], parts[1])) {
+            if (useWikipediaLangArticle(i)) {
+                tags.add(new String[]{"name:" + i.lang, i.article});
+            }
+        }
+        new AddTagsDialog(tags.toArray(new String[tags.size()][]));
+    }
+
+    protected boolean useWikipediaLangArticle(WikipediaApp.WikipediaLangArticle i) {
+        return (!Main.pref.getBoolean("wikipedia.filter-iso-languages", true)
+                || Arrays.asList(Locale.getISOLanguages()).contains(i.lang))
+                && (!Main.pref.getBoolean("wikipedia.filter-same-names", true)
+                || !i.article.equals(getCurrentDataSet().getSelected().iterator().next().get("name")));
+
+    }
+
+    protected String getWikipediaValue() {
+        if (getCurrentDataSet() == null || getCurrentDataSet().getSelected() == null || getCurrentDataSet().getSelected().size() != 1) {
+            return null;
+        } else {
+            return getCurrentDataSet().getSelected().iterator().next().get("wikipedia");
+        }
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(getWikipediaValue() != null);
+    }
+
+    @Override
+    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
+        updateEnabledState();
+    }
+
+}
Index: /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 29032)
+++ /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 29033)
@@ -159,4 +159,27 @@
     }
 
+    static Collection<WikipediaLangArticle> getInterwikiArticles(String wikipediaLang, String article) {
+        try {
+            Collection<WikipediaLangArticle> r = new ArrayList<WikipediaLangArticle>();
+            final String url = "http://" + wikipediaLang + ".wikipedia.org/w/api.php" +
+                    "?action=query" +
+                    "&prop=langlinks" +
+                    "&titles=" + article +
+                    "&lllimit=500" +
+                    "&format=xml";
+            System.out.println("Wikipedia: GET " + url);
+            final Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new URL(url).openStream());
+            final NodeList nodes = (NodeList) XPathFactory.newInstance().newXPath().compile("//ll").evaluate(xml, XPathConstants.NODESET);
+            for (int i = 0; i < nodes.getLength(); i++) {
+                final String lang = nodes.item(i).getAttributes().getNamedItem("lang").getTextContent();
+                final String name = nodes.item(i).getTextContent();
+                r.add(new WikipediaLangArticle(lang, name));
+            }
+            return r;
+        } catch (Exception ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
     static class WikipediaLangArticle {
 
Index: /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaPlugin.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaPlugin.java	(revision 29032)
+++ /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaPlugin.java	(revision 29033)
@@ -2,4 +2,6 @@
 package org.wikipedia;
 
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.plugins.Plugin;
@@ -11,4 +13,5 @@
         super(info);
         new WikipediaCopyTemplate();
+        MainMenu.add(Main.main.menu.toolsMenu, new WikipediaAddNamesAction());
     }
 
