Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java	(revision 14646)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java	(revision 14647)
@@ -100,5 +100,5 @@
      */
     public static void displayTagHelp(String key, String val) {
-        final String lang = LanguageInfo.getWikiLanguagePrefix();
+        final String lang = LanguageInfo.getWikiLanguagePrefix(LanguageInfo.LocaleType.OSM_WIKI);
         final List<String> pages = Arrays.asList(
                 String.format("%sTag:%s=%s", lang, key, val),
@@ -118,5 +118,5 @@
      */
     public static void displayRelationHelp(IRelation<?> rel) {
-        final String lang = LanguageInfo.getWikiLanguagePrefix();
+        final String lang = LanguageInfo.getWikiLanguagePrefix(LanguageInfo.LocaleType.OSM_WIKI);
         final List<String> pages = new ArrayList<>();
         String type = rel.get("type");
@@ -140,5 +140,5 @@
      */
     public static void displayGenericHelp() {
-        final String lang = LanguageInfo.getWikiLanguagePrefix();
+        final String lang = LanguageInfo.getWikiLanguagePrefix(LanguageInfo.LocaleType.OSM_WIKI);
         final List<String> pages = Arrays.asList(
                 String.format("%sMap_Features", lang),
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java	(revision 14646)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java	(revision 14647)
@@ -7,4 +7,5 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 import java.util.Optional;
 
@@ -43,5 +44,8 @@
                     if (SwingUtilities.isLeftMouseButton(e)) {
                         // Open localized page if exists
-                        HelpAction.displayHelp(Arrays.asList(LanguageInfo.getWikiLanguagePrefix() + wiki, wiki));
+                        final List<String> pages = Arrays.asList(
+                                LanguageInfo.getWikiLanguagePrefix(LanguageInfo.LocaleType.OSM_WIKI) + wiki,
+                                wiki);
+                        HelpAction.displayHelp(pages);
                     } else {
                         super.mouseClicked(e);
Index: /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 14646)
+++ /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 14647)
@@ -27,5 +27,7 @@
         BASELANGUAGE,
         /** The standard english texts */
-        ENGLISH
+        ENGLISH,
+        /** The locale prefix on the OSM wiki */
+        OSM_WIKI,
     }
 
@@ -45,6 +47,15 @@
 
     static String getWikiLanguagePrefix(Locale locale, LocaleType type) {
-        if (type == LocaleType.ENGLISH)
-          return "";
+        if (type == LocaleType.ENGLISH) {
+            return "";
+        } else if (type == LocaleType.OSM_WIKI && Locale.ENGLISH.getLanguage().equals(locale.getLanguage())) {
+            return "";
+        } else if (type == LocaleType.OSM_WIKI && Locale.SIMPLIFIED_CHINESE.equals(locale)) {
+            return "Zh-hans:";
+        } else if (type == LocaleType.OSM_WIKI && Locale.TRADITIONAL_CHINESE.equals(locale)) {
+            return "Zh-hant:";
+        } else if (type == LocaleType.OSM_WIKI) {
+            return locale.getLanguage() + ':';
+        }
 
         String code = getJOSMLocaleCode(locale);
@@ -60,6 +71,10 @@
             return null;
         } else if (code.matches(".+@.+")) {
-          return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1, 2)
-          + '-' + code.substring(3, 4).toUpperCase(Locale.ENGLISH) + code.substring(4) + ':';
+            return code.substring(0, 1).toUpperCase(Locale.ENGLISH)
+                    + code.substring(1, 2)
+                    + '-'
+                    + code.substring(3, 4).toUpperCase(Locale.ENGLISH)
+                    + code.substring(4)
+                    + ':';
         }
         return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1) + ':';
Index: /trunk/test/unit/org/openstreetmap/josm/tools/LanguageInfoTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/LanguageInfoTest.java	(revision 14646)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/LanguageInfoTest.java	(revision 14647)
@@ -3,5 +3,8 @@
 
 import java.util.Arrays;
+import java.util.List;
 import java.util.Locale;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -23,7 +26,10 @@
     public JOSMTestRules test = new JOSMTestRules().i18n("ca@valencia");
 
+    private static final Locale EN_CA = Locale.CANADA;
     private static final Locale DE_DE = Locale.GERMANY;
     private static final Locale PT_BR = new Locale("pt", "BR");
     private static final Locale CA_ES_VALENCIA = new Locale("ca", "ES", "valencia");
+    private static final Locale ZN_CN = Locale.SIMPLIFIED_CHINESE;
+    private static final Locale ZN_TW = Locale.TRADITIONAL_CHINESE;
 
     /**
@@ -32,6 +38,21 @@
     @Test
     public void getWikiLanguagePrefix() {
-        Assert.assertEquals("De:", LanguageInfo.getWikiLanguagePrefix(DE_DE, LanguageInfo.LocaleType.DEFAULT));
-        Assert.assertEquals("Pt_BR:", LanguageInfo.getWikiLanguagePrefix(PT_BR, LanguageInfo.LocaleType.DEFAULT));
+        testWikiLanguagePrefixes(LanguageInfo.LocaleType.DEFAULT,
+                "En:", "De:", "Pt_BR:", "Ca-Valencia:", "Zh_CN:", "Zh_TW:");
+        testWikiLanguagePrefixes(LanguageInfo.LocaleType.DEFAULTNOTENGLISH,
+                null, "De:", "Pt_BR:", "Ca-Valencia:", "Zh_CN:", "Zh_TW:");
+        testWikiLanguagePrefixes(LanguageInfo.LocaleType.BASELANGUAGE,
+                null, null, "Pt:", null, "Zh:", "Zh:");
+        testWikiLanguagePrefixes(LanguageInfo.LocaleType.ENGLISH,
+                "", "", "", "", "", "");
+        testWikiLanguagePrefixes(LanguageInfo.LocaleType.OSM_WIKI,
+                "", "de:", "pt:", "ca:", "Zh-hans:", "Zh-hant:");
+    }
+
+    private static void testWikiLanguagePrefixes(LanguageInfo.LocaleType type, String...expected) {
+        final List<String> actual = Stream.of(EN_CA, DE_DE, PT_BR, CA_ES_VALENCIA, ZN_CN, ZN_TW)
+                .map(locale -> LanguageInfo.getWikiLanguagePrefix(locale, type))
+                .collect(Collectors.toList());
+        Assert.assertEquals(Arrays.asList(expected), actual);
     }
 
