/*
* Ressources françaises pour Ajout/Suppression de programmes
*
* Copyright 2005-2009 Jonathan Ernst
* Copyright 2008 David Adam
* Copyright 2010      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 "res.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

IDD_MAIN DIALOG 0, 0, 320, 220
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Installation/Désinstallation"
FONT 8, "MS Shell Dlg"
{
CONTROL "Pour installer un nouveau programme à partir d'une disquette, d'un CD-ROM ou d'un disque dur, cliquez sur Installer.", 1000, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 7, 270, 20
 CONTROL "&Installer...", IDC_INSTALL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 242, 26, 68, 14
 CONTROL "", -1, "STATIC", SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 7, 46, 303, 1
 CONTROL 2, 1001, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20
 CONTROL "Les logiciels suivants peuvent être désinstallés automatiquement.\nPour supprimer un programme ou modifier ses composants, sélectionnez-le dans la liste et cliquez sur Supprimer ou Modifier respectivement.", 1002, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 57, 270, 30
 CONTROL "", IDL_PROGRAMS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SORTASCENDING | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 90, 303, 100
 CONTROL "Inf&ormations de support...", IDC_SUPPORT_INFO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 73, 198, 95, 14
 CONTROL "&Modifier...", IDC_MODIFY, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 172, 198, 68, 14
 CONTROL "&Supprimer...", IDC_ADDREMOVE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 244, 198, 68, 14
 CONTROL 3, 1003, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 57, 21, 20
}

IDD_INFO DIALOG 0, 0, 256, 138
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Informations de support"
FONT 8, "MS Shell Dlg"
{
 CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 103, 116, 50, 14
 CONTROL "Les informations suivantes peuvent être utilisées pour obtenir du support technique pour %s :", IDC_INFO_LABEL, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 12, 9, 228, 19
 CONTROL "Éditeur :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 30, 54, 8
 CONTROL "Version :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 40, 54, 8
 CONTROL "Contact :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 50, 54, 8
 CONTROL "Support :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 60, 54, 8
 CONTROL "Téléphone :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 70, 54, 8
 CONTROL "Lisez-moi :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 80, 54, 8
 CONTROL "Mises à jour :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 90, 54, 8
 CONTROL "Commentaires :", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 100, 54, 8
 CONTROL "", IDC_INFO_PUBLISHER, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 30, 136, 8
 CONTROL "", IDC_INFO_VERSION, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 40, 136, 8
 CONTROL "", IDC_INFO_CONTACT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 50, 136, 8
 CONTROL "", IDC_INFO_SUPPORT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 60, 136, 8
 CONTROL "", IDC_INFO_PHONE, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 70, 136, 8
 CONTROL "", IDC_INFO_README, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 80, 136, 8
 CONTROL "", IDC_INFO_UPDATES, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 90, 136, 8
 CONTROL "", IDC_INFO_COMMENTS, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 100, 136, 8
}

ID_DWL_DIALOG DIALOG  0, 0, 260, 110
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Programme d'installation de Gecko pour Wine"
FONT 8, "MS Shell Dlg"
{
    LTEXT "Wine n'a pu trouver de paquet Gecko, qui est nécessaire pour que les applications "\
          "incorporant du HTML puissent fonctionner correctement.\nWine peut automatiquement "\
          "le télécharger et l'installer pour vous.\n\n" \
          "Note : il est recommandé d'utiliser le paquet de votre distribution si disponible. " \
          "Consultez http://wiki.winehq.org/Gecko pour plus de détails.",
          ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
    CONTROL "Progression", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 65, 240, 12
    DEFPUSHBUTTON "&Installer", ID_DWL_INSTALL, 200, 85, 50, 15, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Annuler", IDCANCEL, 140, 85, 50, 15, WS_GROUP | WS_TABSTOP
}
