001: package com.calipso.reportgenerator.common;
002:
003: import org.apache.commons.configuration.Configuration;
004: import org.apache.commons.configuration.PropertiesConfiguration;
005:
006: import java.util.Locale;
007:
008: /**
009: * Esta clase se encarga de convertir los textos al lenguaje indicado. Implementa la internacionalización.
010: */
011:
012: public class LanguageTraslator {
013:
014: private static Locale locale;
015: private static ILanguageTraslator currentLanguage;
016: private static String path;
017:
018: /**
019: * Crea una nueva instancia de Locale segun el lenguaje
020: * por recibe por parametro
021: * @param language
022: * @param country
023: * @param languagePath
024: */
025: public static void newLocaleFrom(String language, String country,
026: String languagePath) {
027: locale = new Locale(language, country);
028: path = languagePath;
029: }
030:
031: public static Locale getLocale() {
032: return locale;
033: }
034:
035: /**
036: * Devuelve un String a partir del id.
037: * El idioma del String devuelto corresponde
038: * a la instancia del Locale actual.
039: * @param id
040: * @return
041: */
042: public static String traslate(String id) {
043: String s = "";
044: try {
045: s = getInstance().getExceptionFromId(id);
046: } catch (Exception e) {
047: ReportManagerLogger.error("Traslate Error:" + id);
048: s = id;
049: }
050: return s;
051: }
052:
053: /**
054: * Crea una instancia de la clase que contiene las traducciones
055: * segun el lenguaje definido en la instancia de Locale. Para
056: * cada lenguaje existe una clase diferente. Por defecto devuelve
057: * una clase que contiene las traducciones en castellano.
058: * @return ILanguageTraslator
059: */
060: private static ILanguageTraslator getInstance() {
061: Class languageTraslatorClass = null;
062: if ((currentLanguage == null) && ((locale != null))) {
063: if (locale.getLanguage().toUpperCase().equals("ES")) {
064: try {
065: languageTraslatorClass = Class
066: .forName("com.calipso.reportgenerator.common.LanguageTraslator"
067: + locale.getLanguage()
068: .toUpperCase());
069: } catch (Exception e) {
070: ReportManagerLogger
071: .error("ERROR - LanguageTraslator"
072: + locale.getLanguage()
073: .toUpperCase());
074: languageTraslatorClass = new LanguageTraslatorES()
075: .getClass(); //todo : revisar en modo EJB
076: }
077: try {
078: currentLanguage = (ILanguageTraslator) languageTraslatorClass
079: .newInstance();
080: } catch (Exception e) {
081: ReportManagerLogger
082: .error("ERROR - LanguageTraslator"
083: + locale.getLanguage()
084: .toUpperCase());
085: currentLanguage = null;
086: }
087: } else {
088: try {
089: Configuration configuration = new PropertiesConfiguration(
090: path + "/" + locale.getLanguage()
091: + ".properties");
092: currentLanguage = new LanguageTraslatorCustomizable(
093: configuration);
094: } catch (Exception e) {
095: ReportManagerLogger
096: .error("ERROR - LanguageTraslator"
097: + locale.getLanguage()
098: .toUpperCase());
099: currentLanguage = null;
100: }
101: }
102: }
103: return currentLanguage;
104: }
105: }
|