﻿// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
es_US{
    %%Parent{"es_419"}
    units{
        compound{
            10p-12{"picó{0}"}
            10p-2{"centí{0}"}
            10p3{"kiló{0}"}
        }
        concentr{
            milligram-ofglucose-per-deciliter{
                dnam{"miligramos por decilitro"}
            }
        }
        coordinate{
            east{"{0} este"}
            north{"{0} norte"}
            south{"{0} sur"}
            west{"{0} oeste"}
        }
        electric{
            ampere{
                dnam{"amperios"}
                one{"{0} amperio"}
                other{"{0} amperios"}
            }
            milliampere{
                dnam{"miliamperio"}
                one{"{0} miliamperio"}
                other{"{0} miliamperios"}
            }
            ohm{
                dnam{"ohmios"}
                one{"{0} ohmio"}
                other{"{0} ohmios"}
            }
        }
        energy{
            foodcalorie{
                dnam{"Calorías"}
                one{"{0} Caloría"}
                other{"{0} Calorías"}
            }
            joule{
                dnam{"julios"}
                one{"{0} julio"}
                other{"{0} julios"}
            }
            kilojoule{
                dnam{"kilojulios"}
                one{"{0} kilojulio"}
                other{"{0} kilojulio"}
            }
            kilowatt-hour{
                dnam{"kilovatios por hora"}
                one{"{0} kilovatio por hora"}
                other{"{0} kilovatios por hora"}
            }
        }
        graphics{
            em{
                dnam{"em tipográfica"}
                gender{"feminine"}
                one{"{0} em"}
                other{"{0} em"}
            }
            megapixel{
                dnam{"megapixeles"}
                one{"{0} megapixel"}
                other{"{0} megapixeles"}
            }
            pixel-per-centimeter{
                dnam{"pixeles por centímetro"}
                one{"{0} pixel por centímetro"}
                other{"{0} pixeles por centímetro"}
            }
            pixel-per-inch{
                dnam{"pixeles por pulgada"}
                one{"{0} pixel por pulgada"}
                other{"{0} pixeles por pulgada"}
            }
        }
        length{
            nautical-mile{
                dnam{"millas naúticas"}
                one{"{0} milla naútica"}
                other{"{0} millas naúticas"}
            }
        }
        power{
            horsepower{
                one{"{0} caballo de fuerza"}
                other{"{0} caballos de fuerza"}
            }
        }
        temperature{
            generic{
                one{"{0} grado"}
                other{"{0} grados"}
            }
            kelvin{
                dnam{"kelvin"}
                one{"kelvin"}
                other{"{0} kelvin"}
            }
        }
        torque{
            pound-force-foot{
                dnam{"libra fuerza-pies"}
                one{"{0} libra fuerza-pie"}
                other{"{0} libra fuerza-pies"}
            }
        }
        volume{
            acre-foot{
                dnam{"acres-pies"}
                one{"{0} acre-pie"}
                other{"{0} acres pies"}
            }
            dram{
                dnam{"dracma fluida"}
                one{"{0} dracma fluida"}
                other{"{0} dreacmas fluidas"}
            }
            fluid-ounce-imperial{
                dnam{"onzas fluidas imperiales"}
                one{"onza fluida imperial"}
                other{"{0} onzas fluidas imperiales"}
            }
            jigger{
                dnam{"jigger"}
                one{"{0} jigger"}
                other{"{0} jiggers"}
            }
        }
    }
    unitsNarrow{
        area{
            hectare{
                dnam{"hectárea"}
            }
        }
        duration{
            day{
                dnam{"día"}
                one{"{0}d"}
                other{"{0}d"}
            }
            month{
                dnam{"m"}
                one{"{0}m"}
                other{"{0}m"}
            }
            year{
                dnam{"a"}
                one{"{0}a"}
                other{"{0}a"}
            }
        }
        graphics{
            dot{
                dnam{"punto"}
                one{"{0} p"}
                other{"{0} p"}
            }
        }
        length{
            fathom{
                dnam{"braza"}
            }
            furlong{
                dnam{"furlong"}
            }
            mile-scandinavian{
                dnam{"mil"}
                one{"{0}mil"}
                other{"{0}mil"}
            }
        }
        temperature{
            fahrenheit{
                one{"{0}°"}
                other{"{0}°"}
            }
        }
    }
    unitsShort{
        concentr{
            percent{
                dnam{"%"}
            }
            permille{
                dnam{"‰"}
            }
        }
        digital{
            bit{
                dnam{"bit"}
            }
            byte{
                dnam{"byte"}
            }
        }
        duration{
            day{
                dnam{"días"}
                one{"{0} día"}
                other{"{0} días"}
                per{"{0}/d"}
            }
            minute{
                dnam{"mins"}
            }
            month{
                one{"{0} m"}
                other{"{0} mm."}
            }
            year{
                one{"{0} a"}
                other{"{0} aa."}
                per{"{0}/a"}
            }
        }
        energy{
            foodcalorie{
                dnam{"Cal"}
                one{"{0} Cal"}
                other{"{0} Cal"}
            }
            therm-us{
                dnam{"th US"}
                one{"{0} th US"}
                other{"{0} th US"}
            }
        }
        graphics{
            dot{
                dnam{"px"}
                one{"{0} px"}
                other{"{0} px"}
            }
        }
        length{
            furlong{
                dnam{"furlongs"}
                one{"{0} fur"}
                other{"{0} fur"}
            }
            light-year{
                one{"{0} a. l."}
                other{"{0} a. l."}
            }
            mile-scandinavian{
                dnam{"mil"}
                one{"{0} mil"}
                other{"{0} mil"}
            }
            nautical-mile{
                dnam{"mn"}
                one{"{0} mn"}
                other{"{0} mn"}
            }
            yard{
                dnam{"yd"}
            }
        }
        speed{
            knot{
                dnam{"nudo"}
                one{"{0} nudo"}
                other{"{0} nudos"}
            }
        }
        torque{
            pound-force-foot{
                dnam{"lbf⋅ft"}
                one{"{0} lbf⋅ft"}
                other{"{0} lbf⋅ft"}
            }
        }
        volume{
            bushel{
                dnam{"bsh"}
                one{"{0} bsh"}
                other{"{0} bsh"}
            }
            cup{
                dnam{"tza."}
                one{"{0} tza."}
                other{"{0} tzas."}
            }
            cup-metric{
                dnam{"Tm"}
                one{"{0} Tm"}
                other{"{0} Tm"}
            }
            dessert-spoon{
                dnam{"cdapostre"}
                one{"{0} cdapostre"}
                other{"{0} cdapostre"}
            }
            dessert-spoon-imperial{
                dnam{"cdapostre imp."}
                one{"{0} cdapostre imp."}
                other{"{0} cdaspostre imp."}
            }
            dram{
                dnam{"fl dracma"}
                one{"{0} fl dracma"}
                other{"{0} fl dracmas"}
            }
            jigger{
                dnam{"jigger"}
                one{"{0} jigger"}
                other{"{0} jiggers"}
            }
            pint-metric{
                dnam{"ptm"}
                one{"{0} ptm"}
                other{"{0} ptm"}
            }
        }
    }
}
