1 | package org.greenstone.gsdl3.util;
|
---|
2 |
|
---|
3 | import org.w3c.dom.Node;
|
---|
4 | import org.w3c.dom.NodeList;
|
---|
5 | import org.w3c.dom.Document;
|
---|
6 | import org.w3c.dom.Element;
|
---|
7 |
|
---|
8 | // other java classes
|
---|
9 | import java.io.File;
|
---|
10 | import java.util.HashMap;
|
---|
11 |
|
---|
12 | public class Translate {
|
---|
13 |
|
---|
14 | protected ConfigVars config_=null;
|
---|
15 | protected HashMap lang_map_=null;
|
---|
16 | protected Document doc_=null;
|
---|
17 | protected XMLConverter converter_ = null;
|
---|
18 | protected String default_lang_=null;
|
---|
19 |
|
---|
20 | public Translate() {
|
---|
21 | lang_map_ = new HashMap();
|
---|
22 | converter_ = new XMLConverter();
|
---|
23 | doc_ = converter_.newDOM();
|
---|
24 |
|
---|
25 | }
|
---|
26 |
|
---|
27 | public void setConfigVars(ConfigVars config) {
|
---|
28 | config_ = config;
|
---|
29 | }
|
---|
30 |
|
---|
31 | public void setDefaultLanguage(String lang) {
|
---|
32 | default_lang_=lang;
|
---|
33 | loadLanguage(lang);
|
---|
34 | }
|
---|
35 | /** load in a translation file to memory
|
---|
36 | * later - extend this to reload even if present?
|
---|
37 | */
|
---|
38 | public boolean loadLanguage(String lang) {
|
---|
39 | if (lang_map_.containsKey(lang)) {
|
---|
40 | return true;
|
---|
41 | }
|
---|
42 |
|
---|
43 | File lang_file = new File (GSFile.translateFile(config_, lang));
|
---|
44 | if (!lang_file.exists()) {
|
---|
45 | System.out.println("file "+lang_file.getPath()+" doesn't exist");
|
---|
46 | return false;
|
---|
47 | }
|
---|
48 | Document new_lang = converter_.getDOM(lang_file);
|
---|
49 | lang_map_.put(lang, new_lang.getDocumentElement());
|
---|
50 | return true;
|
---|
51 | }
|
---|
52 |
|
---|
53 | public Element getLanguageTree(String lang) {
|
---|
54 | return getLanguageTree(lang, default_lang_);
|
---|
55 | }
|
---|
56 | /** returns a new <translate> element - the nodes it contains are
|
---|
57 | * shared (I think) */
|
---|
58 | public Element getLanguageTree(String current_lang,
|
---|
59 | String default_lang) {
|
---|
60 |
|
---|
61 | Element tree = doc_.createElement("translate");
|
---|
62 | // load the current lang
|
---|
63 | Element current_node = doc_.createElement("current");
|
---|
64 | tree.appendChild(current_node);
|
---|
65 | loadLanguage(current_lang);
|
---|
66 | current_node.appendChild(doc_.importNode((Element)lang_map_.get(current_lang), true));
|
---|
67 |
|
---|
68 | if (default_lang==null) {
|
---|
69 | default_lang = default_lang_;
|
---|
70 | }
|
---|
71 | if (default_lang==null || default_lang.equals(current_lang)) {
|
---|
72 | // dont need to add the default tree
|
---|
73 | return tree;
|
---|
74 | }
|
---|
75 |
|
---|
76 | // add the default stuff on
|
---|
77 | Element default_node = doc_.createElement("default");
|
---|
78 | tree.appendChild(default_node);
|
---|
79 | loadLanguage(default_lang);
|
---|
80 | default_node.appendChild(doc_.importNode((Element)lang_map_.get(default_lang), true));
|
---|
81 |
|
---|
82 | return tree;
|
---|
83 | }
|
---|
84 | }
|
---|