Merge branch 'release-0.6.6'
[Sone.git] / src / main / java / net / pterodactylus / sone / freenet / L10nFilter.java
index 4d6a744..910e0d6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * FreenetSone - L10nFilter.java - Copyright © 2010 David Roden
+ * Sone - L10nFilter.java - Copyright © 2010 David Roden
  *
  * 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
 
 package net.pterodactylus.sone.freenet;
 
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
-import net.pterodactylus.util.template.DataProvider;
 import net.pterodactylus.util.template.Filter;
+import net.pterodactylus.util.template.TemplateContext;
 import freenet.l10n.BaseL10n;
 
 /**
@@ -48,8 +52,22 @@ public class L10nFilter implements Filter {
         * {@inheritDoc}
         */
        @Override
-       public String format(DataProvider dataProvider, Object data, Map<String, String> parameters) {
-               return l10n.getString(String.valueOf(data));
+       public String format(TemplateContext templateContext, Object data, Map<String, String> parameters) {
+               if (parameters.isEmpty()) {
+                       return l10n.getString(String.valueOf(data));
+               }
+               List<Object> parameterValues = new ArrayList<Object>();
+               int parameterIndex = 0;
+               while (parameters.containsKey(String.valueOf(parameterIndex))) {
+                       Object value = parameters.get(String.valueOf(parameterIndex));
+                       if (((String) value).startsWith("=")) {
+                               value = ((String) value).substring(1);
+                       } else {
+                               value = templateContext.get((String) value);
+                       }
+                       parameterValues.add(value);
+                       ++parameterIndex;
+               }
+               return new MessageFormat(l10n.getString(String.valueOf(data)), new Locale(l10n.getSelectedLanguage().shortCode)).format(parameterValues.toArray());
        }
-
 }