﻿// ***************************************************************************
// *
// * 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{
    Version{"2.1.6.69"}
    units{
        duration{
            day{
                other{"{0}-čháŋ"}
            }
            hour{
                other{"Owápȟe {0}"}
            }
            month{
                other{"Wíyawapi {0}"}
            }
            second{
                other{"Okpí {0}"}
            }
            week{
                other{"okó {0}"}
            }
            year{
                other{"ómakȟa {0}"}
            }
        }
        length{
            foot{
                other{"siíyutȟapi {0}"}
            }
            inch{
                other{"oíyutȟe čísčila {0}"}
            }
            mile{
                other{"makhíyutȟapi {0}"}
            }
            yard{
                other{"čhaéglepi {0}"}
            }
        }
        mass{
            pound{
                other{"tkeíyutȟapi {0}"}
            }
        }
    }
    unitsNarrow{
        duration{
            day{
                other{"{0}-čháŋ"}
            }
            hour{
                other{"Owápȟe {0}"}
            }
            month{
                other{"Wí {0}"}
            }
            second{
                other{"Okpí {0}"}
            }
            week{
                other{"okó {0}"}
            }
            year{
                other{"ómakȟa {0}"}
            }
        }
        length{
            foot{
                other{"siíyutȟapi {0}"}
            }
            inch{
                other{"{0}″"}
            }
            mile{
                other{"{0} makh"}
            }
            yard{
                other{"čhaéglepi {0}"}
            }
        }
        mass{
            pound{
                other{"{0}#"}
            }
        }
        temperature{
            celsius{
                other{"{0}°C"}
            }
            fahrenheit{
                other{"{0}°"}
            }
        }
    }
    unitsShort{
        duration{
            day{
                other{"{0}-čháŋ"}
            }
            hour{
                other{"Owápȟe {0}"}
            }
            month{
                other{"Wíyawapi {0}"}
            }
            second{
                other{"Okpí {0}"}
            }
            week{
                other{"okó {0}"}
            }
            year{
                other{"ómakȟa {0}"}
            }
        }
        length{
            foot{
                other{"siíyutȟapi {0}"}
            }
            inch{
                other{"oíyutȟe čísčila {0}"}
            }
            mile{
                other{"makhíyutȟapi {0}"}
            }
            yard{
                other{"čhaéglepi {0}"}
            }
        }
        mass{
            pound{
                other{"tkeíyutȟapi {0}"}
            }
        }
    }
}
