﻿// ***************************************************************************
// *
// * Copyright (C) 2015 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.20.4"}
    units{
        coordinate{
            east{"{0} east"}
            north{"{0} north"}
            south{"{0} south"}
            west{"{0} west"}
        }
        energy{
            foodcalorie{
                dnam{"calories"}
                one{"{0} calorie"}
                other{"{0} calories"}
            }
            kilocalorie{
                dnam{"kilogram calories"}
                one{"{0} kilogram calorie"}
                other{"{0} kilogram calories"}
            }
            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{
        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²"}
            }
        }
        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."}
                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{
            foodcalorie{
                dnam{"cal"}
                one{"{0} cal"}
            }
            kilocalorie{
                dnam{"Cal"}
                one{"{0} Cal"}
                other{"{0} Cal"}
            }
            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"}
            }
            pound{
                other{"{0} lb"}
            }
        }
        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"}
            }
        }
    }
}
