/*
 * WineFile
 * French Language Support
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 * Copyright 2003 Sylvain Petreolle
 * Copyright 2005-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
 */

#include "resource.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

/* Menu */

IDM_WINEFILE MENU
{
    POPUP "&Fichier"  {
        MENUITEM "&Ouvrir\tEntrée",             ID_ACTIVATE
        MENUITEM "&Déplacer...\tF7",            ID_FILE_MOVE
        MENUITEM "&Copier...\tF8",              ID_FILE_COPY
        MENUITEM "P&resse-papiers...\tF9",      118
        MENUITEM "&Effacer\tSuppr",               ID_FILE_DELETE
        MENUITEM "Re&nommer...",                109
        MENUITEM "&Propriétés...\tAlt+Entrée", ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "Co&mpresser...",              119
        MENUITEM "Décompre&sser...",            120
        MENUITEM SEPARATOR
        MENUITEM "E&xécuter...",                ID_RUN
        MENUITEM "&Imprimer...",                102
        MENUITEM "&Associer...",                103
        MENUITEM SEPARATOR
        MENUITEM "Créer réper&toire...",        111
        MENUITEM "Rec&hercher...",              104
        MENUITEM "Sélectionner &fichiers...",   116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "&Quitter\tAlt+X",             ID_FILE_EXIT
#else
        MENUITEM "&Quitter",                    ID_FILE_EXIT
#endif
    }

    POPUP "&Disque"  {
        MENUITEM "&Copier disque...",           201
        MENUITEM "&Nommer disque...",           202
        MENUITEM SEPARATOR
        MENUITEM "&Formater disque...",         ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "Créer un disque &système...", -1  /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Connecter un lecteur &réseau",ID_CONNECT_NETWORK_DRIVE
        MENUITEM "&Déconnecter un lecteur réseau",ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "&Partager...",                254
        MENUITEM "Cesser de parta&ger",         255
        MENUITEM SEPARATOR
        MENUITEM "Choisir le &lecteur",         251
    }

    POPUP "&Répertoires"  {
        MENUITEM "&Développer un niveau\t+",    301
        MENUITEM "Développer une &branche\t*",  302
        MENUITEM "&Tout développer\tCtrl+*",    303
        MENUITEM "&Réduire une branche\t-",     304
        MENUITEM SEPARATOR
        MENUITEM "&Marquer l'arborescence",     505
    }

    POPUP "&Affichage"  {
        MENUITEM "Ar&bre et répertoire",        413
        MENUITEM "&Arbre seulement",            411
        MENUITEM "&Répertoire seulement",       412
        MENUITEM SEPARATOR
        MENUITEM "&Séparer",                    ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Nom",                        ID_VIEW_NAME
        MENUITEM "Tous &les détails",           ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "&Détails...",                 ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "Trier par n&om",              ID_VIEW_SORT_NAME
        MENUITEM "Trier par &type",             ID_VIEW_SORT_TYPE
        MENUITEM "Trier par ta&ille",           ID_VIEW_SORT_SIZE
        MENUITEM "Trier par dat&e",             ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Trier &par...",               ID_VIEW_FILTER
    }

    POPUP "&Options"  {
        MENUITEM "&Confirmation...",            501
        MENUITEM "&Police...",                  ID_SELECT_FONT
        MENUITEM "Personnaliser la &barre d'outils...", 512
        MENUITEM SEPARATOR
        MENUITEM "Barre d'&outils",             ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "Barre de &lecteur",           ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "Barre d'&état",               ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "P&lein écran\tCtrl+Shift+S",  ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Réduire à l'utilisation",    504
        MENUITEM "&Enregistrer la configuration en quittant",511
    }


    POPUP "&Sécurité"  {
        MENUITEM "&Accès...",                   605
        MENUITEM "&Journalisation...",          606
        MENUITEM "&Propriétaire...",            607
    }

    POPUP "Fe&nêtre"  {
        MENUITEM "Nouvelle &fenêtre",           ID_WINDOW_NEW
        MENUITEM "&En cascade\tCtrl+F5",        ID_WINDOW_CASCADE
        MENUITEM "Mosaïque &horizontale",       ID_WINDOW_TILE_HORZ
        MENUITEM "Mosaïque &verticale\tCtrl+F4",ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Réorganisation aut&omatique", ID_WINDOW_AUTOSORT
#endif
        MENUITEM "Réorganiser les &icônes",     ID_WINDOW_ARRANGE
        MENUITEM "&Actualiser\tF5",             ID_REFRESH
    }

    POPUP "Aid&e"  {
        MENUITEM "&Sommaire de l'aide\tF1",     ID_HELP
        MENUITEM "&Rechercher dans l'aide\tF1", ID_HELP
        MENUITEM "&Utiliser l'aide\tF1",        ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "À &propos de Winefile",    ID_ABOUT
    }
}

IDD_SELECT_DESTINATION DIALOG 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Sélectionner la destination"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Chemin :", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Annuler", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Parcourir...", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG 15, 13, 161, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Par type de fichier"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Nom :",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Type de fichier ",-1,7,23,87,59
    CONTROL         "&Répertoires",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,34,70,10
    CONTROL         "&Programmes",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,45,70,10
    CONTROL         "Docu&ments",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,56,70,10
    CONTROL         "&Autres fichiers",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,67,70,10
    CONTROL         "Montrer les fichiers cachés/&système",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,86,130,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Annuler",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Propriétés de %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Annuler",IDCANCEL,191,25,50,14
    LTEXT           "Nom du &fichier :",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Chemin com&plet :",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Modification :",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Version :",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Cop&yright :",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Taille :",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Attributs",-1,7,79,158,46
    CONTROL         "Lectu&re seule",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "Cac&hé",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archive",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Système",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Compressé",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Informations de version",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Application des réglages des polices"
    IDS_FONT_SEL_ERROR      "Erreur lors de la sélection de la nouvelle police."
}

STRINGTABLE
{
    IDS_WINEFILE            "Winefile"
    IDS_ERROR               "Erreur"
    IDS_ROOT_FS             "root fs"
    IDS_UNIXFS              "unixfs"
    IDS_DESKTOP             "Bureau"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Pas encore implémenté"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Nom"
    IDS_COL_SIZE            "Taille"
    IDS_COL_CDATE           "Dernier changement de statut (ctime)"
    IDS_COL_ADATE           "Dernier accès"
    IDS_COL_MDATE           "Dernière modification"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "Liens"
    IDS_COL_ATTR            "Attributs"
    IDS_COL_SEC             "Sécurité"

    IDS_FREE_SPACE_FMT      "%s sur %s libre"
}
