/*
* Ressources françaises pour Ajout/Suppression de programmes
*
* Copyright 2008 David Adam
*
* 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

STRINGTABLE
{
   IDS_CPL_TITLE, "Ajout/Suppression de programmes"
   IDS_CPL_DESC, "Vous permet d'installer un nouveau logiciel, ou supprimer un logiciel existant de votre ordinateur."
   IDS_TAB1_TITLE, "Applications"

   IDS_UNINSTALL_FAILED, "Impossible d'exécuter le désinstalleur « %s ». Voulez-vous supprimer l'entrée de désinstallation de ce programme de la base de registre ?"
   IDS_NOT_SPECIFIED, "Non spécifié"

   IDS_COLUMN_NAME, "Nom"
   IDS_COLUMN_PUBLISHER, "Éditeur"
   IDS_COLUMN_VERSION, "Version"
   IDS_INSTALL_FILTER, "Programmes d'installation\0*instal*.exe;*setup*.exe;*.msi\0Programmes (*.exe)\0*.exe\0Tous les fichiers (*.*)\0*.*\0\0"

   IDS_REMOVE, "&Supprimer..."
   IDS_MODIFY_REMOVE, "&Modifier/Supprimer..."
}

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
}
