﻿// ***************************************************************************
// *
// * Copyright (C) 2012 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/fr_CA.xml
// *
// ***************************************************************************
fr_CA{
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤;(#,##0.00 ¤)"}
            }
        }
    }
    PaperSize:intvector{
        279,
        216,
    }
    Version{"2.0.64.92"}
    calendar{
        gregorian{
            DateTimePatterns{
                "HH 'h' mm 'min' ss 's' zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE d MMMM y",
                "d MMMM y",
                "yyyy-MM-dd",
                "yy-MM-dd",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                MEd{"E M-d"}
                MMd{"MM-d"}
                MMdd{"MM-dd"}
                Md{"M-d"}
                yM{"yyyy-MM"}
                yMEd{"E yyyy-MM-dd"}
                yMd{"yyyy-MM-dd"}
                yyMM{"yy-MM"}
            }
            fields{
                month{
                    relative{
                        "-1"{"Le mois dernier"}
                        "0"{"Ce mois-ci"}
                        "1"{"Le mois prochain"}
                    }
                }
                week{
                    relative{
                        "-1"{"La semaine dernière"}
                        "0"{"Cette semaine"}
                        "1"{"La semaine prochaine"}
                    }
                }
                year{
                    relative{
                        "-1"{"L'année dernière"}
                        "0"{"Cette année"}
                        "1"{"L'année prochaine"}
                    }
                }
            }
            intervalFormats{
                H{
                    H{"HH–HH"}
                }
                Hm{
                    H{"HH:mm–HH:mm"}
                    m{"HH:mm–HH:mm"}
                }
                Hmv{
                    H{"HH:mm–HH:mm v"}
                    m{"HH:mm–HH:mm v"}
                }
                Hv{
                    H{"HH–HH v"}
                }
                MEd{
                    M{"E MM-dd – E MM-dd"}
                    d{"E MM-dd – E MM-dd"}
                }
                Md{
                    M{"MM-dd – MM-dd"}
                    d{"MM-dd – MM-dd"}
                }
                d{
                    d{"d–d"}
                }
                h{
                    h{"h–h a"}
                }
                hm{
                    h{"h:mm–h:mm a"}
                    m{"h:mm–h:mm a"}
                }
                hmv{
                    h{"h:mm–h:mm a v"}
                    m{"h:mm–h:mm a v"}
                }
                hv{
                    h{"h–h a v"}
                }
                y{
                    y{"y–y"}
                }
                yM{
                    M{"yy-MM – yy-MM"}
                    y{"yy-MM – yy-MM"}
                }
                yMEd{
                    M{"'du' E yy-MM-dd 'au' E yy-MM-dd"}
                    d{"'du' E yy-MM-dd 'au' E yy-MM-dd"}
                    y{"'du' E yy-MM-dd 'au' E yy-MM-dd"}
                }
                yMMM{
                    y{"'de' MMM y 'à' MMM y"}
                }
                yMMMEd{
                    M{"'du' E d MMM 'au' E d MMM y"}
                    d{"'du' E d 'au' E d MMM y"}
                    y{"'du' E d MMM y 'au' E d MMM y"}
                }
                yMMMM{
                    M{"MMMM – MMMM y"}
                }
                yMMMd{
                    M{"'du' d MMM 'au' d MMM y"}
                    y{"'du' d MMM y 'au' d MMM y"}
                }
                yMd{
                    M{"yy-MM-dd – yy-MM-dd"}
                    d{"yy-MM-dd – yy-MM-dd"}
                    y{"yy-MM-dd – yy-MM-dd"}
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"›"}
        alternateQuotationStart{"‹"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    measurementSystemNames{
        UK{"R-U"}
    }
    units{
        day-future{
            one{"Dans {0} jour"}
            other{"Dans {0} jours"}
        }
        day-past{
            one{"Il y a {0} jour"}
            other{"Il y a {0} jours"}
        }
        hour-future{
            one{"Dans {0} heure"}
            other{"Dans {0} heures"}
        }
        hour-past{
            one{"Il y a {0} heure"}
            other{"Il y a {0} heures"}
        }
        minute-future{
            one{"Dans {0} minute"}
            other{"Dans {0} minutes"}
        }
        minute-past{
            one{"Il y a {0} minute"}
            other{"Il y a {0} minutes"}
        }
        month-future{
            one{"Dans {0} mois"}
            other{"Dans {0} mois"}
        }
        month-past{
            one{"Il y a {0} mois"}
            other{"Il y a {0} mois"}
        }
        second-future{
            0{"Dans 0 seconde"}
            1{"Dans 1 seconde"}
            one{"Dans {0} seconde"}
            other{"Dans {0} secondes"}
        }
        second-past{
            one{"Il y a {0} seconde"}
            other{"Il y a {0} secondes"}
        }
        week-future{
            one{"Dans {0} semaine"}
            other{"Dans {0} semaines"}
        }
        week-past{
            one{"Il y a {0} semaine"}
            other{"Il y a {0} semaines"}
        }
        year-future{
            one{"Dans {0} an"}
            other{"Dans {0} ans"}
        }
        year-past{
            one{"Il y a {0} an"}
            other{"Il y a {0} ans"}
        }
    }
}
