﻿// ***************************************************************************
// *
// * Copyright (C) 2011 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.58.79"}
    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{"EEE M-d"}
                MMd{"MM-d"}
                MMdd{"MM-dd"}
                Md{"M-d"}
                yM{"yyyy-MM"}
                yMEd{"EEE 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"}
                }
            }
        }
    }
    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"}
        }
    }
}
