﻿// ***************************************************************************
// *
// * Copyright (C) 2016 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/en_AU.xml
// *
// ***************************************************************************
en_AU{
    %%Parent{"en_001"}
    Version{"2.1.24.13"}
    units{
        coordinate{
            east{"{0} east"}
            north{"{0} north"}
            south{"{0} south"}
            west{"{0} west"}
        }
        energy{
            kilowatt-hour{
                dnam{"kilowatt hours"}
                one{"{0} kilowatt hour"}
                other{"{0} kilowatt hours"}
            }
        }
        length{
            centimeter{
                per{"{0} centimetre"}
            }
            decimeter{
                one{"decimetre"}
                other{"{0} decimetres"}
            }
            kilometer{
                dnam{"kilometre"}
            }
            micrometer{
                dnam{"micrometres"}
            }
        }
        mass{
            metric-ton{
                dnam{"tonnes"}
                one{"tonne"}
                other{"{0} tonnes"}
            }
        }
        temperature{
            generic{
                dnam{"degrees"}
                one{"{0} degree"}
                other{"{0} degrees"}
            }
        }
    }
    unitsNarrow{
        concentr{
            milligram-per-deciliter{
                dnam{"mg/dL"}
                one{"{0}mg/dL"}
                other{"{0}mg/dL"}
            }
            millimole-per-liter{
                dnam{"mmol/L"}
                one{"{0}mmol/L"}
                other{"{0}mmol/L"}
            }
        }
        consumption{
            liter-per-100kilometers{
                dnam{"L/100km"}
                one{"{0}L/100km"}
                other{"{0}L/100km"}
            }
            liter-per-kilometer{
                dnam{"L/km"}
                one{"{0}L/km"}
                other{"{0}L/km"}
            }
        }
        duration{
            millisecond{
                dnam{"msec."}
                one{"{0} ms"}
                other{"{0} ms"}
            }
            minute{
                dnam{"min."}
                one{"{0} min."}
                other{"{0} min."}
            }
            second{
                dnam{"sec."}
                one{"{0} s."}
                other{"{0} s."}
            }
        }
        length{
            meter{
                dnam{"metre"}
            }
        }
        speed{
            kilometer-per-hour{
                dnam{"km/h"}
                one{"{0} km/h"}
                other{"{0} km/h"}
            }
            mile-per-hour{
                dnam{"m.p.h."}
                one{"{0} m.p.h."}
                other{"{0} m.p.h."}
            }
        }
        temperature{
            celsius{
                one{"{0}°C"}
                other{"{0}°C"}
            }
        }
        volume{
            bushel{
                one{"{0} bus."}
                other{"{0} bus."}
            }
            centiliter{
                dnam{"cL"}
                one{"{0}cL"}
                other{"{0}cL"}
            }
            deciliter{
                dnam{"dL"}
                one{"{0}dL"}
                other{"{0}dL"}
            }
            hectoliter{
                dnam{"hL"}
                one{"{0}hL"}
                other{"{0}hL"}
            }
            megaliter{
                dnam{"ML"}
                one{"{0}ML"}
                other{"{0}ML"}
            }
            milliliter{
                dnam{"mL"}
                one{"{0}mL"}
                other{"{0}mL"}
            }
        }
    }
    unitsShort{
        angle{
            arc-minute{
                dnam{"arcmin."}
                one{"{0} arcmin."}
                other{"{0} arcmin."}
            }
            arc-second{
                dnam{"arcsec."}
                one{"{0} arcsec."}
                other{"{0} arcsec."}
            }
            degree{
                one{"{0} deg."}
                other{"{0} deg."}
            }
        }
        area{
            square-meter{
                dnam{"metres²"}
            }
        }
        concentr{
            milligram-per-deciliter{
                dnam{"mg/dL"}
                one{"{0} mg/dL"}
                other{"{0} mg/dL"}
            }
            millimole-per-liter{
                one{"{0} mmol/L"}
                other{"{0} mmol/L"}
            }
        }
        consumption{
            liter-per-100kilometers{
                dnam{"L/100 km"}
                one{"{0} L/100 km"}
                other{"{0} L/100 km"}
            }
            liter-per-kilometer{
                one{"{0} L/km"}
                other{"{0} L/km"}
            }
            mile-per-gallon{
                dnam{"miles/gal. US"}
                one{"{0} m.p.g. US"}
                other{"{0} m.p.g. US"}
            }
            mile-per-gallon-imperial{
                dnam{"miles/gal."}
                one{"{0} m.p.g."}
                other{"{0} m.p.g."}
            }
        }
        duration{
            century{
                dnam{"C."}
                one{"{0} C."}
                other{"{0} C."}
            }
            hour{
                per{"{0} phr"}
            }
            microsecond{
                dnam{"μsec."}
            }
            millisecond{
                dnam{"millisec."}
            }
            minute{
                dnam{"min."}
                one{"{0} min."}
                other{"{0} min."}
                per{"{0}/min."}
            }
            month{
                one{"{0} m."}
                other{"{0} m."}
            }
            nanosecond{
                dnam{"nanosec."}
            }
            second{
                dnam{"sec."}
                one{"{0} sec."}
                other{"{0} sec."}
                per{"{0} ps."}
            }
        }
        energy{
            kilowatt-hour{
                dnam{"kWh"}
            }
        }
        length{
            astronomical-unit{
                dnam{"AU"}
                one{"{0} AU"}
                other{"{0} AU"}
            }
            fathom{
                one{"{0} fm"}
                other{"{0} fm"}
            }
            light-year{
                one{"{0} l.y."}
                other{"{0} l.y."}
            }
        }
        mass{
            carat{
                one{"{0} CM"}
                other{"{0} CM"}
            }
        }
        pressure{
            millibar{
                dnam{"mb"}
                one{"{0} mb"}
                other{"{0} mb"}
            }
        }
        speed{
            kilometer-per-hour{
                one{"{0} km/h"}
                other{"{0} km/h"}
            }
            meter-per-second{
                dnam{"metres/sec."}
                one{"{0} m/s."}
                other{"{0} m/s."}
            }
            mile-per-hour{
                one{"{0} m.p.h."}
                other{"{0} m.p.h."}
            }
        }
        temperature{
            generic{
                dnam{"deg."}
            }
        }
        volume{
            bushel{
                one{"{0} bus."}
                other{"{0} bus."}
            }
            centiliter{
                dnam{"cL"}
                one{"{0} cL"}
                other{"{0} cL"}
            }
            deciliter{
                dnam{"dL"}
                one{"{0} dL"}
                other{"{0} dL"}
            }
            hectoliter{
                dnam{"hL"}
                one{"{0} hL"}
                other{"{0} hL"}
            }
            liter{
                one{"{0} L"}
                other{"{0} L"}
            }
            megaliter{
                dnam{"ML"}
                one{"{0} ML"}
                other{"{0} ML"}
            }
            milliliter{
                dnam{"mL"}
                one{"{0} mL"}
                other{"{0} mL"}
            }
        }
    }
}
