﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/ug.xml
// *
// ***************************************************************************
ug{
    Version{"2.1.7.39"}
    units{
        acceleration{
            g-force{
                one{"{0} ئېغىرلىق كۈچى"}
                other{"{0} ئېغىرلىق كۈچى"}
            }
        }
        angle{
            degree{
                one{"{0} گىرادۇس"}
                other{"{0} گىرادۇس"}
            }
        }
        area{
            acre{
                one{"{0} ئىنگلىز موسى"}
                other{"{0} ئىنگلىز موسى"}
            }
            hectare{
                one{"{0} گېكتار"}
                other{"{0} hectares"}
            }
            square-foot{
                one{"{0} كۋادرات فۇت"}
                other{"{0} كۋادرات فۇت"}
            }
            square-kilometer{
                one{"{0} كۋادرات كىلومېتىر"}
                other{"{0} كۋادرات كىلومېتىر"}
            }
            square-meter{
                one{"{0} كۋادرات مېتىر"}
                other{"{0} كۋادرات مېتىر"}
            }
            square-mile{
                one{"{0} كۋادرات مىل"}
                other{"{0} كۋادرات مىل"}
            }
        }
        compound{
            per{"{0}/{1}"}
        }
        duration{
            day{
                one{"{0} كۈن"}
                other{"{0} كۈن"}
            }
            hour{
                one{"{0} سائەت"}
                other{"{0} سائەت"}
            }
            millisecond{
                one{"{0} مىللى سېكۇنت"}
                other{"{0} مىللى سېكۇنت"}
            }
            minute{
                one{"{0} مىنۇت"}
                other{"{0} مىنۇت"}
            }
            month{
                one{"{0} ئاي"}
                other{"{0} ئاي"}
            }
            second{
                one{"{0} سېكۇنت"}
                other{"{0} سېكۇنت"}
            }
            week{
                one{"{0} ھەپتە"}
                other{"{0} ھەپتە"}
            }
            year{
                one{"{0} يىل"}
                other{"{0} يىل"}
            }
        }
        length{
            centimeter{
                one{"{0} سانتىمېتىر"}
                other{"{0} سانتىمېتىر"}
            }
            foot{
                one{"{0} فۇت"}
                other{"{0} فۇت"}
            }
            inch{
                one{"{0} ديۇيم"}
                other{"{0} ديۇيم"}
            }
            kilometer{
                one{"{0} كىلومېتىر"}
                other{"{0} كىلومېتىر"}
            }
            light-year{
                one{"{0} يورۇقلۇق يىلى"}
                other{"{0} يورۇقلۇق يىلى"}
            }
            meter{
                one{"{0} مېتىر"}
                other{"{0} مېتىر"}
            }
            mile{
                one{"{0} مىل"}
                other{"{0} مىل"}
            }
            millimeter{
                one{"{0} مىللىمېتىر"}
                other{"{0} مىللىمېتىر"}
            }
            picometer{
                one{"{0} پىكومېتىر"}
                other{"{0} پىكومېتىر"}
            }
            yard{
                one{"{0} يارد"}
                other{"{0} يارد"}
            }
        }
        mass{
            gram{
                one{"{0} گرام"}
                other{"{0} گرام"}
            }
            kilogram{
                one{"{0} كىلوگرام"}
                other{"{0} كىلوگرام"}
            }
            ounce{
                one{"{0} ئۇنسىيە"}
                other{"{0} ئۇنسىيە"}
            }
            pound{
                one{"{0} قاداق"}
                other{"{0} قاداق"}
            }
        }
        power{
            horsepower{
                one{"{0} ئات كۈچى"}
                other{"{0} ئات كۈچى"}
            }
            kilowatt{
                one{"{0} كىلوۋات"}
                other{"{0} كىلوۋات"}
            }
            watt{
                one{"{0} ۋات"}
                other{"{0} ۋات"}
            }
        }
        pressure{
            hectopascal{
                one{"{0} يۈز پاسكال"}
                other{"{0} يۈز پاسكال"}
            }
            inch-hg{
                one{"{0} ديۇيم سىماب تۈۋرۇكى"}
                other{"{0} ديۇيم سىماب تۈۋرۇكى"}
            }
            millibar{
                one{"{0} مىللىبار"}
                other{"{0} مىللىبار"}
            }
        }
        speed{
            kilometer-per-hour{
                one{"{0} كىلومېتىر ھەر سائەت"}
                other{"{0} كىلومېتىر ھەر سائەت"}
            }
            meter-per-second{
                one{"{0} مېتىر ھەر سېكۇنت"}
                other{"{0} مېتىر ھەر سېكۇنت"}
            }
            mile-per-hour{
                one{"{0} مىل ھەر سائەت"}
                other{"{0} مىل ھەر سائەت"}
            }
        }
        temperature{
            celsius{
                one{"{0} سېلسىيە گرادۇس"}
                other{"{0} سېلسىيە گرادۇس"}
            }
            fahrenheit{
                one{"{0} فارېنگېيت گرادۇس"}
                other{"{0} فارېنگېيت گرادۇس"}
            }
        }
        volume{
            cubic-kilometer{
                one{"{0} كۇب كىلومېتىر"}
                other{"{0} كۇب كىلومېتىر"}
            }
            cubic-mile{
                one{"{0} كۇب مىل"}
                other{"{0} كۇب مىل"}
            }
            liter{
                one{"{0} لىتېر"}
                other{"{0} لىتېر"}
            }
        }
    }
    unitsNarrow{
        acceleration{
            g-force{
                one{"{0}G"}
                other{"{0}Gs"}
            }
        }
        angle{
            degree{
                one{"{0}°"}
                other{"{0}°"}
            }
        }
        area{
            acre{
                one{"{0}ac"}
                other{"{0}ac"}
            }
            hectare{
                one{"{0}گېكتار"}
                other{"{0}گېكتار"}
            }
            square-foot{
                one{"{0}ft²"}
                other{"{0}ft²"}
            }
            square-mile{
                one{"{0}mi²"}
                other{"{0}mi²"}
            }
        }
        duration{
            day{
                one{"{0} كۈن"}
                other{"{0} كۈن"}
            }
            hour{
                one{"{0}h"}
                other{"{0}h"}
            }
            millisecond{
                one{"{0}ms"}
                other{"{0}ms"}
            }
            minute{
                one{"{0}m"}
                other{"{0}m"}
            }
            month{
                one{"{0} ئاي"}
                other{"{0} ئاي"}
            }
            second{
                one{"{0}s"}
                other{"{0}s"}
            }
            week{
                one{"{0} ھەپتە"}
                other{"{0} ھەپتە"}
            }
            year{
                one{"{0} يىل"}
                other{"{0} يىل"}
            }
        }
        length{
            centimeter{
                one{"{0}cm"}
                other{"{0}cm"}
            }
            foot{
                one{"{0}′"}
                other{"{0}′"}
            }
            inch{
                one{"{0}″"}
                other{"{0}″"}
            }
            kilometer{
                one{"{0}km"}
                other{"{0}km"}
            }
            light-year{
                one{"{0}ly"}
                other{"{0}ly"}
            }
            meter{
                one{"{0}m"}
                other{"{0}m"}
            }
            mile{
                one{"{0}mi"}
                other{"{0}mi"}
            }
            millimeter{
                one{"{0}mm"}
                other{"{0}mm"}
            }
            picometer{
                one{"{0}pm"}
                other{"{0}pm"}
            }
            yard{
                one{"{0}yd"}
                other{"{0}yd"}
            }
        }
        mass{
            gram{
                one{"{0}g"}
                other{"{0}g"}
            }
            kilogram{
                one{"{0}kg"}
                other{"{0}kg"}
            }
            ounce{
                one{"{0}oz"}
                other{"{0}oz"}
            }
            pound{
                one{"{0}#"}
                other{"{0}#"}
            }
        }
        power{
            horsepower{
                one{"{0}hp"}
                other{"{0}hp"}
            }
            kilowatt{
                one{"{0}kW"}
                other{"{0}kW"}
            }
            watt{
                one{"{0}W"}
                other{"{0}W"}
            }
        }
        pressure{
            hectopascal{
                one{"{0}hPa"}
                other{"{0}hPa"}
            }
            inch-hg{
                one{"{0}\u0022 Hg"}
                other{"{0}\u0022 Hg"}
            }
            millibar{
                one{"{0}mb"}
                other{"{0}mb"}
            }
        }
        speed{
            kilometer-per-hour{
                one{"{0}kph"}
                other{"{0}kph"}
            }
            meter-per-second{
                one{"{0}m/s"}
                other{"{0}m/s"}
            }
            mile-per-hour{
                one{"{0}mph"}
                other{"{0}mph"}
            }
        }
        temperature{
            celsius{
                one{"{0}°"}
                other{"{0}°"}
            }
            fahrenheit{
                one{"{0}°F"}
                other{"{0}°F"}
            }
        }
        volume{
            cubic-kilometer{
                one{"{0}km³"}
                other{"{0}km³"}
            }
            cubic-mile{
                one{"{0}mi³"}
                other{"{0}mi³"}
            }
            liter{
                one{"{0}l"}
                other{"{0}l"}
            }
        }
    }
    unitsShort{
        acceleration{
            g-force{
                one{"{0} G"}
                other{"{0} G"}
            }
        }
        angle{
            degree{
                one{"{0} گىرادۇس"}
                other{"{0} گىرادۇس"}
            }
        }
        area{
            acre{
                one{"{0} ئىنگلىز موسى"}
                other{"{0} ئىنگلىز موسى"}
            }
            hectare{
                one{"{0} گېكتار"}
                other{"{0} گېكتار"}
            }
            square-foot{
                one{"{0} كۋادرات فۇت"}
                other{"{0} كۋادرات فۇت"}
            }
            square-kilometer{
                one{"{0} km²"}
                other{"{0} km²"}
            }
            square-meter{
                one{"{0} m²"}
                other{"{0} m²"}
            }
            square-mile{
                one{"{0} كۋادرات مىل"}
                other{"{0} كۋادرات مىل"}
            }
        }
        compound{
            per{"{0}/{1}"}
        }
        duration{
            day{
                one{"{0} كۈن"}
                other{"{0} كۈن"}
            }
            hour{
                one{"{0} سائەت"}
                other{"{0} سائەت"}
            }
            millisecond{
                one{"{0} مىللىسېكۇنت"}
                other{"{0} مىللىسېكۇنت"}
            }
            minute{
                one{"{0} مىنۇت"}
                other{"{0} مىنۇت"}
            }
            month{
                one{"{0} ئاي"}
                other{"{0} ئاي"}
            }
            second{
                one{"{0} سېكۇنت"}
                other{"{0} سېكۇنت"}
            }
            week{
                one{"{0} ھەپتە"}
                other{"{0} ھەپتە"}
            }
            year{
                one{"{0} يىل"}
                other{"{0} يىل"}
            }
        }
        length{
            centimeter{
                one{"{0} سانتىمېتىر"}
                other{"{0} سانتىمېتىر"}
            }
            foot{
                one{"{0} پۇت"}
                other{"{0} پۇت"}
            }
            inch{
                one{"{0} ئىنگلىز چىسى"}
                other{"{0} ئىنگلىز چىسى"}
            }
            kilometer{
                one{"{0} كىلومېتىر"}
                other{"{0} كىلومېتىر"}
            }
            light-year{
                one{"{0} يورۇقلۇق يىلى"}
                other{"{0} يورۇقلۇق يىلى"}
            }
            meter{
                one{"{0} مېتىر"}
                other{"{0} مېتىر"}
            }
            mile{
                one{"{0} مىل"}
                other{"{0} مىل"}
            }
            millimeter{
                one{"{0} مىللىمېتىر"}
                other{"{0} مىللىمېتىر"}
            }
            picometer{
                one{"{0} پىكومېتىر"}
                other{"{0} پىكومېتىر"}
            }
            yard{
                one{"{0} يارد"}
                other{"{0} يارد"}
            }
        }
        mass{
            gram{
                one{"{0} g"}
                other{"{0} g"}
            }
            kilogram{
                one{"{0} kg"}
                other{"{0} kg"}
            }
            ounce{
                one{"{0} ئۇنسىيە"}
                other{"{0} ئۇنسىيە"}
            }
            pound{
                one{"{0} قاداق"}
                other{"{0} قاداق"}
            }
        }
        power{
            horsepower{
                one{"{0} ئات كۈچى"}
                other{"{0} ئات كۈچى"}
            }
            kilowatt{
                one{"{0} kW"}
                other{"{0} kW"}
            }
            watt{
                one{"{0} W"}
                other{"{0} W"}
            }
        }
        pressure{
            hectopascal{
                one{"{0} ھېكتوپاسكال"}
                other{"{0} ھېكتوپاسكال"}
            }
            inch-hg{
                one{"{0} inHg"}
                other{"{0} inHg"}
            }
            millibar{
                one{"{0} mbar"}
                other{"{0} mbar"}
            }
        }
        speed{
            kilometer-per-hour{
                one{"{0} سائەت/كىلومېتىر"}
                other{"{0} سائەت/كىلومېتىر"}
            }
            meter-per-second{
                one{"{0} سېكۇنت/مېتىر"}
                other{"{0} سېكۇنت/مېتىر"}
            }
            mile-per-hour{
                one{"{0} سائەت/مىل"}
                other{"{0} سائەت/مىل"}
            }
        }
        temperature{
            celsius{
                one{"{0}°C"}
                other{"{0}°C"}
            }
            fahrenheit{
                one{"{0}°F"}
                other{"{0}°F"}
            }
        }
        volume{
            cubic-kilometer{
                one{"{0} km³"}
                other{"{0} km³"}
            }
            cubic-mile{
                one{"{0} mi³"}
                other{"{0} mi³"}
            }
            liter{
                one{"{0} l"}
                other{"{0} l"}
            }
        }
    }
}
