Index: /vlo/trunk/vlo-commons/src/main/java/eu/clarin/cmdi/vlo/FacetConstants.java
===================================================================
--- /vlo/trunk/vlo-commons/src/main/java/eu/clarin/cmdi/vlo/FacetConstants.java	(revision 6045)
+++ /vlo/trunk/vlo-commons/src/main/java/eu/clarin/cmdi/vlo/FacetConstants.java	(revision 6046)
@@ -43,5 +43,5 @@
      */
     public static final String FIELD_SEARCHPAGE = "_searchPageRef";
-    
+
     //Deprecated fields
     public static final String DEPRECATED_FIELD_LANGUAGE = "language";
@@ -71,3 +71,9 @@
      */
     public static final String DESCRIPTION_LANGUAGE_PATTERN = "^\\{lang='([a-z]{3})'\\}";
+
+    /**
+     * regular expression that matches the syntax of the 'languageCode' field
+     * (with either a language code or a name as indicated by the prefix)
+     */
+    public static final String LANGUAGE_CODE_PATTERN = "(name|code):(.*)";
 }
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/VloWicketApplication.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/VloWicketApplication.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/VloWicketApplication.java	(revision 6046)
@@ -10,4 +10,5 @@
 import eu.clarin.cmdi.vlo.wicket.pages.SimpleSearchPage;
 import eu.clarin.cmdi.vlo.wicket.pages.VloBasePage;
+import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
 import javax.inject.Inject;
 import org.apache.wicket.Application;
@@ -37,4 +38,6 @@
     @Inject
     private XmlTransformationService cmdiTransformationService;
+    @Inject
+    private FieldValueConverterProvider fieldValueConverterProvider;
     @Inject
     private VloConfig vloConfig;
@@ -145,4 +148,8 @@
         return cmdiTransformationService;
     }
+    
+    public FieldValueConverterProvider getFieldValueConverterProvider() {
+        return fieldValueConverterProvider;
+    }
 
 }
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FieldValueLabel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FieldValueLabel.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FieldValueLabel.java	(revision 6046)
@@ -19,5 +19,4 @@
 import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
 import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProviderImpl;
-import org.apache.solr.client.solrj.response.FacetField;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SmartLinkFieldValueLabel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SmartLinkFieldValueLabel.java	(revision 6046)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SmartLinkFieldValueLabel.java	(revision 6046)
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2015 CLARIN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package eu.clarin.cmdi.vlo.wicket.components;
+
+import org.apache.wicket.extensions.markup.html.basic.DefaultLinkParser;
+import org.apache.wicket.extensions.markup.html.basic.ILinkParser;
+import org.apache.wicket.extensions.markup.html.basic.SmartLinkLabel;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.model.IModel;
+
+/**
+ * Clone of {@link SmartLinkLabel} from wicket-extensions by Juergen Donnerstag
+ * that extends FieldValueLabel so that it undergoes the same conversion
+ * processing as its super class
+ *
+ * @author Twan Goosen <twan.goosen@mpi.nl>
+ * @see SmartLinkLabel
+ */
+public class SmartLinkFieldValueLabel extends FieldValueLabel {
+
+    public SmartLinkFieldValueLabel(String id, IModel<String> fieldModel) {
+        super(id, fieldModel);
+    }
+
+    public SmartLinkFieldValueLabel(String id, IModel<?> model, IModel<String> fieldModel) {
+        super(id, model, fieldModel);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
+        replaceComponentTagBody(markupStream, openTag,
+                getSmartLink(getDefaultModelObjectAsString()));
+    }
+
+    /**
+     *
+     * @return link parser
+     */
+    protected ILinkParser getLinkParser() {
+        return new DefaultLinkParser();
+    }
+
+    /**
+     * Replace all email and URL addresses
+     *
+     * @param text Text to be modified
+     * @return Modified Text
+     */
+    protected final CharSequence getSmartLink(final CharSequence text) {
+        return getLinkParser().parse(text.toString());
+    }
+
+}
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SolrFieldLabel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SolrFieldLabel.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SolrFieldLabel.java	(revision 6046)
@@ -35,28 +35,4 @@
      * @param documentModel model that holds document to show field of
      * @param fieldName name of field to show value of
-     */
-    public SolrFieldLabel(String id, IModel<SolrDocument> documentModel, String fieldName) {
-        super(id, new SolrFieldStringModel(documentModel, fieldName));
-    }
-
-    /**
-     *
-     * @param id id of label
-     * @param documentModel model that holds document to show field of
-     * @param fieldName name of field to show value of
-     * @param maxLength maximum length to allow
-     * @param truncatePoint point to truncate if string is too long
-     */
-    public SolrFieldLabel(String id, IModel<SolrDocument> documentModel, String fieldName, int maxLength, int truncatePoint) {
-        super(id,
-                new TruncatingStringModel(
-                        new SolrFieldStringModel(documentModel, fieldName), maxLength, truncatePoint));
-    }
-
-    /**
-     *
-     * @param id id of label
-     * @param documentModel model that holds document to show field of
-     * @param fieldName name of field to show value of
      * @param nullFallback string to show if actual value is null
      */
Index: o/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/DescriptionFieldModel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/DescriptionFieldModel.java	(revision 6045)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*
- * Copyright (C) 2015 CLARIN
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package eu.clarin.cmdi.vlo.wicket.model;
-
-import eu.clarin.cmdi.vlo.FacetConstants;
-import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.model.IModel;
-
-/**
- *
- * @author Twan Goosen <twan.goosen@mpi.nl>
- */
-public class DescriptionFieldModel extends AbstractReadOnlyModel<String> {
-
-    private final IModel<String> fieldModel;
-
-    public DescriptionFieldModel(IModel<String> fieldModel) {
-        this.fieldModel = fieldModel;
-    }
-
-    @Override
-    public String getObject() {
-        final String object = fieldModel.getObject();
-        if (object == null) {
-            return null;
-        } else {
-            return object.replaceAll(FacetConstants.DESCRIPTION_LANGUAGE_PATTERN, "");
-        }
-    }
-
-    @Override
-    public void detach() {
-        fieldModel.detach();
-    }
-
-}
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/SolrFieldStringModel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/SolrFieldStringModel.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/SolrFieldStringModel.java	(revision 6046)
@@ -17,5 +17,5 @@
 package eu.clarin.cmdi.vlo.wicket.model;
 
-import eu.clarin.cmdi.vlo.FacetConstants;
+import eu.clarin.cmdi.vlo.VloWicketApplication;
 import java.util.Collection;
 import java.util.Iterator;
@@ -23,4 +23,5 @@
 import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.convert.IConverter;
 
 /**
@@ -44,5 +45,5 @@
      */
     public SolrFieldStringModel(IModel<SolrDocument> documentModel, String fieldName) {
-        fieldModel = new SolrFieldModel<Object>(documentModel, fieldName);
+        fieldModel = new SolrFieldModel<>(documentModel, fieldName);
         field = fieldName;
     }
@@ -60,5 +61,5 @@
         final Iterator<Object> iterator = fieldValues.iterator();
         if (iterator.hasNext()) {
-            final String firstValue = postprocessValue(iterator.next().toString());
+            final String firstValue = iterator.next().toString();
             if (iterator.hasNext()) {
                 return getMultipleValuesString(firstValue, iterator);
@@ -72,7 +73,8 @@
 
     protected String getMultipleValuesString(final String firstValue, final Iterator<Object> iterator) {
-        final StringBuilder valuesBuilder = new StringBuilder(firstValue).append("; ");
+        // for multiple value strings, run every individual value through the converter
+        final StringBuilder valuesBuilder = new StringBuilder(postprocessValue(firstValue)).append("; ");
         while (iterator.hasNext()) {
-            valuesBuilder.append(iterator.next().toString());
+            valuesBuilder.append(postprocessValue(iterator.next().toString()));
             if (iterator.hasNext()) {
                 valuesBuilder.append("; ");
@@ -90,7 +92,7 @@
     private String postprocessValue(String value) {
         if (value != null) {
-            if (FacetConstants.FIELD_DESCRIPTION.equals(field)) {
-                //remove language prefix
-                return value.replaceAll(FacetConstants.DESCRIPTION_LANGUAGE_PATTERN, "");
+            final IConverter<String> converter = getFieldValueConverter();
+            if (converter != null) {
+                return converter.convertToString(value, null);
             }
         }
@@ -98,3 +100,7 @@
     }
 
+    private IConverter<String> getFieldValueConverter() {
+        return VloWicketApplication.get().getFieldValueConverterProvider().getConverter(field);
+    }
+
 }
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/record/FieldsTablePanel.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/record/FieldsTablePanel.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/record/FieldsTablePanel.java	(revision 6046)
@@ -26,5 +26,5 @@
 import eu.clarin.cmdi.vlo.service.PageParametersConverter;
 import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
-import eu.clarin.cmdi.vlo.wicket.model.DescriptionFieldModel;
+import eu.clarin.cmdi.vlo.wicket.components.SmartLinkFieldValueLabel;
 import eu.clarin.cmdi.vlo.wicket.model.HandleLinkModel;
 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
@@ -35,5 +35,4 @@
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
-import org.apache.wicket.extensions.markup.html.basic.SmartLinkLabel;
 import org.apache.wicket.extensions.markup.html.basic.SmartLinkMultiLineLabel;
 import org.apache.wicket.markup.html.basic.Label;
@@ -118,9 +117,6 @@
     }
 
-    private Component createValueLabel(String id, final IModel<String> facetNameModel, final IModel<String> originalValueModel) {
+    private Component createValueLabel(String id, final IModel<String> facetNameModel, final IModel<String> valueModel) {
         final String fieldName = facetNameModel.getObject();
-
-        // allow for postprocessing or wrapping of the value model depending on the field
-        final IModel<String> valueModel = getValueModel(facetNameModel, originalValueModel);
 
         if (FacetConstants.FIELD_LANGUAGE_CODE.equals(facetNameModel.getObject())) {
@@ -128,5 +124,5 @@
         } else if (SMART_LINK_FIELDS.contains(fieldName)) {
             // create label that generates links
-            return new SmartLinkLabel(id, new HandleLinkModel(valueModel));
+            return new SmartLinkFieldValueLabel(id, new HandleLinkModel(valueModel), facetNameModel);
         } else {
             // add a label for the facet value
@@ -164,11 +160,3 @@
     }
 
-    private IModel<String> getValueModel(IModel<String> facetNameModel, IModel<String> valueModel) {
-        if (FacetConstants.FIELD_DESCRIPTION.equals(facetNameModel.getObject())) {
-            //wrap in model that removes the language prefix
-            return new DescriptionFieldModel(valueModel);
-        }
-        return valueModel;
-    }
-
 }
Index: /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FieldValueConverterProviderImpl.java
===================================================================
--- /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FieldValueConverterProviderImpl.java	(revision 6045)
+++ /vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FieldValueConverterProviderImpl.java	(revision 6046)
@@ -31,6 +31,6 @@
 public class FieldValueConverterProviderImpl implements FieldValueConverterProvider {
 
+    private final static Pattern LANGUAGE_CODE_PATTERN = Pattern.compile(FacetConstants.LANGUAGE_CODE_PATTERN);
     private final LanguageCodeUtils languageCodeUtils;
-    private Pattern LANGUAGE_CODE_PATTERN = Pattern.compile("(name|code):(.*)");
 
     public FieldValueConverterProviderImpl(LanguageCodeUtils languageCodeUtils) {
@@ -43,4 +43,6 @@
             case FacetConstants.FIELD_LANGUAGE_CODE:
                 return languageCodeConverter;
+            case FacetConstants.FIELD_DESCRIPTION:
+                return descriptionConverter;
             default:
                 return null;
@@ -49,4 +51,7 @@
     }
 
+    /**
+     * Abstract base class for one directional string converters
+     */
     private abstract class FieldValueConverter implements IConverter<String> {
 
@@ -58,4 +63,10 @@
     }
 
+    /**
+     * Converter for language code/name strings (following the pattern of
+     * {@link #LANGUAGE_CODE_PATTERN}) into language names
+     *
+     * @see LanguageCodeUtils#getLanguageNameForLanguageCode(java.lang.String)
+     */
     private final FieldValueConverter languageCodeConverter = new FieldValueConverter() {
 
@@ -75,5 +86,5 @@
                 }
             }
-            
+
             // does not match expected pattern, return original value
             return fieldValue;
@@ -82,3 +93,16 @@
     };
 
+    /**
+     * Converter for description field values that strips out any language code
+     * prefix
+     */
+    private final FieldValueConverter descriptionConverter = new FieldValueConverter() {
+
+        @Override
+        public String convertToString(String fieldValue, Locale locale) throws ConversionException {
+            return fieldValue.replaceAll(FacetConstants.DESCRIPTION_LANGUAGE_PATTERN, "");
+        }
+
+    };
+
 }
