| 1 19 20 package org.lucane.webconnector.util; 21 22 import java.io.*; 23 import java.net.*; 24 import java.util.*; 25 26 import org.lucane.common.Logging; 27 import org.lucane.common.concepts.UserConcept; 28 import org.lucane.webconnector.WebApp; 29 import org.lucane.webconnector.security.LucanePrincipal; 30 31 32 35 public class Translation 36 { 37 private static HashMap translations = new HashMap(); 38 39 public static Translation get(WebApp app, LucanePrincipal principal) 40 { 41 try { 42 return get(app, principal.getUser()); 43 } catch (Exception e) { 44 return get(app, "en"); 45 } 46 } 47 48 public static Translation get(WebApp app, UserConcept user) 49 { 50 return get(app, user.getLanguage()); 51 } 52 53 public static Translation get(WebApp app, String lang) 54 { 55 Translation t = (Translation)translations.get(app.getName() + "-" + lang); 56 if(t == null) 57 { 58 t = new Translation(); 59 t.load(app, lang); 60 translations.put(app.getName() + "-" + lang, t); 61 } 62 63 return t; 64 } 65 66 68 private ResourceBundle bundle; 69 private ResourceBundle defaultBundle; 70 71 75 private void load(WebApp app, String lang) 76 { 77 String appdir = app.getDirectory(); 78 try { 79 InputStream is = new URL(appdir + "messages/messages.properties").openStream(); 80 bundle = new PropertyResourceBundle(is); 81 defaultBundle = bundle; 82 } catch(Exception e) { 83 bundle = null; 84 defaultBundle = null; 85 } 86 87 try { 88 InputStream is = new URL(appdir + "messages/messages_" + lang + ".properties").openStream(); 89 bundle = new PropertyResourceBundle(is); 90 } catch(Exception e) { 91 if(bundle == null) 92 Logging.getLogger().info("unable to set language"); 93 } 94 } 95 96 102 public String tr(String origin) 103 { 104 try { 105 return bundle.getString(origin); 106 } catch(Exception e) { 107 try { 108 return defaultBundle.getString(origin); 109 } catch(Exception e2) { 110 return origin; 111 } 112 } 113 } 114 } 115 | Popular Tags |