/*
 * French resources for oleacc
 *
 * Copyright 2008 Jonathan Ernst
 * Copyright 2009 Frédéric Delanoy
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "oleacc.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
{
    0 "objet inconnu" /* non documenté */
    ROLE_SYSTEM_TITLEBAR    "barre de titre"
    ROLE_SYSTEM_MENUBAR     "barre de menus"
    ROLE_SYSTEM_SCROLLBAR   "barre de défilement"
    ROLE_SYSTEM_GRIP        "poignée"
    ROLE_SYSTEM_SOUND       "son"
    ROLE_SYSTEM_CURSOR      "curseur"
    ROLE_SYSTEM_CARET       "curseur texte"
    ROLE_SYSTEM_ALERT       "alerte"
    ROLE_SYSTEM_WINDOW      "fenêtre"
    ROLE_SYSTEM_CLIENT      "client"
    ROLE_SYSTEM_MENUPOPUP   "menu contextuel"
    ROLE_SYSTEM_MENUITEM    "élément de menu"
    ROLE_SYSTEM_TOOLTIP     "infobulle"
    ROLE_SYSTEM_APPLICATION "application"
    ROLE_SYSTEM_DOCUMENT    "document"
    ROLE_SYSTEM_PANE        "panneau"
    ROLE_SYSTEM_CHART       "diagramme"
    ROLE_SYSTEM_DIALOG      "boîte de dialogue"
    ROLE_SYSTEM_BORDER      "bordure"
    ROLE_SYSTEM_GROUPING    "groupement"
    ROLE_SYSTEM_SEPARATOR   "séparateur"
    ROLE_SYSTEM_TOOLBAR     "barre d'outils"
    ROLE_SYSTEM_STATUSBAR   "barre d'état"
    ROLE_SYSTEM_TABLE        "table"
    ROLE_SYSTEM_COLUMNHEADER "en-tête de colonne"
    ROLE_SYSTEM_ROWHEADER    "en-tête de ligne"
    ROLE_SYSTEM_COLUMN       "colonne"
    ROLE_SYSTEM_ROW          "ligne"
    ROLE_SYSTEM_CELL         "cellule"
    ROLE_SYSTEM_LINK         "lien"
    ROLE_SYSTEM_HELPBALLOON  "bulle d'aide"
    ROLE_SYSTEM_CHARACTER    "caractère"
    ROLE_SYSTEM_LIST         "liste"
    ROLE_SYSTEM_LISTITEM     "élément de liste"
    ROLE_SYSTEM_OUTLINE      "plan"
    ROLE_SYSTEM_OUTLINEITEM  "élément du plan"
    ROLE_SYSTEM_PAGETAB      "onglet de page"
    ROLE_SYSTEM_PROPERTYPAGE "page de propriétés"
    ROLE_SYSTEM_INDICATOR    "indicateur"
    ROLE_SYSTEM_GRAPHIC      "image"
    ROLE_SYSTEM_STATICTEXT   "texte statique"
    ROLE_SYSTEM_TEXT         "texte"
    ROLE_SYSTEM_PUSHBUTTON   "bouton pressoir"
    ROLE_SYSTEM_CHECKBUTTON  "case à cocher"
    ROLE_SYSTEM_RADIOBUTTON  "bouton radio"
    ROLE_SYSTEM_COMBOBOX     "boîte combinée"
    ROLE_SYSTEM_DROPLIST     "liste déroulante"
    ROLE_SYSTEM_PROGRESSBAR  "barre de progression"
    ROLE_SYSTEM_DIAL         "cadran"
    ROLE_SYSTEM_HOTKEYFIELD  "champ avec raccourci clavier"
    ROLE_SYSTEM_SLIDER       "glissière"
    ROLE_SYSTEM_SPINBUTTON   "bouton fléché"
    ROLE_SYSTEM_DIAGRAM      "diagramme"
    ROLE_SYSTEM_ANIMATION    "animation"
    ROLE_SYSTEM_EQUATION     "équation"
    ROLE_SYSTEM_BUTTONDROPDOWN "bouton avec liste déroulante"
    ROLE_SYSTEM_BUTTONMENU   "bouton de menu"
    ROLE_SYSTEM_BUTTONDROPDOWNGRID "bouton avec grille déroulante"
    ROLE_SYSTEM_WHITESPACE   "blanc"
    ROLE_SYSTEM_PAGETABLIST  "liste d'onglets de pages"
    ROLE_SYSTEM_CLOCK        "horloge"
    ROLE_SYSTEM_SPLITBUTTON  "bouton avec menu"
    ROLE_SYSTEM_IPADDRESS    "adresse IP"
    ROLE_SYSTEM_OUTLINEBUTTON "bouton de résumé"
}
