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

fr_BE {
    Version{ "1.1" }
    DateTimePatterns { 
        "H' h 'mm' min 'ss' s 'z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "EEEE d MMMM yyyy",
        "d MMMM yyyy",
        "dd-MMM-yy",
        "d/MM/yy",
        "{1} {0}",
    }
    DateTimeElements:intvector {
        2,
        1,
    }
    LocaleID:int { 0x080c }
//    LocaleString { "fr_BE" }
    NumberElements { 
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ",",
    }
//    ShortCountry { "BEL" }
    zoneStrings { 
        {
            "Africa/Casablanca",
            "GMT",
            "GMT",
            "GMT",
            "GMT",
        }
    }
    NumberPatterns {
        "#,##0.###;-#,##0.###",
        "#,##0.00 \u00a4;-#,##0.00 \u00a4",
        "#,##0%",
        "#E0",
    }
    
    // Reuse Swiss French spellout rules.  Also for French in Zaire, 
    // but we've no locale for it yet.
    SpelloutRules:alias { "/ICUDATA/fr_CH" }
}
