// ***************************************************************************
// *
// *   Copyright (C) 2001-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
// * Afar language locale for Ethiopia (Cadu/Carra Dialects).
// * Contributed by :
// *    Daniel Yacob <yacob@geez.org>, Ge'ez Frontier Foundation
// *    Afar terms provided by Mohamed Obakar <loubak@6sens.com> of the
// *    Afar Civilization Researcher, Melka Werer Research Center.

aa_ET {
    Version{ "x0.1" }


    // Measurement { "Metric" }
//    NumberElements {
//        ".",
//        ",",
//        ";",
//        "%",
//        "0",
//        "#",
//        "-",
//        "E",
//        "\u2030",
//        "\u221E",
//        "\uFFFD",
//    }
    NumberPatterns {
        "#,##0.###;-#,##0.###",
        "\u00A4#,##0.00;-\u00A4#,##0.00",
        "#,##0%",
        "#E0",
    }
    // PaperSize {
    //    Height { "297" }
    //    Width { "210" }
    //    Units { "mm" }
    // }

    // Currency display names
    Currencies {
        ETB { "$", "ETB" }
    }
    calendar{
        gregorian{
            monthNames{
                format{
                    wide{
                        "Qunxa Garablu",
                        "Kudo",
                        "Ciggilta Kudo",
                        "Agda Baxis",
                        "Caxah Alsa",
                        "Qasa Dirri",
                        "Qado Dirri",
                        "Liiqen",
                        "Waysu",
                        "Diteli",
                        "Ximoli",
                        "Kaxxa Garablu",
                    }
                }
            }
        }
    }
}
