﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/rw.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/rw.xml
 */
rw{
    ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
    ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            symbols{
                decimal{","}
                group{"."}
            }
        }
    }
    Version{"2.1.7.39"}
    calendar{
        generic{
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, G y MMMM dd",
                "G y MMMM d",
                "G y MMM d",
                "GGGGG yy/MM/dd",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
        }
        gregorian{
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, y MMMM dd",
                "y MMMM d",
                "y MMM d",
                "yy/MM/dd",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "cyu.",
                        "mbe.",
                        "kab.",
                        "gtu.",
                        "kan.",
                        "gnu.",
                        "gnd.",
                    }
                    wide{
                        "Ku cyumweru",
                        "Kuwa mbere",
                        "Kuwa kabiri",
                        "Kuwa gatatu",
                        "Kuwa kane",
                        "Kuwa gatanu",
                        "Kuwa gatandatu",
                    }
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "mut.",
                        "gas.",
                        "wer.",
                        "mat.",
                        "gic.",
                        "kam.",
                        "nya.",
                        "kan.",
                        "nze.",
                        "ukw.",
                        "ugu.",
                        "uku.",
                    }
                    wide{
                        "Mutarama",
                        "Gashyantare",
                        "Werurwe",
                        "Mata",
                        "Gicuransi",
                        "Kamena",
                        "Nyakanga",
                        "Kanama",
                        "Nzeli",
                        "Ukwakira",
                        "Ugushyingo",
                        "Ukuboza",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "I1",
                        "I2",
                        "I3",
                        "I4",
                    }
                    wide{
                        "igihembwe cya mbere",
                        "igihembwe cya kabiri",
                        "igihembwe cya gatatu",
                        "igihembwe cya kane",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"’"}
        alternateQuotationStart{"‘"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
}
