Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 15710)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 15711)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.tools;
 
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -288,5 +288,5 @@
      */
     public static List<String> getLanguageCodes(Locale l) {
-        List<String> list = new LinkedList<>();
+        List<String> list = new ArrayList<>(4);
         if (l == null)
             l = Locale.getDefault();
Index: trunk/src/org/openstreetmap/josm/tools/Tag2Link.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 15710)
+++ trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 15711)
@@ -12,4 +12,5 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -42,5 +43,9 @@
      * Maps OSM keys to formatter URLs from Wikidata and OSM Sophox where {@code "$1"} has to be replaced by a value.
      */
-    static MultiMap<String, String> wikidataRules = new MultiMap<>();
+    static final MultiMap<String, String> wikidataRules = new MultiMap<>();
+
+    static final String languagePattern = LanguageInfo.getLanguageCodes(null).stream()
+            .map(Pattern::quote)
+            .collect(Collectors.joining("|"));
 
     private Tag2Link() {
@@ -127,5 +132,5 @@
 
         // Search
-        if (key.matches("^(.+[:_])?name([:_].+)?$")) {
+        if (key.matches("^(.+[:_])?name([:_]" + languagePattern + ")?$")) {
             linkConsumer.acceptLink(tr("Search on DuckDuckGo"), "https://duckduckgo.com/?q=" + value);
         }
