﻿// ***************************************************************************
// *
// * Copyright (C) 2016 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/es_CO.xml
// *
// ***************************************************************************
es_CO{
    %%Parent{"es_419"}
    NumberElements{
        latn{
            miscPatterns{
                range{"de {0} a {1}"}
            }
            patterns{
                currencyFormat{"¤ #,##0.00"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{"."}
            }
        }
    }
    Version{"2.1.22.17"}
    calendar{
        generic{
            DateTimePatterns{
                "h:mm:ss a zzzz",
                "h:mm:ss a z",
                "h:mm:ss a",
                "h:mm a",
                "EEEE, d 'de' MMMM 'de' y G",
                "d 'de' MMMM 'de' y G",
                "d/MM/y G",
                "d/MM/yy GGGGG",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
            }
            availableFormats{
                GyMMMEd{"E, d MMM 'de' y G"}
                yyyyMMM{"MMM 'de' y G"}
                yyyyMMMEd{"EEE, d 'de' MMM 'de' y G"}
                yyyyMMMd{"d 'de' MMM 'de' y G"}
                yyyyQQQ{"QQQ 'de' y G"}
            }
            intervalFormats{
                M{
                    M{"M 'a' M"}
                }
                MEd{
                    M{"E d/MM 'al' E d/MM"}
                    d{"E d/MM 'a' E d/MM"}
                }
                MMM{
                    M{"MMM 'a' MMM"}
                }
                MMMEd{
                    M{"E d 'de' MMM 'al' E d 'de' MMM"}
                    d{"E d 'al' E d 'de' MMM"}
                }
                MMMd{
                    M{"d 'de' MMM 'al' d 'de' MMM"}
                    d{"d 'a' d 'de' MMM"}
                }
                Md{
                    M{"d/MM 'al' d/MM"}
                    d{"d/MM 'a' d/MM"}
                }
                d{
                    d{"d 'a' d"}
                }
                fallback{"{0} ‘al’ {1}"}
                y{
                    y{"y 'a' y G"}
                }
                yM{
                    M{"M/y 'a' M/y GGGGG"}
                    y{"M/y 'al' M/y GGGGG"}
                }
                yMEd{
                    M{"E, d/M/y 'al' E, d/M/y GGGGG"}
                    d{"E, d/M/y 'a' E, d/M/y GGGGG"}
                    y{"E, d/M/y 'al' E, d/M/y GGGGG"}
                }
                yMMM{
                    M{"MMM 'a' MMM 'de' y G"}
                    y{"MMM 'de' y 'a' MMM 'de' y"}
                }
                yMMMEd{
                    M{"E d 'de' MMM 'al' E d 'de' MMM 'de' y G"}
                    d{"E d 'de' MMM 'al' E d 'de' MMM 'de' y G"}
                    y{"E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y G"}
                }
                yMMMM{
                    M{"MMMM 'a' MMMM 'de' y G"}
                    y{"MMMM 'de' y 'a' MMMM 'de' y G"}
                }
                yMMMd{
                    M{"d 'de' MMM 'al' d 'de' MMM y G"}
                    d{"d 'a' d 'de' MMM 'de' y G"}
                    y{"d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y G"}
                }
                yMd{
                    M{"d/M/y 'al' d/M/y GGGGG"}
                    d{"d/M/y 'a' d/M/y GGGGG"}
                    y{"d/M/y 'al' d/M/y GGGGG"}
                }
            }
        }
        gregorian{
            DateTimePatterns{
                "h:mm:ss a zzzz",
                "h:mm:ss a z",
                "h:mm:ss a",
                "h:mm a",
                "EEEE, d 'de' MMMM 'de' y",
                "d 'de' MMMM 'de' y",
                "d/MM/y",
                "d/MM/yy",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
                "{1}, {0}",
            }
            availableFormats{
                GyMMM{"MMM 'de' y G"}
                GyMMMEd{"E, d MMM 'de' y G"}
                MMMEd{"E, d 'de' MMM"}
                MMMd{"d 'de' MMM"}
                MMMdd{"d 'de' MMM"}
                yMMM{"MMM 'de' y"}
                yMMMd{"d 'de' MMM 'de' y"}
            }
            dayNames{
                stand-alone{
                    narrow{
                        "d",
                        "l",
                        "m",
                        "m",
                        "j",
                        "v",
                        "s",
                    }
                }
            }
            intervalFormats{
                H{
                    H{"HH 'a' HH"}
                }
                Hm{
                    H{"HH:mm 'a' HH:mm"}
                    m{"HH:mm 'a' HH:mm"}
                }
                Hmv{
                    H{"HH:mm 'a' HH:mm v"}
                    m{"HH:mm 'a' HH:mm v"}
                }
                Hv{
                    H{"HH 'a' HH v"}
                }
                M{
                    M{"M 'a' M"}
                }
                MEd{
                    M{"E d/MM 'al' E d/MM"}
                    d{"E d/MM 'a' E d/MM"}
                }
                MMM{
                    M{"MMM 'a' MMM"}
                }
                MMMEd{
                    M{"E d 'de' MMM 'al' E d 'de' MMM"}
                    d{"E d 'al' E d 'de' MMM"}
                }
                MMMd{
                    M{"d 'de' MMM 'al' d 'de' MMM"}
                    d{"d 'a' d 'de' MMM"}
                }
                Md{
                    M{"d/MM 'al' d/MM"}
                    d{"d/MM 'a' d/MM"}
                }
                d{
                    d{"d 'a' d"}
                }
                fallback{"{0} ‘al’ {1}"}
                h{
                    a{"h a 'a' h a"}
                    h{"h 'a' h a"}
                }
                hm{
                    a{"h:mm a 'a' h:mm a"}
                    h{"h:mm 'a' h:mm a"}
                    m{"h:mm 'a' h:mm a"}
                }
                hmv{
                    a{"h:mm a 'a' h:mm a v"}
                    h{"h:mm 'a' h:mm a v"}
                    m{"h:mm 'a' h:mm a v"}
                }
                hv{
                    a{"h a 'a' h a v"}
                    h{"h 'a' h a v"}
                }
                y{
                    y{"y 'a' y"}
                }
                yM{
                    M{"MM/y 'a' MM/y"}
                    y{"MM/y 'al' MM/y"}
                }
                yMEd{
                    M{"E d/MM/y 'al' E d/MM/y"}
                    d{"E d/MM/y 'a' E d/MM/y"}
                    y{"E d/MM/y 'al' E d/MM/y"}
                }
                yMMM{
                    M{"MMM 'a' MMM 'de' y"}
                    y{"MMM 'de' y 'a' MMM 'de' y"}
                }
                yMMMEd{
                    M{"E d 'de' MMM 'al' E d 'de' MMM 'de' y"}
                    d{"E d 'al' E d 'de' MMM 'de' y"}
                    y{"E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y"}
                }
                yMMMM{
                    M{"MMMM 'a' MMMM 'de' y"}
                    y{"MMMM 'de' y 'a' MMMM 'de' y"}
                }
                yMMMd{
                    M{"d 'de' MMM 'al' d 'de' MMM 'de' y"}
                    d{"d 'a' d 'de' MMM 'de' y"}
                    y{"d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y"}
                }
                yMd{
                    M{"d/MM/y 'al' d/MM/y"}
                    d{"d/MM/y 'a' d/MM/y"}
                    y{"d/MM/y 'al' d/MM/y"}
                }
            }
            monthNames{
                stand-alone{
                    abbreviated{
                        "ene.",
                        "feb.",
                        "mar.",
                        "abr.",
                        "may.",
                        "jun.",
                        "jul.",
                        "ago.",
                        "sept.",
                        "oct.",
                        "nov.",
                        "dic.",
                    }
                }
            }
        }
    }
    fields{
        dayperiod{
            dn{"a. m./p. m."}
        }
    }
}
