﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/lkt.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/lkt.xml
 */
lkt{
    AuxExemplarCharacters{"[c d f {ȟʼ} j q r {sʼ} {šʼ} v x]"}
    ExemplarCharacters{
        "[a á {aŋ} b č {čh} {čʼ} e é g ǧ h ȟ i í {iŋ} k {kh} {kȟ} {kʼ} l m n ŋ o ó p "
        "{ph} {pȟ} {pʼ} s š t {th} {tȟ} {tʼ} u ú {uŋ} w y z ž ʼ]"
    }
    ExemplarCharactersIndex{"[A B Č E G Ǧ H Ȟ I K L M N Ŋ O P S Š T U W Y Z Ž]"}
    ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"}
    LocaleScript{
        "Latn",
    }
    Version{"2.1.6.69"}
    calendar{
        gregorian{
            dayNames{
                format{
                    narrow{
                        "A",
                        "W",
                        "N",
                        "Y",
                        "T",
                        "Z",
                        "O",
                    }
                    wide{
                        "Aŋpétuwakȟaŋ",
                        "Aŋpétuwaŋži",
                        "Aŋpétunuŋpa",
                        "Aŋpétuyamni",
                        "Aŋpétutopa",
                        "Aŋpétuzaptaŋ",
                        "Owáŋgyužažapi",
                    }
                }
            }
            monthNames{
                format{
                    wide{
                        "Wiótheȟika Wí",
                        "Thiyóȟeyuŋka Wí",
                        "Ištáwičhayazaŋ Wí",
                        "Pȟežítȟo Wí",
                        "Čhaŋwápetȟo Wí",
                        "Wípazukȟa-wašté Wí",
                        "Čhaŋpȟásapa Wí",
                        "Wasútȟuŋ Wí",
                        "Čhaŋwápeǧi Wí",
                        "Čhaŋwápe-kasná Wí",
                        "Waníyetu Wí",
                        "Tȟahékapšuŋ Wí",
                    }
                }
            }
        }
    }
    fields{
        day{
            dn{"Aŋpétu"}
            relative{
                "-1"{"Lé aŋpétu kiŋ"}
                "0"{"Lé aŋpétu kiŋ"}
                "1"{"Híŋhaŋni kiŋháŋ"}
            }
            relativeTime{
                future{
                    other{"Letáŋhaŋ {0}-čháŋ kiŋháŋ"}
                }
                past{
                    other{"Hékta {0}-čháŋ k’uŋ héhaŋ"}
                }
            }
        }
        fri{
            relative{
                "-1"{"Aŋpétuzaŋptaŋ kʼuŋ héhaŋ"}
                "0"{"Apétuzaptaŋ kiŋ lé"}
                "1"{"Aŋpétuzaptaŋ kiŋháŋ"}
            }
        }
        hour{
            dn{"Owápȟe"}
            relativeTime{
                future{
                    other{"Letáŋhaŋ owápȟe {0} kiŋháŋ"}
                }
                past{
                    other{"Hékta owápȟe {0} kʼuŋ héhaŋ"}
                }
            }
        }
        minute{
            dn{"Owápȟe oȟʼáŋkȟo"}
        }
        mon{
            relative{
                "-1"{"Aŋpétutȟokahe kʼuŋ héhaŋ"}
                "0"{"Aŋpétutȟokahe kiŋ lé"}
                "1"{"Aŋpétutȟokahe kiŋháŋ"}
            }
        }
        month{
            dn{"Wí"}
            relative{
                "-1"{"Wí kʼuŋ héhaŋ"}
                "0"{"Lé wí kiŋ"}
                "1"{"Wí kiŋháŋ"}
            }
            relativeTime{
                future{
                    other{"Letáŋhaŋ wíyawapi {0} kiŋháŋ"}
                }
                past{
                    other{"Hékta wíyawapi {0} kʼuŋ héhaŋ"}
                }
            }
        }
        sat{
            relative{
                "-1"{"Owáŋkayužažapi kʼuŋ héhaŋ"}
                "0"{"Owáŋkayužažapi kiŋ lé"}
                "1"{"Owáŋkayužažapi kiŋháŋ"}
            }
        }
        second{
            dn{"Okpí"}
            relativeTime{
                future{
                    other{"Letáŋhaŋ okpí {0} kiŋháŋ"}
                }
                past{
                    other{"Hékta okpí {0} k’uŋ héhaŋ"}
                }
            }
        }
        sun{
            relative{
                "-1"{"Aŋpétuwakȟáŋ kʼuŋ héhaŋ"}
                "0"{"Aŋpétuwakȟáŋ kiŋ lé"}
                "1"{"Aŋpétuwakȟáŋ kiŋháŋ"}
            }
        }
        thu{
            relative{
                "-1"{"Aŋpétutopa kʼuŋ héhaŋ"}
                "0"{"Aŋpétutopa kiŋ lé"}
                "1"{"Aŋpétutopa kiŋháŋ"}
            }
        }
        tue{
            relative{
                "-1"{"Aŋpétunuŋpa kʼuŋ héhaŋ"}
                "0"{"Aŋpétunuŋpa kiŋ lé"}
                "1"{"Aŋpétunuŋpa kiŋháŋ"}
            }
        }
        wed{
            relative{
                "-1"{"Aŋpétuyamni kʼuŋ héhaŋ"}
                "0"{"Aŋpétuyamni kiŋ lé"}
                "1"{"Aŋpétuyamni kiŋháŋ"}
            }
        }
        week{
            dn{"Okó"}
            relative{
                "-1"{"Okó kʼuŋ héhaŋ"}
                "0"{"Lé okó kiŋ"}
                "1"{"Tȟokáta okó kiŋháŋ"}
            }
            relativeTime{
                future{
                    other{"Letáŋhaŋ okó {0} kiŋháŋ"}
                }
                past{
                    other{"Hékta okó {0} kʼuŋ héhaŋ"}
                }
            }
        }
        weekday{
            dn{"Okó-aŋpétu"}
        }
        year{
            dn{"Ómakȟa"}
            relative{
                "-1"{"Ómakȟa kʼuŋ héhaŋ"}
                "0"{"Lé ómakȟa kiŋ"}
                "1"{"Tȟokáta ómakȟa kiŋháŋ"}
            }
            relativeTime{
                future{
                    other{"Letáŋhaŋ ómakȟa {0} kiŋháŋ"}
                }
                past{
                    other{"Hékta ómakȟa {0} kʼuŋ héhaŋ"}
                }
            }
        }
    }
    measurementSystemNames{
        US{"US"}
    }
}
