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

sv {
    CollationElements { 
	    Version { "1.0" }
		Override { "FALSE" }
		Sequence { "& Z < \u00E6 , \u00C6 < a\u030A , A\u030A , aa , aA , A"
        "a , AA< a\u0308 , A\u0308 < o\u0308 , O\u0308 ; u\u030B , U\u030B < o\u030B , O"
        "\u030B ; \u00F8 , \u00D8 & V ; w , W& Y, u\u0308 , U\u0308" }
	}
    Countries { 
        SE { "Sverige" }
    }
    DateTimeElements { 
            "2",
            "4",
    }
    DateTimePatterns { 
            "'kl 'H:mm z",
            "HH:mm:ss z",
            "HH:mm:ss",
            "HH:mm",
            "'den 'd MMMM yyyy",
            "'den 'd MMMM yyyy",
            "yyyy-MMM-dd",
            "yyyy-MM-dd",
            "{1} {0}",
    }
    DayAbbreviations { 
            "s\u00F6",
            "m\u00E5",
            "ti",
            "on",
            "to",
            "fr",
            "l\u00F6",
    }
    DayNames { 
            "s\u00F6ndag",
            "m\u00E5ndag",
            "tisdag",
            "onsdag",
            "torsdag",
            "fredag",
            "l\u00F6rdag",
    }
    Languages { 
        sv { "svenska" }
    }
    LocaleID { "1d" }
    LocaleString { "sv" }
    MonthAbbreviations { 
            "jan",
            "feb",
            "mar",
            "apr",
            "maj",
            "jun",
            "jul",
            "aug",
            "sep",
            "okt",
            "nov",
            "dec",
            "",
    }
    MonthNames { 
            "januari",
            "februari",
            "mars",
            "april",
            "maj",
            "juni",
            "juli",
            "augusti",
            "september",
            "oktober",
            "november",
            "december",
            "",
    }
    NumberElements { 
            ",",
            "\u00A0",
            ";",
            "%",
            "0",
            "#",
            "-",
            "E",
            "\u2030",
            "\u221E",
            "\uFFFD",
    }
    Eras { 
            "f.Kr.",
            "e.Kr.",
    }
    ShortLanguage { "swe" }
    zoneStrings { 
        {
                "Europe/Stockholm",
                "Central European Time",
                "MET",
                "Central European Time (DST)",
                "MET",
             	"Stockholm",
        }
    }
    LocaleScript{ 
                "Latn",  // ISO 15924 Name 
    }

    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

//         * Spellout rules for Swedish.

        // can someone supply me with information on negatives and decimals?

    SpelloutRules {
            "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
            "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
            "20: tjugo[>>];\n"
            "30: trettio[>>];\n"
            "40: fyrtio[>>];\n"
            "50: femtio[>>];\n"
            "60: sextio[>>];\n"
            "70: sjuttio[>>];\n"
            "80: \u00e5ttio[>>];\n"
            "90: nittio[>>];\n"
            "100: hundra[>>];\n"
            "200: <<hundra[>>];\n"
            "1000: tusen[ >>];\n"
            "2000: << tusen[ >>];\n"
            "1,000,000: en miljon[ >>];\n"
            "2,000,000: << miljon[ >>];\n"
            "1,000,000,000: en miljard[ >>];\n"
            "2,000,000,000: << miljard[ >>];\n"
            "1,000,000,000,000: en biljon[ >>];\n"
            "2,000,000,000,000: << biljon[ >>];\n"
            "1,000,000,000,000,000: =#,##0=" 
    }
}
