/*
 * Shell32
 * French language support
 *
 * Copyright 1998 Juergen Schmied
 * Copyright 2006-2009 Jonathan Ernst
 *
 * 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 "shresdef.h"

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

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

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "&Grandes icônes",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Petites icônes",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Détails",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Affichage"
	  BEGIN
	    MENUITEM "&Grandes icônes",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Petites icônes",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Détails",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Trier les &icônes"
	  BEGIN
	    MENUITEM "Par &nom",	0x30	/* column 0 */
	    MENUITEM "Par &type",	0x32	/* column 2 */
	    MENUITEM "Par t&aille",	0x31	/* ... */
	    MENUITEM "Par &date",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "T&ri automatique",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Aligner les icônes",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Actualiser",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Coller",			FCIDM_SHVIEW_INSERT
	  MENUITEM "Coller comme lien",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Nouveau"
	  BEGIN
	    MENUITEM "Nouveau d&ossier",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nouveau &lien",		FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Propriétés",		FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Sélectionner"		FCIDM_SHVIEW_OPEN
	  MENUITEM "E&xplorer",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Ouvrir",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "Cou&per",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Copier",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Créer un &lien",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "&Supprimer",	FCIDM_SHVIEW_DELETE
	  MENUITEM "&Renommer",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Propriétés",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Fichier"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Quitter", IDM_CPANEL_EXIT
    END

    POPUP "&Affichage"
    BEGIN
        MENUITEM "&Grandes icônes", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Petites icônes", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Détails", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "Ai&de"
    BEGIN
        MENUITEM "À &propos du panneau de configuration...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Parcourir les dossiers"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annuler", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
 	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Parcourir les dossiers"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Dossier :", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Nouveau dossier", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annuler", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Message"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Oui", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Oui pour &tous", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Non", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Annuler", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 230, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "À propos de %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 70, 12, WS_TABSTOP
 PUSHBUTTON "&Licence de Wine...", IDC_ABOUT_LICENSE, 153, 113, 70, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 137, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 137, 10
 LTEXT "Exécuté avec %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine est une réalisation de :", IDC_ABOUT_WINE_TEXT, 8, 55, 214, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Entrez le nom d'un programme, d'un dossier, d'un document ou d'une ressource Internet, et Wine l'ouvrira pour vous.", 12289, 36, 11, 182, 18
 LTEXT "&Ouvrir :", 12305, 7, 39, 24, 10
 CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Annuler", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Parcourir...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Fichier"
	IDS_SHV_COLUMN2		"Taille"
	IDS_SHV_COLUMN3		"Type"
	IDS_SHV_COLUMN4		"Modifié"
	IDS_SHV_COLUMN5		"Attributs"
	IDS_SHV_COLUMN6		"Capacité"
	IDS_SHV_COLUMN7		"Espace disponible"
	IDS_SHV_COLUMN8		"Nom"
	IDS_SHV_COLUMN9		"Commentaires"
	IDS_SHV_COLUMN10	"Propriétaire"
	IDS_SHV_COLUMN11	"Groupe"
	IDS_SHV_COLUMN_DELFROM	"Emplacement d'origine"
	IDS_SHV_COLUMN_DELDATE	"Date de suppression"

        /* special folders */
	IDS_DESKTOP		"Bureau"
	IDS_MYCOMPUTER		"Poste de travail"
	IDS_RECYCLEBIN_FOLDER_NAME      "Corbeille"
	IDS_CONTROLPANEL	"Panneau de configuration"

        /* context menus */
	IDS_VIEW_LARGE		"&Grandes icônes"
	IDS_VIEW_SMALL		"&Petites icônes"
	IDS_VIEW_LIST		"&Liste"
	IDS_VIEW_DETAILS	"&Détails"
	IDS_SELECT		"Sélectionner"
	IDS_OPEN		"Ouvrir"

	IDS_CREATEFOLDER_DENIED "Impossible de créer le dossier : permission refusée."
	IDS_CREATEFOLDER_CAPTION "Erreur lors de la création du dossier"
	IDS_DELETEITEM_CAPTION "Confirmez la suppression du fichier"
	IDS_DELETEFOLDER_CAPTION "Confirmez la suppression du dossier"
	IDS_DELETEITEM_TEXT "Êtes-vous sûr de vouloir supprimer « %1 » ?"
	IDS_DELETEMULTIPLE_TEXT "Êtes-vous sûr de vouloir supprimer ces %1 éléments ?"
	IDS_DELETESELECTED_TEXT "Êtes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s) ?"
	IDS_TRASHITEM_TEXT "Êtes-vous sûr de vouloir mettre « %1 » dans la corbeille ?"
	IDS_TRASHFOLDER_TEXT "Êtes-vous sûr de vouloir mettre « %1 » et tout ce qu'il contient dans la corbeille ?"
	IDS_TRASHMULTIPLE_TEXT "Êtes-vous sûr de vouloir mettre ces %1 éléments dans la corbeille ?"
	IDS_CANTTRASH_TEXT "L'élément « %1 » ne peut être mis dans la corbeille. Souhaitez-vous plutôt le supprimer ?"
	IDS_OVERWRITEFILE_TEXT "Ce dossier contient déjà un fichier nommé « %1 ».\n\nVoulez-vous le remplacer ?"
	IDS_OVERWRITEFILE_CAPTION "Confirmez l'écrasement du fichier"
	IDS_OVERWRITEFOLDER_TEXT "Ce dossier contient déjà un dossier nommé « %1 ».\n\n"\
	    "Si des fichiers dans le dossier de destination ont le même nom que ceux dans le dossier\n"\
	    "sélectionné, ils seront écrasés. Voulez-vous quand même déplacer ou copier\n"\
	    "le dossier ?"

        /* message box strings */
       IDS_RESTART_TITLE       "Redémarrer"
       IDS_RESTART_PROMPT      "Voulez-vous simuler le redémarrage de Windows ?"
       IDS_SHUTDOWN_TITLE      "Arrêter"
       IDS_SHUTDOWN_PROMPT     "Voulez-vous clôturer la session Wine ?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Impossible d'afficher la boîte de dialogue « Exécuter » (erreur interne)"
        IDS_RUNDLG_BROWSE_ERROR    "Impossible d'afficher la boîte de dialogue « Parcourir » (erreur interne)"
        IDS_RUNDLG_BROWSE_CAPTION  "Parcourir"
        IDS_RUNDLG_BROWSE_FILTER   "Fichiers exécutables\0*.exe\0Tous les fichiers\0*.*\0\0"

/* shell folder path default values */
 IDS_PROGRAMS                "Menu Démarrer\\Programmes"
 IDS_PERSONAL                "Mes documents"
 IDS_FAVORITES               "Favoris"
 IDS_STARTUP                 "Menu Démarrer\\Programmes\\Démarrage"
 IDS_RECENT                  "Documents récents"
 IDS_SENDTO                  "Envoyer vers"
 IDS_STARTMENU               "Menu Démarrer"
 IDS_MYMUSIC                 "Ma musique"
 IDS_MYVIDEO                 "Mes vidéos"
 IDS_DESKTOPDIRECTORY        "Bureau"
 IDS_NETHOOD                 "Voisinage réseau"
 IDS_TEMPLATES               "Modèles"
 IDS_APPDATA                 "Application Data"
 IDS_PRINTHOOD               "Voisinage d'impression"
 IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
 IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
 IDS_COOKIES                 "Cookies"
 IDS_HISTORY                 "Local Settings\\Historique"
 IDS_PROGRAM_FILES           "Program Files"
 IDS_MYPICTURES              "Mes images"
 IDS_PROGRAM_FILES_COMMON    "Program Files\\Fichiers communs"
 IDS_COMMON_DOCUMENTS        "Documents"
 IDS_ADMINTOOLS              "Menu Démarrer\\Programmes\\Outils d'administration"
 IDS_COMMON_MUSIC            "Documents\\Ma musique"
 IDS_COMMON_PICTURES         "Documents\\Mes images"
 IDS_COMMON_VIDEO            "Documents\\Mes vidéos"
 IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"

 IDS_NEWFOLDER		"Nouveau dossier"

 IDS_CPANEL_TITLE            "Panneau de configuration de Wine"
 IDS_CPANEL_NAME             "Nom"
 IDS_CPANEL_DESCRIPTION      "Description"

 IDS_SHLEXEC_NOASSOC         "Aucun programme Windows n'est configuré pour ouvrir ce type de fichier."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Licence de Wine"
IDS_LICENSE,
"Wine est un logiciel libre ; vous pouvez le redistribuer et/ou \
le modifier suivant les termes de la Licence Générale Publique Limitée GNU \
telle que publiée par la Free Software Foundation ; soit la version 2.1 \
de la Licence, soit (à votre gré) toute version ultérieure.\n\n\
Wine est distribué dans l’espoir qu'il sera utile, mais \
SANS AUCUNE GARANTIE : sans même la garantie implicite de \
COMMERCIALISABILITÉ ou d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez \
la Licence Générale Publique Limitée pour plus de détails.\n\n\
Vous devriez avoir reçu une copie de la Licence Générale Publique Limitée \
GNU avec Wine ; si ce n’est pas le cas, écrivez à la : \
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, \
MA 02110-1301, USA."
}
