﻿// ***************************************************************************
// *
// * 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"}
    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."}
            }
        }
    }
}
