﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/fr_CA.xml
// *
// ***************************************************************************
fr_CA{
    Version{"2.1.8.19"}
    durationUnits{
        hm{"h:mm"}
        hms{"h:mm:ss"}
        ms{"m:ss"}
    }
    units{
        acceleration{
            g-force{
                dnam{"force G"}
            }
        }
        angle{
            arc-minute{
                one{"{0} minute d’angle"}
                other{"{0} minutes d’angle"}
            }
        }
        area{
            acre{
                dnam{"acres"}
                one{"{0} acre"}
                other{"{0} acres"}
            }
            square-mile{
                dnam{"milles carrés"}
                one{"{0} mille carré"}
                other{"{0} milles carrés"}
            }
            square-yard{
                dnam{"verges carrées"}
                one{"{0} verge carrée"}
                other{"{0} verges carrées"}
            }
        }
        consumption{
            mile-per-gallon{
                dnam{"milles au gallon"}
                one{"{0} mille au gallon"}
                other{"{0} milles au gallon"}
            }
        }
        duration{
            second{
                per{"{0} à la seconde"}
            }
        }
        energy{
            foodcalorie{
                dnam{"kilocalories"}
                one{"{0} kilocalorie"}
                other{"{0} kilocalories"}
            }
        }
        length{
            mile{
                dnam{"mille"}
                one{"{0} mille"}
                other{"{0} milles"}
            }
            yard{
                dnam{"verges"}
                one{"{0} verge"}
                other{"{0} verges"}
            }
        }
        speed{
            kilometer-per-hour{
                dnam{"kilomètres à l’heure"}
            }
            mile-per-hour{
                dnam{"milles par heure"}
                one{"{0} mille par heure"}
                other{"{0} milles par heure"}
            }
        }
        volume{
            cubic-mile{
                dnam{"milles cubes"}
                one{"{0} mille cube"}
                other{"{0} milles cubes"}
            }
            cubic-yard{
                dnam{"verges cubes"}
                one{"{0} verge cube"}
                other{"{0} verges cubes"}
            }
            pint{
                dnam{"chopine"}
                one{"{0} chopine"}
                other{"{0} chopines"}
            }
            quart{
                dnam{"pintes"}
                one{"{0} pinte"}
                other{"{0} pintes"}
            }
            teaspoon{
                dnam{"cuillères à thé"}
                one{"{0} cuillère à thé"}
                other{"{0} cuillères à thé"}
            }
        }
    }
    unitsNarrow{
        duration{
            month{
                dnam{"m."}
            }
        }
        temperature{
            celsius{
                one{"{0} °C"}
                other{"{0} °C"}
            }
        }
    }
    unitsShort{
        area{
            square-foot{
                one{"{0} pi²"}
                other{"{0} pi²"}
            }
            square-yard{
                dnam{"vg²"}
                one{"{0} vg²"}
                other{"{0} vg²"}
            }
        }
        duration{
            month{
                dnam{"m."}
                one{"{0} m."}
                other{"{0} m."}
            }
        }
        energy{
            foodcalorie{
                dnam{"kcal"}
                one{"{0} kcal"}
                other{"{0} kcal"}
            }
        }
        length{
            astronomical-unit{
                one{"{0} ua"}
                other{"{0} ua"}
            }
            foot{
                one{"{0} pi"}
                other{"{0} pi"}
            }
            light-year{
                dnam{"al"}
                one{"{0} al"}
                other{"{0} al"}
            }
            nautical-mile{
                dnam{"NM"}
                one{"{0} NM"}
                other{"{0} NM"}
            }
            yard{
                dnam{"vg"}
                one{"{0} vg"}
                other{"{0} vg"}
            }
        }
        mass{
            ton{
                dnam{"tc"}
                one{"{0} tc"}
                other{"{0} tc"}
            }
        }
        pressure{
            inch-hg{
                dnam{"po Hg"}
                one{"{0} po Hg"}
                other{"{0} po Hg"}
            }
            pound-per-square-inch{
                dnam{"psi"}
                one{"{0} psi"}
                other{"{0} psi"}
            }
        }
        proportion{
            karat{
                dnam{"carats"}
            }
        }
        speed{
            meter-per-second{
                dnam{"mètres par seconde"}
            }
        }
        volume{
            acre-foot{
                dnam{"ac-pi"}
                one{"{0} ac-pi"}
                other{"{0} ac-pi"}
            }
            centiliter{
                dnam{"cL"}
                one{"{0} cL"}
                other{"{0} cL"}
            }
            cubic-foot{
                one{"{0} pi³"}
                other{"{0} pi³"}
            }
            cubic-yard{
                dnam{"vg³"}
                one{"{0} vg³"}
                other{"{0} vg³"}
            }
            deciliter{
                dnam{"dL"}
                one{"{0} dL"}
                other{"{0} dL"}
            }
            fluid-ounce{
                dnam{"oz liq."}
                one{"{0} oz liq."}
                other{"{0} oz liq."}
            }
            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"}
            }
            pint{
                dnam{"chop"}
                one{"{0} chop"}
                other{"{0} chop"}
            }
            quart{
                dnam{"pte"}
                one{"{0} pte"}
                other{"{0} pte"}
            }
            teaspoon{
                dnam{"c. à t."}
                one{"{0} c. à t."}
                other{"{0} c. à t."}
            }
        }
    }
}
