Statistics
| Revision:

svn-gvsig-desktop / tags / Root_v06 / frameworks / _fwAndami / src / com / iver / andami / messages / Messages.java @ 4811

History | View | Annotate | Download (4.23 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package com.iver.andami.messages;
42

    
43
import java.io.FileInputStream;
44
import java.io.FileNotFoundException;
45
import java.io.IOException;
46
import java.io.InputStream;
47
import java.util.Locale;
48
import java.util.MissingResourceException;
49
import java.util.Properties;
50
import java.util.PropertyResourceBundle;
51
import java.util.ResourceBundle;
52

    
53

    
54
/**
55
 * Clase que accede a los recursos para la i18n
56
 */
57
public class Messages {
58
    /** DOCUMENT ME! */
59
    private static final String BUNDLE_NAME = "com.iver.andami.text";
60

    
61
    /** DOCUMENT ME! */
62
    private static ResourceBundle RESOURCE_BUNDLE = null;
63

    
64
    /**
65
     * Inicializa la clase con el locale adecuado
66
     *
67
     * @param loc Locale de la aplicaci?n
68
     */
69
    public static void init(Locale loc) {
70
        RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, loc);
71
    }
72

    
73
    /**
74
     * @param strLocale. Ejemplo: va para valenciano
75
     * Se trata de permitir coexistir el valenciano con el catal?n.
76
     * El m?todo buscar? un fichero properties llamado "text_va.properties"
77
     * para usarlo con RESOURCE_BUNDLE de donde sacar los mensajes
78
     * traducidos.
79
     */
80
    public static void init(String strLocale) {
81
        final String resName = BUNDLE_NAME.replace('.', '/') + "_" + strLocale + ".properties";
82
        InputStream stream = (InputStream)java.security.AccessController.doPrivileged(
83
            new java.security.PrivilegedAction() {
84
                public Object run() {
85
                    return this.getClass().getClassLoader().getResourceAsStream(resName);
86
                }
87
            }
88
        );
89
        if (stream != null) {
90
            // make sure it is buffered
91
            stream = new java.io.BufferedInputStream(stream);
92
            try {
93
                RESOURCE_BUNDLE = new PropertyResourceBundle(stream);
94
            } catch (Exception e) {
95
            } finally {
96
                try {
97
                    stream.close();
98
                } catch (Exception e) {
99
                    // to avoid propagating an IOException back into the caller
100
                    // (I'm assuming this is never going to happen, and if it does,
101
                    // I'm obeying the precedent of swallowing exceptions set by the
102
                    // existing code above)
103
                }
104
            }
105
        }
106
        
107
        
108
    }
109
    
110
    
111
    /**
112
     * Obtiene el valor del recurso con clave 'key'
113
     *
114
     * @param key clave del recurso que se quiere obtener
115
     *
116
     * @return recurso que se quiere obtener o !key! en caso de no encontrarlo.
117
     *         En dicho caso no se notifica al framework ya que  estos son los
118
     *         mensajes propios de la aplicaci?n y deben de estar todos
119
     */
120
    public static String getString(String key) {
121
        try {
122
            return RESOURCE_BUNDLE.getString(key);
123
        } catch (MissingResourceException e) {
124
            return '!' + key + '!';
125
        }
126
    }
127
    
128
    public static String get(String key) {
129
        try {
130
            return RESOURCE_BUNDLE.getString(key);
131
        } catch (MissingResourceException e) {
132
            return null;
133
        }
134
    }
135
}