- ResourceBundleProducerNode now supports language parameter
[mir.git] / source / mir / producer / ResourceBundleProducerNode.java
index b7767cc..1adbb49 100755 (executable)
@@ -4,10 +4,12 @@ import java.util.*;
 import java.io.*;
 import org.apache.struts.util.MessageResources;
 import mir.util.*;
+import mir.misc.*;
 
 public class ResourceBundleProducerNode extends ProducerNodeDecorator {
   private String key;
   private String bundleIdentifier;
+  private String languageIdentifier;
 
   public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, ProducerNode aSubNode) {
     super(aSubNode);
@@ -16,12 +18,32 @@ public class ResourceBundleProducerNode extends ProducerNodeDecorator {
     key = aKey;
   }
 
+  public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, String aLanguageIdentifier, ProducerNode aSubNode) {
+    super(aSubNode);
+
+    bundleIdentifier = aBundleIdentifier;
+    languageIdentifier = aLanguageIdentifier;
+    key = aKey;
+  }
+
   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+    Object messages;
+
     try {
-      aValueMap.put(
-          key,
+      if (languageIdentifier!=null) {
+        messages =
+            new MessageMethodModel(
+                new Locale(ParameterExpander.expandExpression( aValueMap, languageIdentifier ), null ),
+                MessageResources.getMessageResources(ParameterExpander.expandExpression( aValueMap, bundleIdentifier ))
+            );
+      }
+      else {
+        messages =
           MessageResources.getMessageResources(
-              ParameterExpander.expandExpression( aValueMap, bundleIdentifier ))
+              ParameterExpander.expandExpression( aValueMap, bundleIdentifier ));
+      }
+      aValueMap.put(
+          key, messages
       );
 
       super.produce(aValueMap, aVerb, aLogger);