// ***************************************************************************
// *
// *   Copyright (C) 2001-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
// * Afar language locale for Eritrea (Cadu/Laaqo 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_ER {
    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" }
    // }
    calendar{
        gregorian{
            monthNames{
                format{
                    wide{
                        "Qunxa Garablu",
                        "Kudo",
                        "Ciggilta Kudo",
                        "Agda Baxis",
                        "Caxah Alsa",
                        "Qasa Dirri",
                        "Qado Dirri",
                        "Liiqen",
                        "Waysu",
                        "Diteli",
                        "Ximoli",
                        "Kaxxa Garablu",
                    }
                }
            }
        }
    }
}
