// ***************************************************************************
// *
// *   Copyright (C) 2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
//
// Created by Roozbeh Pournader <roozbeh@sharif.edu> and Michael Everson <everson@evertype.com>

// WARNING: This locale is a different script from uz and uz_UZ.
//      This locale will be changed once ICU implements ISO-3066 locale names.

uz_AF {
    Version { "x0.1" }

    // This is a unified sort with uz_AF, fa_AF and ps.
    collations:alias { "ps" }
//    collations {
//      standard {
//        Version { "1.0" }
//        Sequence { "[normalization on]"
//           "&\u064e << \u0650 << \u064f << \u064b << \u064d << \u064c"
//           "&\u0622 < \u0627 << \u0623 << \u0672 << \u0671 << \u0625 << \u0673 < \u0621"
//           "&\u062a < \u067c << \u0679"
//           "&\u062c < \u0681 << \u062d\u0654"
//           "&\u0686 < \u0685"
//           "&\u062f < \u0689 << \u0688"
//           "&\u0631 < \u0693 << \u0691"
//           "&\u0698 < \u0696"
//           "&\u06a9 << \u06aa << \u0643"
//           "&\u06ab << \u06af"
//           "&\u06bc << \u06bb"
//           "&\u0648 << \u0624 << \u06c7 << \u06c9"
//           "&\u0647 <<< \u06c0 <<< \u0647\u0654 << \u06d5 << \u06c1 << \u06be << \u0629 << \u06c3"
//           "&\u06cc << \u0649 << \u06d2 << \u064a << \u06d0 << \u06cd << \u06cc\u0654 <<< \u0649\u0654 <<< \u0626"
//           "&'\u00a0'<<'\u200c'<<'\u200d'"  // This is NBSP << ZWNJ << ZWJ
//         }
//      }
//    }

    Countries {
        AF { "\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646" }
    }
    Currencies {
        // The Afghani symbol doesn't exist in Unicode. So we use the long name
        AFA { "\u0627\u0641\u063a\u0627\u0646\u06cc", "\u0627\u0641\u063a\u0627\u0646\u06cc" }
    }

    // All forms say 12-hour clock, but no one suggests any abbreviation, so we'll use 24-hour
    ExemplarCharacters{"[\u0621-\u0624\u0626-\u063a\u0641\u0642\u0644-\u0648\u064a\u064b-\u0652\u0654\u0670\u067c\u067e\u0681\u0685-\u0686\u0689\u0693\u0696\u0698\u069a\u06a9\u06ab\u06af\u06bc\u06c7\u06c9\u06cc-\u06cd\u06d0]"}

    Languages {        
        fa { "\u062f\u0631\u06cc" }
        ps { "\u067e\u0634\u062a\u0648" }
        uz { "\u0627\u06c9\u0632\u0628\u06d0\u06a9" }
    }

    LocaleScript:array {
        "Arab"
    }

    NumberElements { 
        "\u066b",
        "\u066c",
        ";",
        "\u066a",
        "\u06f0",
        "#",
        "\u2212",
        "\u00d7\u06f1\u06f0^",
        "\u2030",
        "\u221e",
        "\ufffd",
        "\u066b",
        "+",
    }

    NumberPatterns { 
        "#,##0.###;-#,##0.###",
        "#,##0 \u00a4;-#,##0 \u00a4",
        "#,##0%", // The percent sign should appear on the right side. Academy says it should appear on the left (like fa_IR).
        "#E0",
    }
    //FIXME: add number spelling rules for Uzbek
//    SpelloutRules {
//        "=#,##0.######=;\n"
//    }

    zoneStrings {
        {
            "Asia/Kabul",
            "\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646 \u0648\u0642\u062a\u06cc",
            "AFT",
            "\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646 \u0648\u0642\u062a\u06cc",
            "AFT",
            "\u06a9\u0627\u0628\u0644",
        }
    }
    calendar{
        gregorian{
            DateTimeElements:intvector {
                7,      // Saturday
                1,
            }
            DateTimePatterns{
                "H:mm:ss (z)",
                "H:mm:ss (z)",
                "H:mm:ss",
                "H:mm",
                "yyyy \u0646\u0686\u06cc \u06cc\u06cc\u0644 d \u0646\u0686\u06cc MMMM EEEE \u06a9\u0648\u0646\u06cc",
                "d \u0646\u0686\u06cc MMMM yyyy",
                "d MMMM yyyy",
                "yyyy/M/d",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "\u06cc.",
                        "\u062f.",
                        "\u0633.",
                        "\u0686.",
                        "\u067e.",
                        "\u062c.",
                        "\u0634.",
                    }
                    wide{
                        "\u06cc\u06a9\u0634\u0646\u0628\u0647",
                        "\u062f\u0648\u0634\u0646\u0628\u0647",
                        "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
                        "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
                        "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
                        "\u062c\u0645\u0639\u0647",
                        "\u0634\u0646\u0628\u0647",
                    }
                }
            }
            eras{
                "\u0642.\u0645.",
                "\u0645.", //MoE additionally suggests "\u0639."
            }
            monthNames{
                format{
                    abbreviated{
                        "\u062c\u0646\u0648",
                        "\u0641\u0628\u0631",
                        "\u0645\u0627\u0631",
                        "\u0627\u067e\u0631",
                        "\u0645\u0640\u06cc",
                        "\u062c\u0648\u0646",
                        "\u062c\u0648\u0644",
                        "\u0627\u06af\u0633",
                        "\u0633\u067e\u062a",
                        "\u0627\u06a9\u062a",
                        "\u0646\u0648\u0645",
                        "\u062f\u0633\u0645",
                    }
                    wide{
                        "\u062c\u0646\u0648\u0631\u06cc",
                        "\u0641\u0628\u0631\u0648\u0631\u06cc",
                        "\u0645\u0627\u0631\u0686",
                        "\u0627\u067e\u0631\u06cc\u0644",
                        "\u0645\u06cc",
                        "\u062c\u0648\u0646",
                        "\u062c\u0648\u0644\u0627\u06cc",
                        "\u0627\u06af\u0633\u062a",
                        "\u0633\u067e\u062a\u0645\u0628\u0631",
                        "\u0627\u06a9\u062a\u0648\u0628\u0631",
                        "\u0646\u0648\u0645\u0628\u0631",
                        "\u062f\u0633\u0645\u0628\u0631",
                    }
                }
            }
        }
    }
}
