# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Click Control messages

field-maxlength-error={0} ne doit pas \u00eatre plus de {1} caract\u00e8res
field-minlength-error={0} doit \u00eatre au moins {1} caract\u00e8res
field-required-error=Il faut assigner une valeur pour {0}

file-required-error=Il faut assigner un nom ficher pour {0}

label-required-prefix=
label-required-suffix=<span class="required">*</span>
label-not-required-prefix=
label-not-required-suffix=&#160;

not-checked-error=Il faut s\u00e9lectionner {0}

number-format-error={0} doit \u00eatre une valeur num\u00e9rique
number-maxvalue-error={0} ne doit pas \u00eatre sup\u00e9rieur \u00e0 {1}
number-minvalue-error={0} ne doit pas \u00eatre inf\u00e9rieur \u00e0 {1}

select-error=Il faut s\u00e9lectionner une valeur pour {0}

table-first-label=Premi\u00e8re
table-first-title=Va \u00e0 la premi\u00e8re page
table-previous-label=Pr\u00e9c
table-previous-title=Va \u00e0 la page pr\u00e9c\u00e9dente
table-next-label=Suiv
table-next-title=Va \u00e0 la page suivante
table-last-label=Derni\u00e8re
table-last-title=Va \u00e0 la derni\u00e8re page
table-goto-title=Va \u00e0 la page
table-page-banner=<span class="pagebanner">{0} \u00e9l\u00e9ments trouv\u00e9s, montre {1} de {2}.</span>
table-page-banner-nolinks=<span class="pagebanner-nolinks">{0} \u00e9l\u00e9ments trouv\u00e9s, montre {1} de {2}.</span>
table-page-links=<span class="pagelinks">[{0}/{1}] {2} [{3}/{4}]</span>
table-page-links-nobanner=<span class="pagelinks-nobanner">[{0}/{1}] {2} [{3}/{4}]</span>
table-no-rows-found=Aucun enregistrement

# Message displayed when a error occurs when the application is in "production" mode
production-error-message=<div id='errorReport' class='errorReport'>L''application a rencontr\u00e9e une erreur inattendue.</div>
