~vcs-imports/xena/trunk

« back to all changes in this revision

Viewing changes to ext/src/xalan-j_2_7_1/src/org/apache/xml/res/XMLErrorResources_es.java

  • Committer: matthewoliver
  • Date: 2009-12-10 03:18:07 UTC
  • Revision ID: vcs-imports@canonical.com-20091210031807-l086qguzdlljtkl9
Merged Xena Testing into Xena Stable for the Xena 5 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one
 
3
 * or more contributor license agreements. See the NOTICE file
 
4
 * distributed with this work for additional information
 
5
 * regarding copyright ownership. The ASF licenses this file
 
6
 * to you under the Apache License, Version 2.0 (the  "License");
 
7
 * you may not use this file except in compliance with the License.
 
8
 * You may obtain a copy of the License at
 
9
 *
 
10
 *     http://www.apache.org/licenses/LICENSE-2.0
 
11
 *
 
12
 * Unless required by applicable law or agreed to in writing, software
 
13
 * distributed under the License is distributed on an "AS IS" BASIS,
 
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
15
 * See the License for the specific language governing permissions and
 
16
 * limitations under the License.
 
17
 */
 
18
/*
 
19
 * $Id: XMLErrorResources_es.java,v 1.2 2009/12/10 03:18:24 matthewoliver Exp $
 
20
 */
 
21
package org.apache.xml.res;
 
22
 
 
23
 
 
24
import java.util.ListResourceBundle;
 
25
import java.util.Locale;
 
26
import java.util.MissingResourceException;
 
27
import java.util.ResourceBundle;
 
28
 
 
29
/**
 
30
 * Set up error messages.
 
31
 * We build a two dimensional array of message keys and
 
32
 * message strings. In order to add a new message here,
 
33
 * you need to first add a String constant. And you need
 
34
 * to enter key, value pair as part of the contents
 
35
 * array. You also need to update MAX_CODE for error strings
 
36
 * and MAX_WARNING for warnings ( Needed for only information
 
37
 * purpose )
 
38
 */
 
39
public class XMLErrorResources_es extends ListResourceBundle
 
40
{
 
41
 
 
42
/*
 
43
 * This file contains error and warning messages related to Xalan Error
 
44
 * Handling.
 
45
 *
 
46
 *  General notes to translators:
 
47
 *
 
48
 *  1) Xalan (or more properly, Xalan-interpretive) and XSLTC are names of
 
49
 *     components.
 
50
 *     XSLT is an acronym for "XML Stylesheet Language: Transformations".
 
51
 *     XSLTC is an acronym for XSLT Compiler.
 
52
 *
 
53
 *  2) A stylesheet is a description of how to transform an input XML document
 
54
 *     into a resultant XML document (or HTML document or text).  The
 
55
 *     stylesheet itself is described in the form of an XML document.
 
56
 *
 
57
 *  3) A template is a component of a stylesheet that is used to match a
 
58
 *     particular portion of an input document and specifies the form of the
 
59
 *     corresponding portion of the output document.
 
60
 *
 
61
 *  4) An element is a mark-up tag in an XML document; an attribute is a
 
62
 *     modifier on the tag.  For example, in <elem attr='val' attr2='val2'>
 
63
 *     "elem" is an element name, "attr" and "attr2" are attribute names with
 
64
 *     the values "val" and "val2", respectively.
 
65
 *
 
66
 *  5) A namespace declaration is a special attribute that is used to associate
 
67
 *     a prefix with a URI (the namespace).  The meanings of element names and
 
68
 *     attribute names that use that prefix are defined with respect to that
 
69
 *     namespace.
 
70
 *
 
71
 *  6) "Translet" is an invented term that describes the class file that
 
72
 *     results from compiling an XML stylesheet into a Java class.
 
73
 *
 
74
 *  7) XPath is a specification that describes a notation for identifying
 
75
 *     nodes in a tree-structured representation of an XML document.  An
 
76
 *     instance of that notation is referred to as an XPath expression.
 
77
 *
 
78
 */
 
79
 
 
80
  /*
 
81
   * Message keys
 
82
   */
 
83
  public static final String ER_FUNCTION_NOT_SUPPORTED = "ER_FUNCTION_NOT_SUPPORTED";
 
84
  public static final String ER_CANNOT_OVERWRITE_CAUSE = "ER_CANNOT_OVERWRITE_CAUSE";
 
85
  public static final String ER_NO_DEFAULT_IMPL = "ER_NO_DEFAULT_IMPL";
 
86
  public static final String ER_CHUNKEDINTARRAY_NOT_SUPPORTED = "ER_CHUNKEDINTARRAY_NOT_SUPPORTED";
 
87
  public static final String ER_OFFSET_BIGGER_THAN_SLOT = "ER_OFFSET_BIGGER_THAN_SLOT";
 
88
  public static final String ER_COROUTINE_NOT_AVAIL = "ER_COROUTINE_NOT_AVAIL";
 
89
  public static final String ER_COROUTINE_CO_EXIT = "ER_COROUTINE_CO_EXIT";
 
90
  public static final String ER_COJOINROUTINESET_FAILED = "ER_COJOINROUTINESET_FAILED";
 
91
  public static final String ER_COROUTINE_PARAM = "ER_COROUTINE_PARAM";
 
92
  public static final String ER_PARSER_DOTERMINATE_ANSWERS = "ER_PARSER_DOTERMINATE_ANSWERS";
 
93
  public static final String ER_NO_PARSE_CALL_WHILE_PARSING = "ER_NO_PARSE_CALL_WHILE_PARSING";
 
94
  public static final String ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = "ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED";
 
95
  public static final String ER_ITERATOR_AXIS_NOT_IMPLEMENTED = "ER_ITERATOR_AXIS_NOT_IMPLEMENTED";
 
96
  public static final String ER_ITERATOR_CLONE_NOT_SUPPORTED = "ER_ITERATOR_CLONE_NOT_SUPPORTED";
 
97
  public static final String ER_UNKNOWN_AXIS_TYPE = "ER_UNKNOWN_AXIS_TYPE";
 
98
  public static final String ER_AXIS_NOT_SUPPORTED = "ER_AXIS_NOT_SUPPORTED";
 
99
  public static final String ER_NO_DTMIDS_AVAIL = "ER_NO_DTMIDS_AVAIL";
 
100
  public static final String ER_NOT_SUPPORTED = "ER_NOT_SUPPORTED";
 
101
  public static final String ER_NODE_NON_NULL = "ER_NODE_NON_NULL";
 
102
  public static final String ER_COULD_NOT_RESOLVE_NODE = "ER_COULD_NOT_RESOLVE_NODE";
 
103
  public static final String ER_STARTPARSE_WHILE_PARSING = "ER_STARTPARSE_WHILE_PARSING";
 
104
  public static final String ER_STARTPARSE_NEEDS_SAXPARSER = "ER_STARTPARSE_NEEDS_SAXPARSER";
 
105
  public static final String ER_COULD_NOT_INIT_PARSER = "ER_COULD_NOT_INIT_PARSER";
 
106
  public static final String ER_EXCEPTION_CREATING_POOL = "ER_EXCEPTION_CREATING_POOL";
 
107
  public static final String ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = "ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE";
 
108
  public static final String ER_SCHEME_REQUIRED = "ER_SCHEME_REQUIRED";
 
109
  public static final String ER_NO_SCHEME_IN_URI = "ER_NO_SCHEME_IN_URI";
 
110
  public static final String ER_NO_SCHEME_INURI = "ER_NO_SCHEME_INURI";
 
111
  public static final String ER_PATH_INVALID_CHAR = "ER_PATH_INVALID_CHAR";
 
112
  public static final String ER_SCHEME_FROM_NULL_STRING = "ER_SCHEME_FROM_NULL_STRING";
 
113
  public static final String ER_SCHEME_NOT_CONFORMANT = "ER_SCHEME_NOT_CONFORMANT";
 
114
  public static final String ER_HOST_ADDRESS_NOT_WELLFORMED = "ER_HOST_ADDRESS_NOT_WELLFORMED";
 
115
  public static final String ER_PORT_WHEN_HOST_NULL = "ER_PORT_WHEN_HOST_NULL";
 
116
  public static final String ER_INVALID_PORT = "ER_INVALID_PORT";
 
117
  public static final String ER_FRAG_FOR_GENERIC_URI ="ER_FRAG_FOR_GENERIC_URI";
 
118
  public static final String ER_FRAG_WHEN_PATH_NULL = "ER_FRAG_WHEN_PATH_NULL";
 
119
  public static final String ER_FRAG_INVALID_CHAR = "ER_FRAG_INVALID_CHAR";
 
120
  public static final String ER_PARSER_IN_USE = "ER_PARSER_IN_USE";
 
121
  public static final String ER_CANNOT_CHANGE_WHILE_PARSING = "ER_CANNOT_CHANGE_WHILE_PARSING";
 
122
  public static final String ER_SELF_CAUSATION_NOT_PERMITTED = "ER_SELF_CAUSATION_NOT_PERMITTED";
 
123
  public static final String ER_NO_USERINFO_IF_NO_HOST = "ER_NO_USERINFO_IF_NO_HOST";
 
124
  public static final String ER_NO_PORT_IF_NO_HOST = "ER_NO_PORT_IF_NO_HOST";
 
125
  public static final String ER_NO_QUERY_STRING_IN_PATH = "ER_NO_QUERY_STRING_IN_PATH";
 
126
  public static final String ER_NO_FRAGMENT_STRING_IN_PATH = "ER_NO_FRAGMENT_STRING_IN_PATH";
 
127
  public static final String ER_CANNOT_INIT_URI_EMPTY_PARMS = "ER_CANNOT_INIT_URI_EMPTY_PARMS";
 
128
  public static final String ER_METHOD_NOT_SUPPORTED ="ER_METHOD_NOT_SUPPORTED";
 
129
  public static final String ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = "ER_INCRSAXSRCFILTER_NOT_RESTARTABLE";
 
130
  public static final String ER_XMLRDR_NOT_BEFORE_STARTPARSE = "ER_XMLRDR_NOT_BEFORE_STARTPARSE";
 
131
  public static final String ER_AXIS_TRAVERSER_NOT_SUPPORTED = "ER_AXIS_TRAVERSER_NOT_SUPPORTED";
 
132
  public static final String ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = "ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER";
 
133
  public static final String ER_SYSTEMID_UNKNOWN = "ER_SYSTEMID_UNKNOWN";
 
134
  public static final String ER_LOCATION_UNKNOWN = "ER_LOCATION_UNKNOWN";
 
135
  public static final String ER_PREFIX_MUST_RESOLVE = "ER_PREFIX_MUST_RESOLVE";
 
136
  public static final String ER_CREATEDOCUMENT_NOT_SUPPORTED = "ER_CREATEDOCUMENT_NOT_SUPPORTED";
 
137
  public static final String ER_CHILD_HAS_NO_OWNER_DOCUMENT = "ER_CHILD_HAS_NO_OWNER_DOCUMENT";
 
138
  public static final String ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = "ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT";
 
139
  public static final String ER_CANT_OUTPUT_TEXT_BEFORE_DOC = "ER_CANT_OUTPUT_TEXT_BEFORE_DOC";
 
140
  public static final String ER_CANT_HAVE_MORE_THAN_ONE_ROOT = "ER_CANT_HAVE_MORE_THAN_ONE_ROOT";
 
141
  public static final String ER_ARG_LOCALNAME_NULL = "ER_ARG_LOCALNAME_NULL";
 
142
  public static final String ER_ARG_LOCALNAME_INVALID = "ER_ARG_LOCALNAME_INVALID";
 
143
  public static final String ER_ARG_PREFIX_INVALID = "ER_ARG_PREFIX_INVALID";
 
144
  public static final String ER_NAME_CANT_START_WITH_COLON = "ER_NAME_CANT_START_WITH_COLON";
 
145
 
 
146
  /*
 
147
   * Now fill in the message text.
 
148
   * Then fill in the message text for that message code in the
 
149
   * array. Use the new error code as the index into the array.
 
150
   */
 
151
 
 
152
  // Error messages...
 
153
 
 
154
  /**
 
155
   * Get the lookup table for error messages
 
156
   *
 
157
   * @return The association list.
 
158
   */
 
159
  public Object[][] getContents()
 
160
  {
 
161
    return new Object[][] {
 
162
 
 
163
  /** Error message ID that has a null message, but takes in a single object.    */
 
164
    {"ER0000" , "{0}" },
 
165
 
 
166
    { ER_FUNCTION_NOT_SUPPORTED,
 
167
      "\u00a1Funci\u00f3n no soportada!"},
 
168
 
 
169
    { ER_CANNOT_OVERWRITE_CAUSE,
 
170
      "No se puede escribir encima de la causa"},
 
171
 
 
172
    { ER_NO_DEFAULT_IMPL,
 
173
      "No se ha encontrado una implementaci\u00f3n predeterminada "},
 
174
 
 
175
    { ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
 
176
      "ChunkedIntArray({0}) no soportada actualmente"},
 
177
 
 
178
    { ER_OFFSET_BIGGER_THAN_SLOT,
 
179
      "El desplazamiento es mayor que el espacio"},
 
180
 
 
181
    { ER_COROUTINE_NOT_AVAIL,
 
182
      "Corrutina no disponible, id={0}"},
 
183
 
 
184
    { ER_COROUTINE_CO_EXIT,
 
185
      "CoroutineManager ha recibido una petici\u00f3n co_exit()"},
 
186
 
 
187
    { ER_COJOINROUTINESET_FAILED,
 
188
      "Anomal\u00eda de co_joinCoroutineSet()"},
 
189
 
 
190
    { ER_COROUTINE_PARAM,
 
191
      "Error del par\u00e1metro de corrutina ({0})"},
 
192
 
 
193
    { ER_PARSER_DOTERMINATE_ANSWERS,
 
194
      "\nINESPERADO: Respuestas doTerminate del analizador {0}"},
 
195
 
 
196
    { ER_NO_PARSE_CALL_WHILE_PARSING,
 
197
      "No se puede llamar a parse mientras se est\u00e1 analizando"},
 
198
 
 
199
    { ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
 
200
      "Error: El iterador escrito para el eje {0} no est\u00e1 implementado"},
 
201
 
 
202
    { ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
 
203
      "Error: El iterador para el eje {0} no est\u00e1 implementado "},
 
204
 
 
205
    { ER_ITERATOR_CLONE_NOT_SUPPORTED,
 
206
      "La r\u00e9plica del iterador no est\u00e1 soportada"},
 
207
 
 
208
    { ER_UNKNOWN_AXIS_TYPE,
 
209
      "Tipo de cruce de eje desconocido: {0}"},
 
210
 
 
211
    { ER_AXIS_NOT_SUPPORTED,
 
212
      "Cruzador de eje no soportado: {0}"},
 
213
 
 
214
    { ER_NO_DTMIDS_AVAIL,
 
215
      "No hay m\u00e1s ID de DTM disponibles"},
 
216
 
 
217
    { ER_NOT_SUPPORTED,
 
218
      "No soportado: {0}"},
 
219
 
 
220
    { ER_NODE_NON_NULL,
 
221
      "El nodo no debe ser nulo para getDTMHandleFromNode"},
 
222
 
 
223
    { ER_COULD_NOT_RESOLVE_NODE,
 
224
      "No se puede resolver el nodo como un manejador"},
 
225
 
 
226
    { ER_STARTPARSE_WHILE_PARSING,
 
227
       "No se puede llamar a startParse mientras se est\u00e1 analizando"},
 
228
 
 
229
    { ER_STARTPARSE_NEEDS_SAXPARSER,
 
230
       "startParse necesita un SAXParser no nulo"},
 
231
 
 
232
    { ER_COULD_NOT_INIT_PARSER,
 
233
       "No se ha podido inicializar el analizador con"},
 
234
 
 
235
    { ER_EXCEPTION_CREATING_POOL,
 
236
       "Se ha producido una excepci\u00f3n al crear la nueva instancia de la agrupaci\u00f3n"},
 
237
 
 
238
    { ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
 
239
       "La v\u00eda de acceso contiene una secuencia de escape no v\u00e1lida"},
 
240
 
 
241
    { ER_SCHEME_REQUIRED,
 
242
       "\u00a1Se necesita un esquema!"},
 
243
 
 
244
    { ER_NO_SCHEME_IN_URI,
 
245
       "No se ha encontrado un esquema en el URI: {0}"},
 
246
 
 
247
    { ER_NO_SCHEME_INURI,
 
248
       "No se ha encontrado un esquema en el URI"},
 
249
 
 
250
    { ER_PATH_INVALID_CHAR,
 
251
       "La v\u00eda de acceso contiene un car\u00e1cter no v\u00e1lido: {0}"},
 
252
 
 
253
    { ER_SCHEME_FROM_NULL_STRING,
 
254
       "No se puede establecer un esquema de una serie nula"},
 
255
 
 
256
    { ER_SCHEME_NOT_CONFORMANT,
 
257
       "El esquema no es compatible."},
 
258
 
 
259
    { ER_HOST_ADDRESS_NOT_WELLFORMED,
 
260
       "El sistema principal no es una direcci\u00f3n bien formada"},
 
261
 
 
262
    { ER_PORT_WHEN_HOST_NULL,
 
263
       "No se puede establecer el puerto si el sistema principal es nulo"},
 
264
 
 
265
    { ER_INVALID_PORT,
 
266
       "N\u00famero de puerto no v\u00e1lido"},
 
267
 
 
268
    { ER_FRAG_FOR_GENERIC_URI,
 
269
       "S\u00f3lo se puede establecer el fragmento para un URI gen\u00e9rico"},
 
270
 
 
271
    { ER_FRAG_WHEN_PATH_NULL,
 
272
       "No se puede establecer el fragmento si la v\u00eda de acceso es nula"},
 
273
 
 
274
    { ER_FRAG_INVALID_CHAR,
 
275
       "El fragmento contiene un car\u00e1cter no v\u00e1lido"},
 
276
 
 
277
    { ER_PARSER_IN_USE,
 
278
      "El analizador ya est\u00e1 en uso"},
 
279
 
 
280
    { ER_CANNOT_CHANGE_WHILE_PARSING,
 
281
      "No se puede cambiar {0} {1} mientras se analiza"},
 
282
 
 
283
    { ER_SELF_CAUSATION_NOT_PERMITTED,
 
284
      "Autocausalidad no permitida"},
 
285
 
 
286
    { ER_NO_USERINFO_IF_NO_HOST,
 
287
      "No se puede especificar la informaci\u00f3n de usuario si no se ha especificado el sistema principal"},
 
288
 
 
289
    { ER_NO_PORT_IF_NO_HOST,
 
290
      "No se puede especificar el puerto si no se ha especificado el sistema principal"},
 
291
 
 
292
    { ER_NO_QUERY_STRING_IN_PATH,
 
293
      "No se puede especificar la serie de consulta en la v\u00eda de acceso y en la serie de consulta"},
 
294
 
 
295
    { ER_NO_FRAGMENT_STRING_IN_PATH,
 
296
      "No se puede especificar el fragmento en la v\u00eda de acceso y en el fragmento"},
 
297
 
 
298
    { ER_CANNOT_INIT_URI_EMPTY_PARMS,
 
299
      "No se puede inicializar el URI con par\u00e1metros vac\u00edos"},
 
300
 
 
301
    { ER_METHOD_NOT_SUPPORTED,
 
302
      "El m\u00e9todo no est\u00e1 a\u00fan soportado "},
 
303
 
 
304
    { ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
 
305
      "IncrementalSAXSource_Filter no es actualmente reiniciable"},
 
306
 
 
307
    { ER_XMLRDR_NOT_BEFORE_STARTPARSE,
 
308
      "XMLReader no debe ir antes que la petici\u00f3n startParse"},
 
309
 
 
310
    { ER_AXIS_TRAVERSER_NOT_SUPPORTED,
 
311
      "Cruzador de eje no soportado: {0}"},
 
312
 
 
313
    { ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
 
314
      "\u00a1Se ha creado ListingErrorHandler con PrintWriter nulo!"},
 
315
 
 
316
    { ER_SYSTEMID_UNKNOWN,
 
317
      "SystemId desconocido"},
 
318
 
 
319
    { ER_LOCATION_UNKNOWN,
 
320
      "Ubicaci\u00f3n del error desconocida"},
 
321
 
 
322
    { ER_PREFIX_MUST_RESOLVE,
 
323
      "El prefijo debe resolverse como un espacio de nombres: {0}"},
 
324
 
 
325
    { ER_CREATEDOCUMENT_NOT_SUPPORTED,
 
326
      "\u00a1createDocument() no soportada en XPathContext!"},
 
327
 
 
328
    { ER_CHILD_HAS_NO_OWNER_DOCUMENT,
 
329
      "\u00a1El hijo atributo no tiene un documento propietario!"},
 
330
 
 
331
    { ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
 
332
      "\u00a1El hijo atributo no tiene un elemento documento propietario!"},
 
333
 
 
334
    { ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
 
335
      "\u00a1Aviso: no puede haber salida de texto antes del elemento documento!  Ignorando..."},
 
336
 
 
337
    { ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
 
338
      "\u00a1No puede haber m\u00e1s de una ra\u00edz en DOM!"},
 
339
 
 
340
    { ER_ARG_LOCALNAME_NULL,
 
341
       "El argumento 'localName' es nulo"},
 
342
 
 
343
    // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
 
344
    // The localname is the portion after the optional colon; the message indicates
 
345
    // that there is a problem with that part of the QNAME.
 
346
    { ER_ARG_LOCALNAME_INVALID,
 
347
       "Localname en QNAME debe ser un NCName v\u00e1lido"},
 
348
 
 
349
    // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
 
350
    // The prefix is the portion before the optional colon; the message indicates
 
351
    // that there is a problem with that part of the QNAME.
 
352
    { ER_ARG_PREFIX_INVALID,
 
353
       "El prefijo en QNAME debe ser un NCName v\u00e1lido"},
 
354
 
 
355
    { ER_NAME_CANT_START_WITH_COLON,
 
356
      "El nombre no puede empezar con dos puntos"},
 
357
 
 
358
    { "BAD_CODE", "El par\u00e1metro para createMessage estaba fuera de los l\u00edmites"},
 
359
    { "FORMAT_FAILED", "Se ha generado una excepci\u00f3n durante la llamada messageFormat"},
 
360
    { "line", "L\u00ednea n\u00fam."},
 
361
    { "column","Columna n\u00fam."}
 
362
 
 
363
 
 
364
  };
 
365
  }
 
366
 
 
367
  /**
 
368
   *   Return a named ResourceBundle for a particular locale.  This method mimics the behavior
 
369
   *   of ResourceBundle.getBundle().
 
370
   *
 
371
   *   @param className the name of the class that implements the resource bundle.
 
372
   *   @return the ResourceBundle
 
373
   *   @throws MissingResourceException
 
374
   */
 
375
  public static final XMLErrorResources loadResourceBundle(String className)
 
376
          throws MissingResourceException
 
377
  {
 
378
 
 
379
    Locale locale = Locale.getDefault();
 
380
    String suffix = getResourceSuffix(locale);
 
381
 
 
382
    try
 
383
    {
 
384
 
 
385
      // first try with the given locale
 
386
      return (XMLErrorResources) ResourceBundle.getBundle(className
 
387
              + suffix, locale);
 
388
    }
 
389
    catch (MissingResourceException e)
 
390
    {
 
391
      try  // try to fall back to en_US if we can't load
 
392
      {
 
393
 
 
394
        // Since we can't find the localized property file,
 
395
        // fall back to en_US.
 
396
        return (XMLErrorResources) ResourceBundle.getBundle(className,
 
397
                new Locale("es", "ES"));
 
398
      }
 
399
      catch (MissingResourceException e2)
 
400
      {
 
401
 
 
402
        // Now we are really in trouble.
 
403
        // very bad, definitely very bad...not going to get very far
 
404
        throw new MissingResourceException(
 
405
          "Could not load any resource bundles.", className, "");
 
406
      }
 
407
    }
 
408
  }
 
409
 
 
410
  /**
 
411
   * Return the resource file suffic for the indicated locale
 
412
   * For most locales, this will be based the language code.  However
 
413
   * for Chinese, we do distinguish between Taiwan and PRC
 
414
   *
 
415
   * @param locale the locale
 
416
   * @return an String suffix which canbe appended to a resource name
 
417
   */
 
418
  private static final String getResourceSuffix(Locale locale)
 
419
  {
 
420
 
 
421
    String suffix = "_" + locale.getLanguage();
 
422
    String country = locale.getCountry();
 
423
 
 
424
    if (country.equals("TW"))
 
425
      suffix += "_" + country;
 
426
 
 
427
    return suffix;
 
428
  }
 
429
 
 
430
}