/*
 * Shell32
 * French language support
 *
 * Copyright 1998 Juergen Schmied
 * Copyright 2006-2008 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
 */

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 "C&ouper",		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 "&File"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "E&xit", IDM_CPANEL_EXIT
    END

    POPUP "&View"
    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 "&Help"
    BEGIN
        MENUITEM "&About Control Panel...", 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 "&Créer un 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	"Control Panel"

        /* 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 nouveau dossier : permission refusée."
	IDS_CREATEFOLDER_CAPTION "Erreur lors de la création du nouveau dossier"
	IDS_DELETEITEM_CAPTION "Confirmer la suppression du fichier"
	IDS_DELETEFOLDER_CAPTION "Confirmer 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(les) élément(s) séléectionné(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 pas être mis dans la corbeille. Souhaitez-vous le supprimer à la place ?"
	IDS_OVERWRITEFILE_TEXT "Ce dossier contient déjà un fichier nommé « %1 ».\n\nVoulez-vous le remplacer ?"
	IDS_OVERWRITEFILE_CAPTION "Confirmer 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 remplacé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 fermer 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                  "Recent"
 IDS_SENDTO                  "SendTo"
 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            "Wine Control Panel"
 IDS_CPANEL_NAME             "Name"
 IDS_CPANEL_DESCRIPTION      "Description"
}

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 License, 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."
}

#pragma code_page(default) /* Return to default encoding */
