diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/freemarker/I18nStringTemplateModel.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/freemarker/I18nStringTemplateModel.java index 6132a55dc..8d16f6c03 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/freemarker/I18nStringTemplateModel.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/freemarker/I18nStringTemplateModel.java @@ -3,7 +3,6 @@ package edu.cornell.mannlib.vitro.webapp.i18n.freemarker; import java.text.MessageFormat; -import java.util.Arrays; import java.util.List; import org.apache.commons.logging.Log; @@ -92,11 +91,11 @@ public class I18nStringTemplateModel implements TemplateMethodModelEx, * @param arguments that should be listed before message and substituted in the message itself * @return */ - private String getOnlineTranslationsFormattedMessage(String preProcessed, Object[] unwrappedArgs) { + private String getOnlineTranslationsFormattedMessage(String preProcessed, Object[] args) { String[] parts = preProcessed.split(I18nBundle.intSep); final int messageIndex = parts.length -1; - String message = MessageFormat.format(parts[messageIndex], unwrappedArgs); - String[] arguments = Arrays.copyOf(unwrappedArgs, unwrappedArgs.length, String[].class); + String message = MessageFormat.format(parts[messageIndex], args); + String[] arguments = convertToArrayOfStrings(args); parts[messageIndex] = ""; String result = String.join(I18nBundle.intSep, parts) + String.join(I18nBundle.intSep, arguments) + @@ -104,6 +103,17 @@ public class I18nStringTemplateModel implements TemplateMethodModelEx, return result; } + private String[] convertToArrayOfStrings(Object[] args) { + String[] result = new String[args.length]; + for (int i = 0; i < result.length; i++) + if (args[i] != null) { + result[i] = args[i].toString(); + } else { + result[i] = ""; + } + return result; + } + private static boolean isOnlineTranslationsEnabled() { return DeveloperSettings.getInstance().getBoolean(Key.I18N_ONLINE_TRANSLATION); }