﻿// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
es_US{
    %%Parent{"es_419"}
    Version{"37"}
    units{
        angle{
            arc-minute{
                dnam{"arcominutos"}
                one{"{0} minuto"}
                other{"{0} minutos"}
            }
            arc-second{
                dnam{"arcosegundos"}
                one{"{0} segundo"}
                other{"{0} segundos"}
            }
        }
        concentr{
            milligram-per-deciliter{
                one{"{0} mg/dL"}
                other{"{0} mg/dL"}
            }
            millimole-per-liter{
                dnam{"mmol/L"}
            }
            permillion{
                dnam{"ppm"}
            }
        }
        consumption{
            mile-per-gallon-imperial{
                dnam{"mpg Imp."}
                one{"{0} mpg Imp."}
                other{"{0} mpg Imp."}
            }
        }
        electric{
            ohm{
                dnam{"ohmios"}
                one{"{0} ohmio"}
                other{"{0} ohmios"}
            }
        }
        energy{
            kilowatt-hour{
                dnam{"kilovatios hora"}
                one{"{0} kilovatio hora"}
                other{"{0} kilovatios hora"}
            }
        }
        length{
            mile-scandinavian{
                dnam{"millas escandinavas"}
            }
            nautical-mile{
                dnam{"millas naúticas"}
                one{"{0} milla naútica"}
                other{"{0} millas naúticas"}
            }
            point{
                dnam{"pt"}
                one{"{0} pt"}
                other{"{0} pt"}
            }
        }
        light{
            lux{
                dnam{"lux"}
            }
        }
        power{
            horsepower{
                one{"{0} caballo de vapor"}
                other{"{0} caballos de vapor"}
            }
        }
        temperature{
            kelvin{
                dnam{"kelvin"}
                one{"kelvin"}
                other{"{0} kelvin"}
            }
        }
        volume{
            acre-foot{
                dnam{"acres-pies"}
                one{"{0} acre-pie"}
                other{"{0} acre-pies"}
            }
            fluid-ounce{
                dnam{"onzas líquidas"}
                one{"{0} onza líquida"}
                other{"{0} onzas líquidas"}
            }
            gallon-imperial{
                dnam{"Imp. gal"}
                one{"{0} gal Imp."}
                other{"{0} gal Imp."}
                per{"{0}/gal Imp."}
            }
        }
    }
    unitsNarrow{
        duration{
            day{
                dnam{"días"}
                one{"{0}d"}
                other{"{0}d"}
            }
            month{
                dnam{"m"}
                one{"{0}m"}
                other{"{0}m"}
            }
            week{
                dnam{"sem"}
                one{"{0}sem"}
                other{"{0}sem"}
            }
            year{
                dnam{"a"}
                one{"{0}a"}
                other{"{0}a"}
            }
        }
        temperature{
            fahrenheit{
                one{"{0}°"}
                other{"{0}°"}
            }
        }
    }
    unitsShort{
        acceleration{
            g-force{
                dnam{"Fg"}
                one{"{0} Fg"}
                other{"{0} Fg"}
            }
        }
        angle{
            arc-minute{
                one{"{0} min"}
                other{"{0} min"}
            }
            arc-second{
                dnam{"arcseg"}
                one{"{0} s"}
                other{"{0} s"}
            }
            degree{
                dnam{"grad."}
            }
        }
        concentr{
            percent{
                dnam{"%"}
            }
            permille{
                dnam{"‰"}
            }
        }
        consumption{
            mile-per-gallon-imperial{
                dnam{"mpg Imp."}
                one{"{0} mpg Imp."}
                other{"{0} mpg Imp."}
            }
        }
        digital{
            bit{
                dnam{"bit"}
            }
            byte{
                dnam{"byte"}
            }
        }
        duration{
            day{
                dnam{"días"}
                one{"{0} día"}
                other{"{0} días"}
                per{"{0}/d"}
            }
            month{
                one{"{0} m"}
                other{"{0} m"}
            }
            week{
                one{"{0} sem"}
                other{"{0} sem"}
            }
            year{
                dnam{"a"}
                one{"{0} a"}
                other{"{0} a"}
                per{"{0}/a"}
            }
        }
        length{
            astronomical-unit{
                dnam{"au"}
                one{"{0} au"}
                other{"{0} au"}
            }
            light-year{
                one{"{0} a. l."}
                other{"{0} a. l."}
            }
            nautical-mile{
                dnam{"M"}
                one{"{0} M"}
                other{"{0} M"}
            }
            point{
                dnam{"pt"}
                one{"{0} pt"}
                other{"{0} pt"}
            }
            yard{
                dnam{"yd"}
            }
        }
        mass{
            carat{
                dnam{"c"}
                one{"{0} c"}
                other{"{0} c"}
            }
            ounce-troy{
                dnam{"oz t"}
                one{"{0} oz t"}
                other{"{0} oz t"}
            }
        }
        power{
            horsepower{
                dnam{"CV"}
                one{"{0} CV"}
                other{"{0} CV"}
            }
        }
        volume{
            cup{
                dnam{"tza."}
                one{"{0} tza."}
                other{"{0} tzas."}
            }
            gallon-imperial{
                dnam{"Imp. gal"}
                one{"{0} gal Imp."}
                other{"{0} gal Imp."}
            }
        }
    }
}
