﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/en_GB.xml
// *
// ***************************************************************************
en_GB{
    %%Parent{"en_001"}
    Version{"2.1.8.19"}
    durationUnits{
        hm{"h:mm"}
        hms{"h:mm:ss"}
        ms{"m:ss"}
    }
    units{
        acceleration{
            meter-per-second-squared{
                dnam{"metres per second squared"}
                one{"{0} metre per second squared"}
                other{"{0} metres per second squared"}
            }
        }
        area{
            square-centimeter{
                dnam{"square centimetres"}
                one{"{0} square centimetre"}
                other{"{0} square centimetres"}
            }
            square-kilometer{
                dnam{"square kilometres"}
                one{"{0} square kilometre"}
                other{"{0} square kilometres"}
            }
            square-meter{
                dnam{"square metres"}
                one{"{0} square metre"}
                other{"{0} square metres"}
            }
        }
        consumption{
            liter-per-kilometer{
                dnam{"litres per kilometre"}
                one{"{0} litre per kilometre"}
                other{"{0} litres per kilometre"}
            }
        }
        length{
            centimeter{
                dnam{"centimetres"}
                one{"{0} centimetre"}
                other{"{0} centimetres"}
            }
            decimeter{
                dnam{"decimetre"}
                one{"{0} decimetre"}
                other{"{0} decimetres"}
            }
            kilometer{
                dnam{"kilometres"}
                one{"{0} kilometre"}
                other{"{0} kilometres"}
            }
            meter{
                dnam{"metres"}
                one{"{0} metre"}
                other{"{0} metres"}
            }
            micrometer{
                dnam{"micrometre"}
                one{"{0} micrometre"}
                other{"{0} micrometres"}
            }
            millimeter{
                dnam{"millimetres"}
                one{"{0} millimetre"}
                other{"{0} millimetres"}
            }
            nanometer{
                dnam{"nanometres"}
                one{"{0} nanometre"}
                other{"{0} nanometres"}
            }
            picometer{
                dnam{"picometres"}
                one{"{0} picometre"}
                other{"{0} picometres"}
            }
        }
        pressure{
            millimeter-of-mercury{
                dnam{"millimetres of mercury"}
                one{"{0} millimetre of mercury"}
                other{"{0} millimetres of mercury"}
            }
        }
        speed{
            kilometer-per-hour{
                dnam{"kilometres per hour"}
                one{"{0} kilometre per hour"}
                other{"{0} kilometres per hour"}
            }
            meter-per-second{
                dnam{"metres per second"}
                one{"{0} metre per second"}
                other{"{0} metres per second"}
            }
        }
        volume{
            centiliter{
                dnam{"centilitres"}
                one{"{0} centilitre"}
                other{"{0} centilitres"}
            }
            cubic-centimeter{
                dnam{"cubic centimetres"}
                one{"{0} cubic centimetre"}
                other{"{0} cubic centimetres"}
            }
            cubic-kilometer{
                dnam{"cubic kilometres"}
                one{"{0} cubic kilometre"}
                other{"{0} cubic kilometres"}
            }
            cubic-meter{
                dnam{"cubic metres"}
                one{"{0} cubic metre"}
                other{"{0} cubic metres"}
            }
            deciliter{
                dnam{"decilitres"}
                one{"{0} decilitre"}
                other{"{0} decilitres"}
            }
            hectoliter{
                dnam{"hectolitres"}
                one{"{0} hectolitre"}
                other{"{0} hectolitres"}
            }
            liter{
                dnam{"litres"}
                one{"{0} litre"}
                other{"{0} litres"}
            }
            megaliter{
                dnam{"megalitres"}
                one{"{0} megalitre"}
                other{"{0} megalitres"}
            }
            milliliter{
                dnam{"millilitres"}
                one{"{0} millilitre"}
                other{"{0} millilitres"}
            }
        }
    }
    unitsNarrow{
        acceleration{
            g-force{
                one{"{0}G"}
                other{"{0}G"}
            }
        }
        mass{
            pound{
                one{"{0}lb"}
                other{"{0}lb"}
            }
        }
        pressure{
            inch-hg{
                one{"{0}\u0022 Hg"}
                other{"{0}\u0022 Hg"}
            }
        }
        volume{
            liter{
                dnam{"litre"}
            }
        }
    }
    unitsShort{
        acceleration{
            meter-per-second-squared{
                dnam{"metres/sec²"}
            }
        }
        consumption{
            liter-per-kilometer{
                dnam{"litres/km"}
            }
        }
        length{
            centimeter{
                dnam{"centimetres"}
            }
            fathom{
                one{"{0} fm"}
                other{"{0} fm"}
            }
            meter{
                dnam{"metres"}
            }
        }
        speed{
            kilometer-per-hour{
                dnam{"kilometres per hour"}
            }
            meter-per-second{
                dnam{"metres per second"}
            }
        }
        volume{
            liter{
                dnam{"litres"}
                one{"{0} l"}
                other{"{0} l"}
            }
        }
    }
}
