source: trunk/gsdl3/src/java/org/greenstone/gsdl3/util/Translate.java@ 3848

Last change on this file since 3848 was 3441, checked in by kjdon, 22 years ago

uses new GSFile methods

  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1package org.greenstone.gsdl3.util;
2
3import org.w3c.dom.Node;
4import org.w3c.dom.NodeList;
5import org.w3c.dom.Document;
6import org.w3c.dom.Element;
7
8// other java classes
9import java.io.File;
10import java.util.HashMap;
11
12public 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}
Note: See TracBrowser for help on using the repository browser.