﻿// ***************************************************************************
// *
// *   Copyright (C) 1997-2002, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************

gl {
    Version { "1.0" }
    DayAbbreviations { 
        "Dom",
        "Lun",
        "Mar",
        "Mér",
        "Xov",
        "Ven",
        "Sáb",
    }
    DayNames { 
        "Domingo",
        "Luns",
        "Martes",
        "Mércores",
        "Xoves",
        "Venres",
        "Sábado",
    }
    MonthAbbreviations { 
        "Xan",
        "Feb",
        "Mar",
        "Abr",
        "Mai",
        "Xuñ",
        "Xul",
        "Ago",
        "Set",
        "Out",
        "Nov",
        "Dec",
    }
    MonthNames { 
        "Xaneiro",
        "Febreiro",
        "Marzo",
        "Abril",
        "Maio",
        "Xuño",
        "Xullo",
        "Agosto",
        "Setembro",
        "Outubro",
        "Novembro",
        "Decembro",
    }
    NumberElements { 
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "‰",
        "∞",
        "�",
        ",",
    }
    LocaleID:int { 0x56 }
//    LocaleScript{ 
//        "Latn",  // ISO 15924 Name 
//    }
    ExemplarCharacters { "[a-z \u00e1 \u00e9 \u00ed \u00f3 \u00fa \u00fc \u00f1]" }
    
    // /**************** Info Below is needed ****************/
    // CollationElements{}
    // Countries{}
    // Eras{}
    // Languages{}
    // ShortLanguage { }
    // localPatternChars{}
    //


    // Currency display names
    Currencies {
        ESP { "Pta", "ESP" }
    }
}
