/*
 *******************************************************************************
 * Copyright (C) 1996-2003, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 *
 * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_es.java,v $ 
 * $Date: 2003/06/03 18:49:33 $ 
 * $Revision: 1.6 $
 *
 *****************************************************************************************
 */

package com.ibm.icu.impl.data;

import java.util.ListResourceBundle;

public class HolidayBundle_es extends ListResourceBundle {
    static private final Object[][] fContents = {
        {   "All Saints' Day",          "Todos los Santos" },
        {   "Armistice Day",            "D\u00eda del Armisticio" },
        {   "Ascension",                "Ascensi\u00f3n" },
        {   "Benito Ju\u00e1rez Day",        "D\u00eda de la Benito Ju\u00e1rez" },
        {   "Boxing Day",               "D\u00eda en que se dan Aguinaldos Navide\u00f1os" },
        {   "Canada Day",               "D\u00eda del Canad\u00e1" },
        {   "Christmas Eve",            "V\u00EDspera de Navidad" },
        {   "Christmas",                "Navidad" },
        {   "Constitution Day",         "D\u00eda de la Constituci\u00f3n" },
        {   "Day of the Dead",          "D\u00eda de los Muertos" },
        {   "Easter Sunday",            "Pascua" },
        {   "Easter Monday",            "Pascua Lunes" },
        {   "Epiphany",                 "Epifan\u00eda" },
        {   "Father's Day",             "D\u00eda del Padre" },
        {   "Flag Day",                 "D\u00eda de la Bandera" },
        {   "Good Friday",              "Viernes Santo" },
        {   "Halloween",                "v\u00edspera de Todos los Santos" },
        {   "Independence Day",         "D\u00eda de la Independencia" },
        {   "Labor Day",                "D\u00eda de Trabajadores" },
        {   "Maundy Thursday",          "Jueves Santo" },
        {   "May Day",                  "Primero de Mayo" },
        {   "Memorial Day",             "D\u00eda de la Rememoraci\u00f3n" },
        {   "Mother's Day",             "D\u00eda de la Madre" },
        {   "New Year's Day",           "A\u00f1o Nuevo" },
        {   "Palm Sunday",              "Domingo de Ramos" },
        {   "Pentecost",                "Pentecost\u00e9s" },
        {   "Presidents' Day",          "D\u00eda de Presidentes" },
        {   "Revolution Day",           "D\u00eda de la Revoluci\u00f3n" },
        {   "Shrove Tuesday",           "Martes de Carnaval" },
        {   "Thanksgiving",             "D\u00eda de Acci\u00f3n de Gracias" },
        {   "Veterans' Day",            "D\u00eda de Veteranos" },
        {   "Victoria Day",             "D\u00eda de Victoria" },
        {   "Whit Sunday",              "Pentecost\u00e9s" },
    };

    public synchronized Object[][] getContents() { return fContents; }
};
