add: Allow TranslationCommands to be serialized
[gigi.git] / src / org / cacert / gigi / output / template / TranslateCommand.java
1 package org.cacert.gigi.output.template;
2
3 import java.io.PrintWriter;
4 import java.io.Serializable;
5 import java.util.Collection;
6 import java.util.Map;
7
8 import org.cacert.gigi.localisation.Language;
9 import org.cacert.gigi.util.HTMLEncoder;
10
11 /**
12  * Wraps a String that needs to be translated before it is printed to the user.
13  */
14 public final class TranslateCommand implements Translatable, Serializable {
15
16     private static final long serialVersionUID = 1L;
17
18     private final String raw;
19
20     /**
21      * Creates a new TranslateCommand that wraps the given String.
22      * 
23      * @param raw
24      *            the String to be translated.
25      */
26     public TranslateCommand(String raw) {
27         this.raw = raw;
28     }
29
30     @Override
31     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
32         String translation = l.getTranslation(raw);
33         if (vars.containsKey(Outputable.OUT_KEY_PLAIN)) {
34             out.print(translation);
35         } else {
36             out.print(HTMLEncoder.encodeHTML(translation));
37         }
38     }
39
40     /**
41      * Gets the raw, untranslated String.
42      * 
43      * @return the raw, untranslated String.
44      */
45     public String getRaw() {
46         return raw;
47     }
48
49     @Override
50     public void addTranslations(Collection<String> s) {
51         s.add(raw);
52     }
53 }