/*
 * cryptui dll French resources
 *
 * Copyright 2009 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 "cryptuires.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

IDD_GENERAL DIALOG 0, 0, 255, 236
CAPTION "Général"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  CONTROL "", -1, "Static", WS_BORDER|SS_WHITERECT, 6,10,241,200
  CONTROL "", IDC_CERTIFICATE_ICON,"RichEdit20W",
    ES_READONLY|WS_DISABLED,8,11,26,26
  CONTROL "", IDC_CERTIFICATE_INFO,"RichEdit20W",
    ES_READONLY|WS_DISABLED,34,11,212,26
  CONTROL "", -1, "Static", SS_BLACKFRAME, 16,37,222,1
  CONTROL "", IDC_CERTIFICATE_STATUS,"RichEdit20W",
    ES_READONLY|ES_MULTILINE,8,38,238,78
  CONTROL "", -1, "Static", SS_BLACKFRAME, 16,116,222,1
  CONTROL "", IDC_CERTIFICATE_NAMES,"RichEdit20W",
    ES_READONLY|ES_MULTILINE|WS_DISABLED,8,118,238,90
  PUSHBUTTON "&Installer un certificat...", IDC_ADDTOSTORE,73,216,86,14
  PUSHBUTTON "&Déclaration de l'émetteur", IDC_ISSUERSTATEMENT,161,216,86,14
END

IDD_DETAIL DIALOG 0, 0, 255, 236
CAPTION "Détails"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Afficher :", -1, 6,11,33,14
  COMBOBOX IDC_DETAIL_SELECT, 39,10,100,14,
    CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP
  CONTROL "", IDC_DETAIL_LIST, "SysListView32",
    LVS_REPORT|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    6,28,241,100
  CONTROL "", IDC_DETAIL_VALUE, "RichEdit20W",
    ES_READONLY|ES_MULTILINE|WS_TABSTOP, 6,136,241,70
  PUSHBUTTON "É&diter les propriétés...", IDC_EDITPROPERTIES,83,216,80,14
  PUSHBUTTON "&Copier dans le fichier...", IDC_EXPORT,167,216,80,14
END

IDD_HIERARCHY DIALOG 0, 0, 255, 236
CAPTION "Chemin de certification"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  GROUPBOX "Chemin de &certification", -1,6,10,245,165, BS_GROUPBOX
  CONTROL "",IDC_CERTPATH, "SysTreeView32", TVS_HASLINES|WS_BORDER,
    13,22,231,130
  PUSHBUTTON "&Voir le certificat", IDC_VIEWCERTIFICATE,175,156,70,14
  LTEXT "É&tat du certificat :", IDC_CERTIFICATESTATUS,6,183,70,14
  CONTROL "", IDC_CERTIFICATESTATUSTEXT,"RichEdit20W",
    WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,195,245,36
END

IDD_USERNOTICE DIALOG 0, 0, 255, 256
CAPTION "Avis de non-responsabilité"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  CONTROL "", IDC_USERNOTICE,"RichEdit20W",
    WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,10,241,200
  PUSHBUTTON "Fermer", IDOK,77,216,83,14
  PUSHBUTTON "&Infos complémentaires", IDC_CPS,164,216,83,14
END

IDD_CERT_PROPERTIES_GENERAL DIALOG 0, 0, 255, 236
CAPTION "Général"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Nom convivial :", -1, 6,14,60,14
  EDITTEXT IDC_FRIENDLY_NAME, 60,12,191,14, ES_AUTOHSCROLL|WS_TABSTOP
  LTEXT "&Description :", -1, 6,32,60,14
  EDITTEXT IDC_DESCRIPTION, 60,30,191,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL
  GROUPBOX "Rôles du certificat", -1,6,48,245,165, BS_GROUPBOX
  AUTORADIOBUTTON "Activer &tous les rôles prévus pour ce certificat",
    IDC_ENABLE_ALL_PURPOSES, 12,58,180,14, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "&Désactiver tous les rôles prévus pour ce certificat",
    IDC_DISABLE_ALL_PURPOSES, 12,70,180,14, BS_AUTORADIOBUTTON
  AUTORADIOBUTTON "N'activer &que les rôles suivants pour ce certificat :",
    IDC_ENABLE_SELECTED_PURPOSES, 12,82,180,14, BS_AUTORADIOBUTTON
  CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    24,100,220,90
  PUSHBUTTON "&Ajouter un rôle...", IDC_ADD_PURPOSE,180,194,64,14
END

IDD_ADD_CERT_PURPOSE DIALOG 0,0,200,68
CAPTION "Ajouter un rôle"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Adjoindre l'identifiant d'objet (OIS) au rôle de certificat à ajouter :",
    -1, 6,6,190,28
  EDITTEXT IDC_NEW_PURPOSE, 6,28,190,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL
  PUSHBUTTON "OK", IDOK, 33,48,60,14
  PUSHBUTTON "Annuler", IDCANCEL, 100,48,60,14
END

IDD_SELECT_STORE DIALOG 0,0,200,136
CAPTION "Sélectionner un magasin de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Sélectionnez le magasin de certificats à utiliser :", IDC_STORE_TEXT, 6,6,190,28
  CONTROL "",IDC_STORE_LIST, "SysTreeView32", TVS_HASLINES|WS_BORDER|WS_TABSTOP,
    6,28,188,70
  CHECKBOX "&Montrer les magasins physiques", IDC_SHOW_PHYSICAL_STORES, 6,102,117,14,
    BS_AUTOCHECKBOX|WS_TABSTOP
  PUSHBUTTON "OK", IDOK, 90,118,50,14, BS_DEFPUSHBUTTON
  PUSHBUTTON "Annuler", IDCANCEL, 144,118,50,14
END

IDD_IMPORT_WELCOME DIALOG 0,0,317,143
CAPTION "Assistant d'importation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Bienvenue dans l'assistant d'importation de certificats", IDC_IMPORT_TITLE,
    115,6,195,12
  LTEXT "Cet assistant vous aide à importer des certificats, des listes de révocation de certificats et des listes de certificats de confiance dans un magasin de certificats à partir d'un fichier.",
    -1, 115,22,195,25
  LTEXT "Un certificat peut être utilisé pour vous identifier, ou pour identifier l'ordinateur avec lequel vous communiquez. Il peut également être utilisé à des fins d'authentification ou de signature de messages. Les magasins de certificats sont des collections de certificats, de listes de révocation de certificats et de listes de certificats de confiance.",
    -1, 115,56,195,49
  LTEXT "Pour continuer, cliquez sur Suivant.",
    -1, 115,114,195,8
END

IDD_IMPORT_FILE DIALOG 0,0,317,143
CAPTION "Assistant Importation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Nom du fichier :", -1, 21,1,195,10
  EDITTEXT IDC_IMPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  PUSHBUTTON "Parco&urir...", IDC_IMPORT_BROWSE_FILE, 236,11,60,14
  LTEXT "Remarque : les formats de fichiers suivants peuvent contenir plus d'un certificat, liste de révocation de certificats ou liste de certificats de confiance :",
    -1, 21,26,265,16
  LTEXT "Standard de syntaxe de message cryptographique - Messages PKCS #7 (.p7b)",
    -1, 31,49,265,10
  LTEXT "Échange d'informations personnelles - PKCS #12 (.pfx, .p12)",
    -1, 31,64,265,10
  LTEXT "Magasin de certificats sérialisés Microsoft (.sst)",
    -1, 31,79,265,10
END

IDD_IMPORT_STORE DIALOG 0,0,317,143
CAPTION "Assistant Importation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Wine peut sélectionner automatiquement un magasin de certificats, ou vous pouvez spécifier l'emplacement des certificats.",
    -1, 21,1,212,18
  AUTORADIOBUTTON "Sélectionner &automatiquement un magasin de certificats",
    IDC_IMPORT_AUTO_STORE, 31,18,194,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "Placer tous les certificats dans le &magasin suivant :",
    IDC_IMPORT_SPECIFY_STORE, 31,30,194,12, BS_AUTORADIOBUTTON
  EDITTEXT IDC_IMPORT_STORE, 44,49,185,14, ES_READONLY
  PUSHBUTTON "&Parcourir...", IDC_IMPORT_BROWSE_STORE, 236,49,60,14
END

IDD_IMPORT_FINISH DIALOG 0,0,317,179
CAPTION "Assistant Importation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Clôture de l'assistant d'importation de certificats", IDC_IMPORT_TITLE,
    115,10,195,12
  LTEXT "Vous avez terminé avec succès l'assistant d'importation de certificats.",
    -1, 115,31,195,18
  LTEXT "Vous avez spécifié les paramètres suivants :",
    -1, 115,57,195,12
  CONTROL "", IDC_IMPORT_SETTINGS, "SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    115,67,174,100
END

IDD_CERT_MGR DIALOG 0,0,335,270
CAPTION "Certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Rôle prévu :", -1, 7,9,100,12
  COMBOBOX IDC_MGR_PURPOSE_SELECTION, 83,7,245,14,
    CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP
  CONTROL "", IDC_MGR_STORES, "SysTabControl32",
    WS_CLIPSIBLINGS|WS_TABSTOP, 7,25,321,140
  CONTROL "", IDC_MGR_CERTS, "SysListView32",
    LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, 15,46,305,111
  PUSHBUTTON "&Importer...", IDC_MGR_IMPORT, 7,172,51,14
  PUSHBUTTON "&Exporter...", IDC_MGR_EXPORT, 62,172,51,14, WS_DISABLED
  PUSHBUTTON "&Supprimer", IDC_MGR_REMOVE, 117,172,51,14, WS_DISABLED
  PUSHBUTTON "&Avancé...", IDC_MGR_ADVANCED, 277,172,51,14
  GROUPBOX "Rôles prévus pour le certificat", -1,7,194,321,47, BS_GROUPBOX
  LTEXT "", IDC_MGR_PURPOSES, 13,208,252,30
  PUSHBUTTON "&Détails", IDC_MGR_VIEW, 269,218,51,14, WS_DISABLED
  PUSHBUTTON "&Fermer", IDCANCEL, 277,249,51,14, BS_DEFPUSHBUTTON
END

IDD_CERT_MGR_ADVANCED DIALOG 0,0,248,176
CAPTION "Options avancées"
FONT 8, "MS Shell Dlg"
BEGIN
  GROUPBOX "Rôle du certificat", -1, 7,7,234,141, BS_GROUPBOX
  LTEXT "Sélectionnez un ou plusieurs rôles à afficher quand les options avancées sont sélectionnées.",
    -1, 14,18,220,16
  LTEXT "&Rôles du certificat :", -1, 14,41,90,12, WS_TABSTOP
  CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    14,51,220,90
  PUSHBUTTON "OK", IDOK, 132,155,51,14, BS_DEFPUSHBUTTON
  PUSHBUTTON "Annuler", IDCANCEL, 190,155,51,14
END

IDD_EXPORT_WELCOME DIALOG 0,0,317,143
CAPTION "Assistant d'exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Bienvenue dans l'assistant d'exportation de certificats", IDC_EXPORT_TITLE,
    115,6,195,12
  LTEXT "Cet assistant vous aide à exporter des certificats, des listes de révocation de certificats et des listes de certificats de confiance dans un fichier à partir d'un magasin de certificats.",
    -1, 115,22,195,25
  LTEXT "Un certificat peut être utilisé pour vous identifier, ou pour identifier l'ordinateur avec lequel vous communiquez. Il peut également être utilisé à des fins d'authentification ou de signature de messages. Les magasins de certificats sont des collections de certificats, de listes de révocation de certificats et de listes de certificats de confiance.",
    -1, 115,56,195,49
  LTEXT "Pour continuer, cliquez sur Suivant.",
    -1, 115,114,195,8
END

IDD_EXPORT_PRIVATE_KEY DIALOG 0,0,317,143
CAPTION "Assistant Exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Si vous choisissez d'exporter la clé privée, on vous demandera un mot de passe pour protéger la clé privée dans une page ultérieure.", -1, 21,1,195,25
  LTEXT "Voulez-vous exporter la clé privée ?", -1, 21,27,195,10
  AUTORADIOBUTTON "&Oui, exporter la clé privée",
    IDC_EXPORT_PRIVATE_KEY_YES, 31,36,200,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "&Non, ne pas exporter la clé privée",
    IDC_EXPORT_PRIVATE_KEY_NO, 31,48,200,12, BS_AUTORADIOBUTTON
  LTEXT "", IDC_EXPORT_PRIVATE_KEY_UNAVAILABLE, 21,60,200,24
END

IDD_EXPORT_PASSWORD DIALOG 0,0,317,143
CAPTION "Assistant Exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Mot de passe :", -1, 21,1,195,10
  EDITTEXT IDC_EXPORT_PASSWORD, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  LTEXT "&Confirmez le mot de passe :", -1, 21,35,195,10
  EDITTEXT IDC_EXPORT_PASSWORD_CONFIRM, 21,45,208,14, ES_AUTOHSCROLL|WS_TABSTOP
END

IDD_EXPORT_FORMAT DIALOG 0,0,317,143
CAPTION "Assistant Exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Sélectionnez le format à utiliser :", -1, 21,1,195,10
  AUTORADIOBUTTON "Binaire codé &DER X.509 (*.cer)",
    IDC_EXPORT_FORMAT_DER, 31,18,200,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "Binaire codé Ba&se64 X.509 (.cer) :",
    IDC_EXPORT_FORMAT_BASE64, 31,30,200,12, BS_AUTORADIOBUTTON
  AUTORADIOBUTTON "Standard de syntaxe de message cryptographique - Messages PKCS #7 (.p7b)",
    IDC_EXPORT_FORMAT_CMS, 31,42,200,12, BS_AUTORADIOBUTTON
  CHECKBOX "&Inclure tous les certificats dans le chemin de certification si possible",
    IDC_EXPORT_CMS_INCLUDE_CHAIN, 44,57,230,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  AUTORADIOBUTTON "Échange d'informations &Personnelles - PKCS #12 (.pfx)",
    IDC_EXPORT_FORMAT_PFX, 31,72,200,12, BS_AUTORADIOBUTTON|WS_DISABLED
  CHECKBOX "Inclure &tous les certificats dans le chemin de certification si possible",
    IDC_EXPORT_PFX_INCLUDE_CHAIN, 44,87,230,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  CHECKBOX "&Activer le chiffrement fort",
    IDC_EXPORT_PFX_STRONG_ENCRYPTION, 44,102,200,8,
    BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  CHECKBOX "&Effacer la clé privée si l'export a réussi",
    IDC_EXPORT_PFX_DELETE_PRIVATE_KEY, 44,117,200,8,
    BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
END

IDD_EXPORT_FILE DIALOG 0,0,317,143
CAPTION "Assistant Exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Nom du fichier :", -1, 21,1,195,10
  EDITTEXT IDC_EXPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  PUSHBUTTON "Parco&urir...", IDC_EXPORT_BROWSE_FILE, 236,11,60,14
END

IDD_EXPORT_FINISH DIALOG 0,0,317,179
CAPTION "Assistant Exportation de certificats"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Clôture de l'assistant d'exportation de certificats", IDC_EXPORT_TITLE,
    115,10,195,12
  LTEXT "Vous avez terminé avec succès l'assistant d'exportation de certificats.",
    -1, 115,31,195,18
  LTEXT "Vous avez spécifié les paramètres suivants :",
    -1, 115,57,195,12
  CONTROL "", IDC_EXPORT_SETTINGS, "SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    115,67,174,100
END
