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