/*
 * WineCfg resources
 * French Language Support
 *
 * Copyright 2005-2007 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 "config.h"   /* Needed for the PACKAGE_STRING definition */
#include "resource.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

IDD_ABOUTCFG DIALOGEX 0, 0, 260, 220
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
BEGIN
    CONTROL         "", IDC_ABT_PANEL, "STATIC", SS_OWNERDRAW, 0, 0, 260, 140
    LTEXT           PACKAGE_NAME,IDC_ABT_TITLE_TEXT,105,30,55,30
    LTEXT           PACKAGE_VERSION,IDC_ABT_PANEL_TEXT,160,43,140,8
    CONTROL         "",IDC_ABT_WEB_LINK,"SysLink", LWS_TRANSPARENT, 105,53,106,8
    LTEXT           "Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier suivant les termes de la Licence Générale Publique Limitée, telle que publiée par la Free Software Foundation ; soit la version 2.1 de la Licence, soit (à votre gré) toute version ultérieure."
                    IDC_ABT_LICENSE_TEXT,105,64,145,60
    GROUPBOX        "Informations d'enregistrement de Windows ", IDC_STATIC, 15, 155, 230, 55
    LTEXT           "&Propriétaire:", IDC_STATIC, 22, 171, 40, 20
    EDITTEXT        IDC_ABT_OWNER, 75, 171, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP
    LTEXT           "&Organisation:", IDC_STATIC, 22, 185, 50, 20
    EDITTEXT        IDC_ABT_ORG, 75, 185, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP
END

IDD_APPCFG DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " Paramètres des applications ",IDC_STATIC, 8,4,244,210
    LTEXT           "Wine peut imiter différentes versions de Windows pour chaque application. Cet onglet est lié aux onglets Bibliothèques et Affichage pour vous permettre de changer des paramètres globaux ou par application dans ces onglets.",
                    IDC_STATIC,15,20,227,40
    CONTROL         "Applications",IDC_APP_LISTVIEW,"SysListView32",WS_BORDER | WS_TABSTOP | LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS,
                    15,60,230,110
    PUSHBUTTON	    "&Ajouter une application...",IDC_APP_ADDAPP, 16,174,90,14
    PUSHBUTTON	    "&Supprimer une application",IDC_APP_REMOVEAPP, 110,174,90,14
    LTEXT           "Version de &Windows :",IDC_STATIC,17,195,70,8
    COMBOBOX        IDC_WINVER,95,194,151,31,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END

IDD_GRAPHCFG DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX    " Paramètres des fenêtres ",IDC_STATIC,8,4,244,92
    CONTROL     "Capturer automatiquement la &souris dans les fenêtres plein écran",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,16,230,16
    CONTROL     "Permettre au gestionnaire de fenêtres de &décorer les fenêtres",IDC_ENABLE_DECORATED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,35,230,8
    CONTROL     "Permettre au gestionnaire de fenêtres de &contrôler les fenêtres",IDC_ENABLE_MANAGED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,50,230,8
    CONTROL     "Émuler un bureau virtuel",IDC_ENABLE_DESKTOP,"Button",
                BS_AUTOCHECKBOX | WS_TABSTOP,15,64,230,8
    LTEXT       "Taille du bureau:",IDC_DESKTOP_SIZE,15,78,54,8,WS_DISABLED
    LTEXT       "X",IDC_DESKTOP_BY,119,78,8,8,WS_DISABLED
    EDITTEXT    IDC_DESKTOP_WIDTH,74,76,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
    EDITTEXT    IDC_DESKTOP_HEIGHT,127,76,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED

    GROUPBOX    " Direct3D ",IDC_STATIC,8,100,244,49
    LTEXT       "Support du Vertex Shader: ",IDC_STATIC,15,115,90,32
    COMBOBOX    IDC_D3D_VSHADER_MODE,110,113,135,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    CONTROL     "Utiliser le Pixel Shader (si supporté par le matériel)",IDC_D3D_PSHADER_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,131,230,10

    GROUPBOX    " Résolution de l'écran ",IDC_STATIC,8,153,244,63
    CONTROL     "", IDC_RES_TRACKBAR, "msctls_trackbar32",WS_TABSTOP,12,163,187,15
    EDITTEXT    IDC_RES_DPIEDIT,204,163,23,13,ES_NUMBER|WS_TABSTOP
    LTEXT       "dpi",IDC_STATIC,233,165,12,8 /* units shouldn't be translated */
    LTEXT       "Ceci est un exemple utilisant du Tahoma 10 points",IDC_RES_FONT_PREVIEW,15,183,230,28
END

IDD_DLLCFG DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " Remplacement de DLL ",IDC_STATIC,8,4,244,210
    LTEXT           "Il est possible de spécifier si Wine doit utiliser une version native (importée depuis Windows ou installée par l'application) ou bien une version intégrée (distribuée avec Wine) de chaque bibliothèque partagée (DLL) utilisée par un programme."
                    , IDC_STATIC,16,16,220,32
    LTEXT           "&Nouveau remplacement pour :",IDC_STATIC,16,58,100,8
    COMBOBOX        IDC_DLLCOMBO,16,68,140,14,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_SORT | CBS_LOWERCASE
    PUSHBUTTON      "&Ajouter",IDC_DLLS_ADDDLL, 164,68,82,14
    LTEXT           "Remplacements existants :",IDC_STATIC,16,86,100,8
    LISTBOX         IDC_DLLS_LIST,16,96,140,112,WS_BORDER | WS_TABSTOP | WS_VSCROLL
    PUSHBUTTON      "&Modifier",IDC_DLLS_EDITDLL,164,96,82,14
    PUSHBUTTON      "&Supprimer",IDC_DLLS_REMOVEDLL,164,114,82,14
END

IDD_LOADORDER DIALOG 80, 90, 135, 92
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Éditer le remplacement"
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " Ordre de chargement ",IDC_STATIC,8,4,120,66
    CONTROL         "&intégrée (Wine)",IDC_RAD_BUILTIN,"Button", BS_AUTORADIOBUTTON | WS_GROUP,16,14,77,10
    CONTROL         "&native (Windows)",IDC_RAD_NATIVE,"Button", BS_AUTORADIOBUTTON,16,24,77,10
    CONTROL         "i&ntégrée puis native",IDC_RAD_BUILTIN_NATIVE,"Button", BS_AUTORADIOBUTTON,16,34,77,10
    CONTROL         "n&ative puis intégrée",IDC_RAD_NATIVE_BUILTIN,"Button", BS_AUTORADIOBUTTON,16,44,77,10
    CONTROL         "&désactivé",IDC_RAD_DISABLE,"Button", BS_AUTORADIOBUTTON,16,54,77,10
    DEFPUSHBUTTON   "OK",IDOK,23,74,45,14,WS_GROUP
    PUSHBUTTON      "Annuler",IDCANCEL,72,74,45,14,WS_GROUP
END

IDD_DRIVECHOOSE DIALOG  60, 70, 170, 60
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Sélectionnez la lettre du lecteur"
FONT 8, "MS Shell Dlg"
BEGIN
    COMBOBOX IDC_DRIVESA2Z,15,10,75,230,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,105,10,45,14,WS_GROUP
    PUSHBUTTON      "Annuler",IDCANCEL,105,30,45,14,WS_GROUP
END

IDD_DRIVECFG DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " Assignation des lecteurs ",IDC_STATIC,8,4,244,195
    LTEXT           "N'a pu se connecter au gestionnaire de montage : la configuration du lecteur n'a pu être éditée.", IDC_STATIC_MOUNTMGR_ERROR, 15,30,190,76
    CONTROL         "Listview",IDC_LIST_DRIVES,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT |
                    LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,18,232,76
    PUSHBUTTON      "&Ajouter...",IDC_BUTTON_ADD,15,98,40,14
    PUSHBUTTON      "&Supprimer",IDC_BUTTON_REMOVE,58,98,40,14
    PUSHBUTTON      "&Détection automatique...",IDC_BUTTON_AUTODETECT,152,98,95,14

    /* editing drive details */
    LTEXT           "&Chemin :",IDC_STATIC_PATH,15,122,30,9
    EDITTEXT        IDC_EDIT_PATH,49,120,152,13,ES_AUTOHSCROLL | WS_TABSTOP
    PUSHBUTTON      "&Parcourir...",IDC_BUTTON_BROWSE_PATH,204,120,43,14

    LTEXT           "&Type :",IDC_STATIC_TYPE,15,137,21,10
    COMBOBOX        IDC_COMBO_TYPE,49,135,77,16,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP

    PUSHBUTTON      "&Affichage avancé",IDC_BUTTON_SHOW_HIDE_ADVANCED,147,135,100,14  /* doesn't seem to be displayed, ever */
    LTEXT           "De&vice:",IDC_STATIC_DEVICE,15,153,26,9
    EDITTEXT        IDC_EDIT_DEVICE,49,150,152,14,ES_AUTOHSCROLL | WS_TABSTOP
    PUSHBUTTON      "&Parcourir...",IDC_BUTTON_BROWSE_DEVICE,204,150,43,14

    LTEXT           "É&tiquette :",IDC_STATIC_LABEL,15,168,40,12
    EDITTEXT        IDC_EDIT_LABEL,55,165,67,13,ES_AUTOHSCROLL | WS_TABSTOP
    LTEXT           "N° de &série :",IDC_STATIC_SERIAL,15,183,40,12
    EDITTEXT        IDC_EDIT_SERIAL,55,180,67,13,ES_AUTOHSCROLL | WS_TABSTOP

    CONTROL         "Montrer les fichiers cachés",IDC_SHOW_DOT_FILES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,205,230,8
END

IDD_AUDIOCFG DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " DirectSound ",IDC_STATIC,8,4,244,45
    LTEXT	    "Accélération matérielle : ",IDC_STATIC,15,14,80,10
    COMBOBOX	    IDC_DSOUND_HW_ACCEL,100,12,148,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Échantillonage (défaut) :",IDC_STATIC,15,29,80,8
    COMBOBOX        IDC_DSOUND_RATES,100,27,38,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Bits par échantillon :",IDC_STATIC,153,29,80,8
    COMBOBOX        IDC_DSOUND_BITS,223,27,25,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "&Tester le son",IDC_AUDIO_TEST,8,51,89,14
END

IDD_DESKTOP_INTEGRATION DIALOG  0, 0, 260, 220
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX        " Apparence ",IDC_STATIC,8,4,244,93
    LTEXT           "&Thème :",IDC_STATIC,15,15,130,8
    COMBOBOX        IDC_THEME_THEMECOMBO,15,24,112,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "&Installer un thème...",IDC_THEME_INSTALL,136,23,93,14
    LTEXT           "&Couleur :",IDC_THEME_COLORTEXT,15,40,112,8
    COMBOBOX        IDC_THEME_COLORCOMBO,15,49,112,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "T&aille :",IDC_THEME_SIZETEXT,135,40,110,8
    COMBOBOX        IDC_THEME_SIZECOMBO,135,49,110,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Élé&ment :",IDC_STATIC,15,64,112,8
    COMBOBOX        IDC_SYSPARAM_COMBO,15,74,112,105,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT
    LTEXT           "Couleu&r :",IDC_SYSPARAM_COLOR_TEXT,135,64,25,8,WS_DISABLED
    PUSHBUTTON      "",IDC_SYSPARAM_COLOR,135,74,25,13,WS_DISABLED | BS_OWNERDRAW
    LTEXT           "Tai&lle :",IDC_SYSPARAM_SIZE_TEXT,166,64,30,8,WS_DISABLED
    EDITTEXT        IDC_SYSPARAM_SIZE,166,74,23,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED
    CONTROL         "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASS,UDS_SETBUDDYINT | WS_DISABLED,187,74,15,13
    PUSHBUTTON      "&Police :",IDC_SYSPARAM_FONT,206,73,38,14,WS_DISABLED
    GROUPBOX        " Dossiers système ",IDC_STATIC,8,103,244,108
    CONTROL         "Listview",IDC_LIST_SFPATHS,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT |
                     LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,118,230,64
    CONTROL         "&Lier à :",IDC_LINK_SFPATH,"Button",BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED,15,191,34,13
    EDITTEXT         IDC_EDIT_SFPATH,53,191,137,13,ES_AUTOHSCROLL|WS_TABSTOP|WS_DISABLED
    PUSHBUTTON      "Parcou&rir...",IDC_BROWSE_SFPATH,197,191,49,14,WS_DISABLED
END
