From 284fb6376b6d529ff6a3d6755747bc1be87ceaca Mon Sep 17 00:00:00 2001 From: Eric LASSAUGE Date: Fri, 1 Jun 2018 18:13:57 +0200 Subject: [PATCH] release_2.891-FR --- AntiVirus.cc | 4 + IniDBBuilderPackage.cc | 6 + LogFile.cc | 5 + Makefile.am | 5 +- PickView.cc | 53 ++++ bootstrap.sh | 4 +- check-nd.bmp | Bin 0 -> 106 bytes choose.cc | 15 + confirm.cc | 24 ++ crypto.cc | 57 +++- cygwin-setup_fr.ico | Bin 0 -> 65847 bytes cygwin-terminal_fr.ico | Bin 0 -> 55052 bytes cygwin_fr.ico | Bin 0 -> 155900 bytes desktop.cc | 20 ++ download.cc | 4 + geturl.cc | 20 ++ ini.cc | 24 ++ install.cc | 104 +++++++ localdir.cc | 4 + main.cc | 34 +++ mount.cc | 6 + msg.cc | 4 + net.cc | 4 + nio-ie5.cc | 8 + package_message.h | 5 + package_meta.cc | 39 +++ package_source.cc | 11 +- postinstall.cc | 4 + prereq.cc | 15 + propsheet.cc | 5 + res.rc | 620 ++++++++++++++++++++++++++++++++++++++++- resource.h | 4 + root.cc | 22 ++ sec-pubkey.h | 14 + site.cc | 11 + source.cc | 5 + splash.cc | 15 + threebar.cc | 11 + 38 files changed, 1165 insertions(+), 21 deletions(-) create mode 100644 check-nd.bmp create mode 100644 cygwin-setup_fr.ico create mode 100644 cygwin-terminal_fr.ico create mode 100644 cygwin_fr.ico create mode 100644 sec-pubkey.h diff --git a/AntiVirus.cc b/AntiVirus.cc index 876eb02..46bcc74 100644 --- a/AntiVirus.cc +++ b/AntiVirus.cc @@ -31,7 +31,11 @@ /* XXX: Split this into observer and model classes */ /* Default is to leave well enough alone */ +#ifdef LANG_FR +static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", "Inhibe les anti-virus buggés à l'exécution."); +#else static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", "Disable known or suspected buggy anti virus software packages during execution."); +#endif static bool KnownAVIsPresent = false; static bool AVRunning = true; diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc index d560cb7..01f95e7 100644 --- a/IniDBBuilderPackage.cc +++ b/IniDBBuilderPackage.cc @@ -55,9 +55,15 @@ IniDBBuilderPackage::buildVersion (const std::string& aVersion) { char old_vers[256]; snprintf (old_vers, sizeof old_vers, +#ifdef LANG_FR + "Ce fichier ini correspond à une version plus récente de setup-FR-%s.exe. " + "Si vous avez des problèmes lors de l'installation, téléchargez " + "la dernière version depuis http://lassauge.free.fr/cygwin/setup-FR-%s.exe", +#else "The current ini file is from a newer version of setup-%s.exe. " "If you have any trouble installing, please download a fresh " "version from http://www.cygwin.com/setup-%s.exe", +#endif is_64bit ? "x86_64" : "x86", is_64bit ? "x86_64" : "x86"); _feedback.warning(old_vers); diff --git a/LogFile.cc b/LogFile.cc index 6590023..469b65b 100644 --- a/LogFile.cc +++ b/LogFile.cc @@ -33,8 +33,13 @@ #include "String++.h" #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption VerboseOutput (false, 'v', "verbose", + "Affichages verbeux"); +#else static BoolOption VerboseOutput (false, 'v', "verbose", "Verbose output"); +#endif using namespace std; diff --git a/Makefile.am b/Makefile.am index 0c27529..828d7a3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -128,6 +128,7 @@ inilint_SOURCES = \ crypto.cc \ crypto.h \ cyg-pubkey.h \ + sec-pubkey.h \ desktop.cc \ desktop.h \ dialog.cc \ @@ -262,7 +263,7 @@ inilint_SOURCES = \ csu_util/version_compare.cc \ csu_util/version_compare.h -GITVER := $(shell cd $(srcdir) && git describe --match release_\* --abbrev=6 --dirty || "N/A") +GITVER := $(shell cd $(srcdir) && git describe --match release_\* --abbrev=6 --dirty || echo "N/A") VER := $(subst release_,,$(GITVER)) ARCH := @ARCH@ @@ -277,7 +278,7 @@ setup_version.c : Makefile res.o: @SETUP@.exe.manifest .rc.o: - $(AM_V_GEN)$(WINDRES) --include-dir $(srcdir) -o $@ $< + $(AM_V_GEN)$(WINDRES) -DLANG_FR --include-dir $(srcdir) -o $@ $< setup-src: @ver=setup-$(VER);\ diff --git a/PickView.cc b/PickView.cc index c583eea..dae6143 100644 --- a/PickView.cc +++ b/PickView.cc @@ -30,6 +30,30 @@ using namespace std; +#ifdef LANG_FR +static PickView::Header pkg_headers[] = { + {"Actuel", 0, 0, true}, + {"Nouveau", 0, 0, true}, + {"Bin?", 0, 0, false}, + {"Src?", 0, 0, false}, + {"Catégories", 0, 0, true}, + {"Taille", 0, 0, true}, + {"Paquet", 0, 0, true}, + {0, 0, 0, false} +}; + +static PickView::Header cat_headers[] = { + {"Catégorie", 0, 0, true}, + {"Actuel", 0, 0, true}, + {"Nouveau", 0, 0, true}, + {"Bin?", 0, 0, false}, + {"Src?", 0, 0, false}, + {"Taille", 0, 0, true}, + {"Paquet", 0, 0, true}, + {0, 0, 0, false} +}; + +#else static PickView::Header pkg_headers[] = { {"Current", 0, 0, true}, {"New", 0, 0, true}, @@ -51,6 +75,7 @@ static PickView::Header cat_headers[] = { {"Package", 0, 0, true}, {0, 0, 0, false} }; +#endif ATOM PickView::WindowClassAtom = 0; @@ -229,6 +254,20 @@ PickView::mode_caption (views mode) { switch (mode) { +#ifdef LANG_FR + case views::PackageFull: + return "Tout"; + case views::PackagePending: + return "En attente"; + case views::PackageKeeps: + return "À jour"; + case views::PackageSkips: + return "Non installé"; + case views::PackageUserPicked: + return "Choisi"; + case views::Category: + return "Catégorie"; +#else case views::PackageFull: return "Full"; case views::PackagePending: @@ -241,6 +280,7 @@ PickView::mode_caption (views mode) return "Picked"; case views::Category: return "Category"; +#endif default: return ""; } @@ -477,8 +517,13 @@ PickView::init_headers (HDC dc) } // ensure that the new_col is wide enough for all the labels +#ifdef LANG_FR + const char *captions[] = { "Désinstalle", "Passe", "Réinstalle", "Récupère", + "Source", "Garde", NULL }; +#else const char *captions[] = { "Uninstall", "Skip", "Reinstall", "Retrieve", "Source", "Keep", NULL }; +#endif for (int i = 0; captions[i]; i++) note_width (headers, dc, captions[i], HMARGIN + SPIN_WIDTH, new_col); @@ -882,9 +927,17 @@ PickView::paint (HWND hwnd) if (contents.itemcount () == 0) { +#ifdef LANG_FR + static const char *msg = "Rien à Installer/Mettre à jour"; +#else static const char *msg = "Nothing to Install/Update"; +#endif if (source == IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + msg = "Rien à télécharger"; +#else msg = "Nothing to Download"; +#endif TextOut (hdc, x + HMARGIN, y, msg, strlen (msg)); } diff --git a/bootstrap.sh b/bootstrap.sh index 1d388da..c796bf5 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -62,7 +62,7 @@ else exit 1 fi -echo "running configure" -$srcdir/configure -C --build=$build --host=$host "$@" +echo "configure to be run in the build dir" +#$srcdir/configure -C --build=$build --host=$host "$@" exit $? diff --git a/check-nd.bmp b/check-nd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a5d3aa668b55cd0c06ab54e92875135d066f5484 GIT binary patch literal 106 zcmZ?r&0>H6J0PV2#N1HK$iN7e&;gQ1_#hZ8044ta|IhIM0RzK#D9(0ZV906!;sX#Y O&A`C$7sv)-kU9YVDitpP literal 0 HcmV?d00001 diff --git a/choose.cc b/choose.cc index 5a4d3ad..39ca625 100644 --- a/choose.cc +++ b/choose.cc @@ -59,10 +59,17 @@ #include "Exception.h" #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "Mettre à jour les paquets installés"); +static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "Supprimer les paquets orphelins"); +static BoolOption ForceCurrentOption (false, 'f', "force-current", "Choisir la version courante pour tous les paquets"); +static BoolOption PruneInstallOption (false, 'Y', "prune-install", "Vider l'installation pour n'avoir que les paquets demandés"); +#else static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "Also upgrade installed packages"); static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "Remove orphaned packages"); static BoolOption ForceCurrentOption (false, 'f', "force-current", "Select the current version for all packages"); static BoolOption PruneInstallOption (false, 'Y', "prune-install", "Prune the installation to only the requested packages"); +#endif using namespace std; @@ -266,9 +273,17 @@ ChooserPage::OnInit () } if (source == IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + setPrompt("Sélectionnez les paquets à télécharger "); +#else setPrompt("Select packages to download "); +#endif else +#ifdef LANG_FR + setPrompt("Sélectionnez les paquets à installer "); +#else setPrompt("Select packages to install "); +#endif createListview (); diff --git a/confirm.cc b/confirm.cc index eb6bd99..52dcc87 100644 --- a/confirm.cc +++ b/confirm.cc @@ -69,12 +69,20 @@ ConfirmPage::OnActivate() packageversion pv = i->version; packagemeta *pkg = db.findBinary (PackageSpecification (pv.Name ())); +#ifdef LANG_FR + s += "Désinstalle "; +#else s += "Uninstall "; +#endif s += i->version.Name(); s += " "; s += i->version.Canonical_version(); if (pkg && pkg->desired) +#ifdef LANG_FR + s += " (ajouté automatiquement)"; +#else s += " (automatically added)"; +#endif s += "\r\n"; } } @@ -90,23 +98,39 @@ ConfirmPage::OnActivate() if (i->type == SolverTransaction::transInstall) { if (source != IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + s += "Installe "; +#else s += "Install "; +#endif else +#ifdef LANG_FR + s += "Télécharge "; +#else s += "Download "; +#endif s += i->version.Name(); s += " "; s += i->version.Canonical_version(); if (i->version.Type() == package_source) s += " (source)"; else if (pkg && !pkg->desired) +#ifdef LANG_FR + s += " (ajouté automatiquement)"; +#else s += " (automatically added)"; +#endif s += "\r\n"; } } // be explicit about doing nothing if (s.empty()) +#ifdef LANG_FR + s += "Pas de changement"; +#else s += "No changes"; +#endif SetDlgItemText (GetHWND (), IDC_CONFIRM_EDIT, s.c_str ()); diff --git a/crypto.cc b/crypto.cc index 5a10e16..1b78447 100644 --- a/crypto.cc +++ b/crypto.cc @@ -31,6 +31,7 @@ #include "geturl.h" #define CRYPTODEBUGGING (0) +#define SECONDKEY (1) #if CRYPTODEBUGGING #define ERRKIND __asm__ __volatile__ (".byte 0xcc"); note @@ -41,6 +42,18 @@ #endif /* CRYPTODEBUGGING */ /* Command-line options for specifying and controlling extra keys. */ +#ifdef LANG_FR +static StringArrayOption ExtraKeyOption ('K', "pubkey", + "URL d'une clé publique supplémentaire (format gpg)"); + +static StringArrayOption SexprExtraKeyOption ('S', "sexpr-pubkey", + "Clé publique supplémentaire au format s-expr"); + +static BoolOption UntrustedKeysOption (false, 'u', "untrusted-keys", + "Utiliser les clés non-fiables enregistrées"); +static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", + "Utiliser les clés non-fiables et les garder"); +#else static StringArrayOption ExtraKeyOption ('K', "pubkey", "URL of extra public key file (gpg format)"); @@ -51,12 +64,20 @@ static BoolOption UntrustedKeysOption (false, 'u', "untrusted-keys", "Use untrusted saved extra keys"); static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", "Use untrusted keys and retain all"); +#endif /* Embedded public half of Cygwin DSA signing key. */ static const char *cygwin_pubkey_sexpr = #include "cyg-pubkey.h" ; +#if SECONDKEY +/* Embedded public half of second DSA signing key. */ +static const char *second_pubkey_sexpr = +#include "sec-pubkey.h" +; +#endif + /* S-expr template for DSA pubkey. */ static const char *dsa_pubkey_templ = "(public-key (dsa (p %m) (q %m) (g %m) (y %m)))"; @@ -433,6 +454,9 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) { /* DSA public key in s-expr format. */ gcry_sexp_t dsa_key; +#if SECONDKEY + gcry_sexp_t dsa_key_second; +#endif /* Data returned from packet walker. */ struct sig_data sigdat; @@ -463,12 +487,26 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) #if CRYPTODEBUGGING char sexprbuf[GPG_KEY_SEXPR_BUF_SIZE]; n = gcry_sexp_sprint (dsa_key, GCRYSEXP_FMT_ADVANCED, sexprbuf, GPG_KEY_SEXPR_BUF_SIZE); - msg ("key:%d\n'%s'", n, sexprbuf); + msg ("key0:%d\n'%s'", n, sexprbuf); #endif /* CRYPTODEBUGGING */ - /* Next we should extract the keys from the extrakeys user - setting, and flush it; we'll only return them to it if they - get used. OTOH, should we do this at all? The user settings +#if SECONDKEY + /* Next build the second built-in key. */ + rv = gcry_sexp_new (&dsa_key_second, second_pubkey_sexpr, strlen (second_pubkey_sexpr), 1); + if (rv != GPG_ERR_NO_ERROR) + { + ERRKIND (owner, IDS_CRYPTO_ERROR, rv, "while creating second pubkey s-expr."); + } + + #if CRYPTODEBUGGING + n = gcry_sexp_sprint (dsa_key_second, GCRYSEXP_FMT_ADVANCED, sexprbuf, GPG_KEY_SEXPR_BUF_SIZE); + msg ("key1:%d\n'%s'", n, sexprbuf); + #endif /* CRYPTODEBUGGING */ +#endif + + /* Next we should extract the keys from the last-extrakeys + file, and flush it; we'll only return them to it if they + get used. OTOH, should we do this at all? The extrakeys file isn't heavily protected. So we only trust the extra keys if we're told to by the user. We still read them in and write them back out, which canonicalises and eliminates @@ -628,6 +666,14 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) // Well, we're actually there! Try it against the main key. rv = gcry_pk_verify (dsa_sig, dsa_hash, dsa_key); +#if SECONDKEY + // And now try it against the second key. + if (rv != GPG_ERR_NO_ERROR) + { + MESSAGE ("Testing second pubkey\n"); + rv = gcry_pk_verify (dsa_sig, dsa_hash, dsa_key_second); + } +#endif // If not that, try any supplied on the commandline. if (rv != GPG_ERR_NO_ERROR) { @@ -676,6 +722,9 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) } // Discard the temp data then. +#if SECONDKEY + gcry_sexp_release (dsa_key_second); +#endif gcry_sexp_release (dsa_key); if (sigdat.dsa_mpi_r) gcry_mpi_release (sigdat.dsa_mpi_r); diff --git a/cygwin-setup_fr.ico b/cygwin-setup_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..a5a7e8236cf3933d4d6c8de0357951193332cb73 GIT binary patch literal 65847 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 bKczUF^h%7*weSNL>=4+E+Xhv7_A&nhqG)7o literal 0 HcmV?d00001 diff --git a/cygwin-terminal_fr.ico b/cygwin-terminal_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..17cd76a89ab037ba7ddbb1efdb6d1985f1259c8e GIT binary patch literal 55052 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


$#(;(9qC{Le_E+Oaq%s(t(StP5TUP9(h>uwW$U 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�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 BG(i9W literal 0 HcmV?d00001 diff --git a/cygwin_fr.ico b/cygwin_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..b1e4f28455e9c930c4dd35369801d56697c4dfa0 GIT binary patch literal 155900 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 z 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 LEnOvL67>H762mh^ literal 0 HcmV?d00001 diff --git a/desktop.cc b/desktop.cc index 927c02f..aad3da6 100644 --- a/desktop.cc +++ b/desktop.cc @@ -40,9 +40,15 @@ #include "getopt++/BoolOption.h" #include "LogFile.h" +#ifdef LANG_FR +static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", "Pas de création de raccourcis de bureau et de menu"); +static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", "Pas de création de raccourci de menu"); +static BoolOption NoDesktopOption (false, 'd', "no-desktop", "Pas de création de raccourci de bureau"); +#else static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", "Disable creation of desktop and start menu shortcuts"); static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", "Disable creation of start menu shortcut"); static BoolOption NoDesktopOption (false, 'd', "no-desktop", "Disable creation of desktop shortcut"); +#endif /* Lines starting with '@' are conditionals - include 'N' for NT, '5' for Win95, '8' for Win98, '*' for all, like this: @@ -164,7 +170,11 @@ save_icon (std::string &iconpath, const char *resource_name) HRSRC rsrc = FindResource (NULL, resource_name, "FILE"); if (rsrc == NULL) { +#ifndef LANG_FR fatal ("FindResource failed"); +#else + fatal ("Echec de FindResource"); +#endif } HGLOBAL res = LoadResource (NULL, rsrc); char *data = (char *) LockResource (res); @@ -192,8 +202,13 @@ save_icon (std::string &iconpath, const char *resource_name) #define TARGET "/bin/mintty" #define DEFAULTICON "/Cygwin.ico" #define TERMINALICON "/Cygwin-Terminal.ico" +#ifdef LANG_FR +#define TERMINALTITLE (is_64bit ? "Terminal Cygwin64" \ + : "Terminal Cygwin") +#else #define TERMINALTITLE (is_64bit ? "Cygwin64 Terminal" \ : "Cygwin Terminal") +#endif #define STARTMENUDIR "/Cygwin" static void @@ -250,8 +265,13 @@ load_dialog (HWND h) header_string = eget (h, IDC_STATIC_HEADER_TITLE, header_string); if (message_string == NULL) message_string = eget (h, IDC_STATIC_HEADER, message_string); +#ifdef LANG_FR + eset (h, IDC_STATIC_HEADER_TITLE, "Installation terminée"); + eset (h, IDC_STATIC_HEADER, "Montre l'état de l'installation en mode téléchargement seulement."); +#else eset (h, IDC_STATIC_HEADER_TITLE, "Installation complete"); eset (h, IDC_STATIC_HEADER, "Shows installation status in download-only mode."); +#endif } else { diff --git a/download.cc b/download.cc index 0cb3352..f4b9617 100644 --- a/download.cc +++ b/download.cc @@ -273,7 +273,11 @@ do_download_thread (HINSTANCE h, HWND owner) total_download_bytes_sofar = 0; download_failures.clear (); +#ifdef LANG_FR + Progress.SetText1 ("Recherche de paquets à télécharger..."); +#else Progress.SetText1 ("Checking for packages to download..."); +#endif Progress.SetText2 (""); Progress.SetText3 (""); diff --git a/geturl.cc b/geturl.cc index 1c1d1c6..e41afea 100644 --- a/geturl.cc +++ b/geturl.cc @@ -64,10 +64,17 @@ init_dialog (const string &url, int length) string::size_type divide = url.find_last_of('/'); max_bytes = length; +#ifdef LANG_FR + Progress.SetText1("Télécharge..."); + Progress.SetText2((url.substr(divide + 1) + " depuis " + + url.substr(0, divide)).c_str()); + Progress.SetText3("Connexion..."); +#else Progress.SetText1("Downloading..."); Progress.SetText2((url.substr(divide + 1) + " from " + url.substr(0, divide)).c_str()); Progress.SetText3("Connecting..."); +#endif Progress.SetBar1(0); start_tics = GetTickCount (); } @@ -93,14 +100,23 @@ progress (int bytes) { int perc = (int)(100.0 * ((double)bytes) / (double)max_bytes); Progress.SetBar1(bytes, max_bytes); +#ifdef LANG_FR + sprintf (buf, "%d %% (%dk/%dk) %03.1f ko/s", + perc, bytes / 1000, max_bytes / 1000, kbps); +#else sprintf (buf, "%d %% (%dk/%dk) %03.1f kB/s", perc, bytes / 1000, max_bytes / 1000, kbps); +#endif if (total_download_bytes > 0) Progress.SetBar2(total_download_bytes_sofar + bytes, total_download_bytes); } else +#ifdef LANG_FR + sprintf (buf, "%d %2.1f ko/s", bytes, kbps); +#else sprintf (buf, "%d %2.1f kB/s", bytes, kbps); +#endif Progress.SetText3(buf); } @@ -223,7 +239,11 @@ get_url_to_file (const string &_url, { const char *err = strerror (errno); if (!err) +#ifdef LANG_FR + err = "(erreur inconnue)"; +#else err = "(unknown error)"; +#endif fatal (owner, IDS_ERR_OPEN_WRITE, _filename.c_str(), err); } diff --git a/ini.cc b/ini.cc index d807ed6..37aee47 100644 --- a/ini.cc +++ b/ini.cc @@ -61,7 +61,11 @@ std::string ini_setup_version; IniList setup_ext_list (setup_exts, setup_exts + (sizeof(setup_exts) / sizeof(*setup_exts))); +#ifdef LANG_FR +static BoolOption NoVerifyOption (false, 'X', "no-verify", "Ne pas vérifier les signatures de setup.ini"); +#else static BoolOption NoVerifyOption (false, 'X', "no-verify", "Don't verify setup.ini signatures"); +#endif extern int yyparse (); @@ -74,7 +78,11 @@ public: { Progress.SetText2 (""); Progress.SetText3 (""); +#ifndef LANG_FR Progress.SetText4 ("Progress:"); +#else + Progress.SetText4 ("Avancement :"); +#endif } virtual void progress (unsigned long const pos, unsigned long const max) { @@ -98,7 +106,11 @@ public: } virtual void iniName (const std::string& name) { +#ifdef LANG_FR + Progress.SetText1 ("Analyse..."); +#else Progress.SetText1 ("Parsing..."); +#endif Progress.SetText2 (name.c_str ()); Progress.SetText3 (""); } @@ -108,15 +120,27 @@ public: } virtual void warning (const std::string& message)const { +#ifdef LANG_FR + mbox (Progress.GetHWND(), message.c_str (), "Attention", 0); +#else mbox (Progress.GetHWND(), message.c_str (), "Warning", 0); +#endif } virtual void error (const std::string& message)const { +#ifdef LANG_FR + mbox (Progress.GetHWND(), message.c_str (), "Erreurs d'analyse", 0); +#else mbox (Progress.GetHWND(), message.c_str (), "Parse Errors", 0); +#endif } virtual ~ GuiParseFeedback () { +#ifdef LANG_FR + Progress.SetText4 ("Paquet :"); +#else Progress.SetText4 ("Package:"); +#endif } private: unsigned int lastpct; diff --git a/install.cc b/install.cc index b5adcc6..c8d79e8 100644 --- a/install.cc +++ b/install.cc @@ -68,9 +68,16 @@ static long long int total_bytes = 0; static long long int total_bytes_sofar = 0; static int package_bytes = 0; +#ifdef LANG_FR +static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", + "Inhibe le remplacement des fichiers " + "au prochain redémarrage."); + +#else static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", "Disable replacing in-use files on next " "reboot."); +#endif struct std_dirs_t { const char *name; @@ -150,7 +157,11 @@ static int num_installs, num_uninstalls; void Installer::preremoveOne (packagemeta & pkg) { +#ifdef LANG_FR + Progress.SetText1 ("Lancement du script de pré-désinstallation..."); +#else Progress.SetText1 ("Running preremove script..."); +#endif Progress.SetText2 (pkg.name.c_str()); Log (LOG_BABBLE) << "Running preremove script for " << pkg.name << endLog; const unsigned numexts = 4; @@ -165,7 +176,11 @@ Installer::uninstallOne (packagemeta & pkg) if (!pkg.installed) return; +#ifdef LANG_FR + Progress.SetText1 ("Désinstalle..."); +#else Progress.SetText1 ("Uninstalling..."); +#endif Progress.SetText2 (pkg.name.c_str()); Log (LOG_PLAIN) << "Uninstalling " << pkg.name << endLog; @@ -273,7 +288,11 @@ LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) { case HCBT_ACTIVATE: hWnd = (HWND)wParam; if (GetDlgItem(hWnd, IDCANCEL) != NULL) +#ifdef LANG_FR + SetDlgItemText(hWnd, IDCANCEL, "Continuer"); +#else SetDlgItemText(hWnd, IDCANCEL, "Continue"); +#endif UnhookWindowsHookEx(hMsgBoxHook); } return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam); @@ -324,20 +343,36 @@ FileInuseDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) break; // show the dialog the way it is in the resource case 1: +#ifdef LANG_FR + SetDlgItemText (hwndDlg, IDRETRY, "&Tuer les processus"); + SetDlgItemText (hwndDlg, IDC_FILE_INUSE_HELP, + "Choisir «Recommencer» pour ré-essayer, " + "choisir «Tuer» pour tuer les processus et ré-essayer, ou " + "choisir «Continuer» pour poursuivre (le fichier sera mis à jour après un redémarrage)."); +#else SetDlgItemText (hwndDlg, IDRETRY, "&Kill Processes"); SetDlgItemText (hwndDlg, IDC_FILE_INUSE_HELP, "Select 'Retry' to retry, " "Select 'Kill' to kill processes and retry, or " "select 'Continue' to go on anyway (the file will be updated after a reboot)."); +#endif break; default: case 2: +#ifdef LANG_FR + SetDlgItemText (hwndDlg, IDRETRY, "&Tuer les processus"); + SetDlgItemText (hwndDlg, IDC_FILE_INUSE_HELP, + "Choisir «Recommencer» pour ré-essayer, " + "choisir «Tuer» pour forcer la fin des processus et ré-essayer, ou " + "choisir «Continuer» pour poursuivre (le fichier sera mis à jour après un redémarrage)."); +#else SetDlgItemText (hwndDlg, IDRETRY, "&Kill Processes"); SetDlgItemText (hwndDlg, IDC_FILE_INUSE_HELP, "Select 'Retry' to retry, " "select 'Kill' to forcibly kill all processes and retry, or " "select 'Continue' to go on anyway (the file will be updated after a reboot)."); +#endif } } return TRUE; // automatically set focus, please @@ -429,14 +464,22 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, { if (!source.Canonical()) return; +#ifdef LANG_FR + Progress.SetText1 ("Installation"); +#else Progress.SetText1 ("Installing"); +#endif Progress.SetText2 ((pkgm.name + "-" + ver.Canonical_version()).c_str()); io_stream *pkgfile = NULL; if (!source.Cached()) { +#ifdef LANG_FR + note (NULL, IDS_ERR_OPEN_READ, source.Canonical (), "Fichier inconnu"); +#else note (NULL, IDS_ERR_OPEN_READ, source.Canonical (), "Unknown filename"); +#endif ++errors; return; } @@ -444,7 +487,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, if (!io_stream::exists (source.Cached ()) || !(pkgfile = io_stream::open (source.Cached (), "rb", 0))) { +#ifdef LANG_FR + note (NULL, IDS_ERR_OPEN_READ, source.Cached (), "Fichier inexistant"); +#else note (NULL, IDS_ERR_OPEN_READ, source.Cached (), "No such file"); +#endif ++errors; return; } @@ -488,7 +535,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, else { note (NULL, IDS_ERR_OPEN_READ, source.Cached (), +#ifdef LANG_FR + "Format tar invalide on non supporté"); +#else "Invalid or unsupported tar format"); +#endif ++errors; } delete try_decompress; @@ -500,7 +551,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, /* Not a compressed tarball, not a plain tarball, give up. */ delete pkgfile; note (NULL, IDS_ERR_OPEN_READ, source.Cached (), +#ifdef LANG_FR + "Format de fichier non reconnu"); +#else "Unrecognisable file format"); +#endif ++errors; return; } @@ -603,7 +658,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // listed processes, or just ignore the problem and schedule the file to be // replaced after a reboot FileInuseDlgData dlg_data; +#ifdef LANG_FR + std::string msg = "Incapable d'extraire /" + fn; +#else std::string msg = "Unable to extract /" + fn; +#endif dlg_data.msg = msg.c_str (); dlg_data.processlist = plm.c_str (); dlg_data.iteration = iteration; @@ -618,6 +677,15 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // All we can offer the user is a generic "retry or ignore" choice and a chance // to fix the problem themselves char msg[fn.size() + 300]; +#ifdef LANG_FR + sprintf (msg, + "Incapable d'extraire /%s\r\n" + "Le fichier est utilisé ou une autre erreur est survenue.\r\n" + "Arrêtez tous les processus Cygwin et sélectionnez «Recommencer», ou\r\n" + "«Continuer» pour poursuivre (il faudra redémarrer).\r\n", + fn.c_str()); + rc = MessageBox (owner, msg, "Erreur à l'écriture du fichier", +#else sprintf (msg, "Unable to extract /%s\r\n\r\n" "The file is in use or some other error occurred.\r\n\r\n" @@ -626,6 +694,7 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, fn.c_str()); rc = MessageBox (owner, msg, "Error writing file", +#endif MB_RETRYCONTINUE | MB_ICONWARNING | MB_TASKMODAL); } } @@ -688,7 +757,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, { char msg[fn.size() + 300]; sprintf (msg, +#ifdef LANG_FR + "Impossible d'extraire /%s -- paquet corrompu ?\r\n", +#else "Unable to extract /%s -- corrupt package?\r\n", +#endif fn.c_str()); // XXX: We should offer the option to retry, @@ -699,7 +772,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // and ignore all errors is mis-implemented at present // to only apply to errors arising from a single archive, // so we degenerate to the continue option. +#ifdef LANG_FR + mbox (owner, msg, "Erreur extraction fichier", +#else mbox (owner, msg, "File extraction error", +#endif MB_OK | MB_ICONWARNING | MB_TASKMODAL); } @@ -754,21 +831,38 @@ check_for_old_cygwin (HWND owner) char msg[sizeof (buf) + 132]; sprintf (msg, +#ifdef LANG_FR + "Une ancienne version de cygwin1.dll a été trouvée ici :\r\n%s\r\nEffacer ?", +#else "An old version of cygwin1.dll was found here:\r\n%s\r\nDelete?", +#endif buf); switch (MessageBox +#ifdef LANG_FR + (owner, msg, "Qu'est-ce que ça fait là ?", +#else (owner, msg, "What's that doing there?", +#endif MB_YESNO | MB_ICONQUESTION | MB_TASKMODAL)) { case IDYES: if (!DeleteFile (buf)) { +#ifdef LANG_FR + sprintf (msg, "Impossible de supprimer le fichier %s.\r\n" + "La DLL est peut être utilisée par une autre application ?\r\n" + "Vous devriez effacer la vieille version de cygwin1.dll\r\n" + "dès que possible.", buf); + mbox (owner, buf, "Impossible d'effacer le fichier", + MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); +#else sprintf (msg, "Couldn't delete file %s.\r\n" "Is the DLL in use by another application?\r\n" "You should delete the old version of cygwin1.dll\r\n" "at your earliest convenience.", buf); mbox (owner, buf, "Couldn't delete file", MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); +#endif } break; default: @@ -820,7 +914,12 @@ do_install_thread (HINSTANCE h, HWND owner) const SolverTransactionList &t = db.solution.transactions(); /* Calculate the amount of data to md5sum */ +#ifdef LANG_FR + Progress.SetText1("Calcul..."); +#else Progress.SetText1("Calculating..."); +#endif + long long int md5sum_total_bytes = 0; for (SolverTransactionList::const_iterator i = t.begin (); i != t.end (); ++i) { @@ -943,8 +1042,13 @@ do_install_thread (HINSTANCE h, HWND owner) { const char *err = strerror (temperr); if (!err) +#ifdef LANG_FR + err = "(erreur inconnue)"; + fatal (owner, IDS_ERR_OPEN_WRITE, "Base de données des paquets", +#else err = "(unknown error)"; fatal (owner, IDS_ERR_OPEN_WRITE, "Package Database", +#endif err); } diff --git a/localdir.cc b/localdir.cc index 0561a30..5d207e0 100644 --- a/localdir.cc +++ b/localdir.cc @@ -46,7 +46,11 @@ #include "threebar.h" extern ThreeBarProgressPage Progress; +#ifdef LANG_FR +static StringOption LocalDirOption ("", 'l', "local-package-dir", "Dossier local pour les paquets", false); +#else static StringOption LocalDirOption ("", 'l', "local-package-dir", "Local package directory", false); +#endif static ControlAdjuster::ControlInfo LocaldirControlsInfo[] = { { IDC_LOCALDIR_GRP, CP_STRETCH, CP_TOP }, diff --git a/main.cc b/main.cc index 9ca3f25..6a126cd 100644 --- a/main.cc +++ b/main.cc @@ -88,6 +88,16 @@ using namespace std; HINSTANCE hinstance; +#ifdef LANG_FR +static StringOption Arch ("", 'a', "arch", "Architecture à installer (x86_64 ou x86)", false); +static BoolOption UnattendedOption (false, 'q', "quiet-mode", "Assistant sans messages"); +static BoolOption PackageManagerOption (false, 'M', "package-manager", "Mode assistant sélection seulement"); +static BoolOption NoAdminOption (false, 'B', "no-admin", "Ne pas vérifier et forcer à installer en tant qu'administrateur"); +static BoolOption WaitOption (false, 'W', "wait", "Attendre le process fils en mode élévation"); +static BoolOption HelpOption (false, 'h', "help", "Affiche l'aide"); +static StringOption SetupBaseNameOpt ("setup", 'i', "ini-basename", "Utiliser un nom de base différent, p.ex. «toto», au lieu de «setup»", false); +BoolOption UnsupportedOption (false, '\0', "allow-unsupported-windows", "Autoriser les vieilles versions de Windows"); +#else static StringOption Arch ("", 'a', "arch", "Architecture to install (x86_64 or x86)", false); static BoolOption UnattendedOption (false, 'q', "quiet-mode", "Unattended setup mode"); static BoolOption PackageManagerOption (false, 'M', "package-manager", "Semi-attended chooser-only mode"); @@ -97,6 +107,7 @@ static BoolOption HelpOption (false, 'h', "help", "Print help"); static BoolOption VersionOption (false, 'V', "version", "Show version"); static StringOption SetupBaseNameOpt ("setup", 'i', "ini-basename", "Use a different basename, e.g. \"foo\", instead of \"setup\"", false); BoolOption UnsupportedOption (false, '\0', "allow-unsupported-windows", "Allow old, unsupported Windows versions"); +#endif std::string SetupBaseName; static void inline @@ -159,10 +170,17 @@ main_display () if (res) { char buf[256]; +#ifdef LANG_FR + sprintf (buf, "CoCreateInstance : échec avec erreur 0x%x.\n" + "L'assistant ne sera pas capable de créer les icônes\n" + "Cygwin dans le menu Démarrer ou sur le bureau.", (int) res); + mbox (NULL, buf, "Assistant Cygwin", MB_OK); +#else sprintf (buf, "CoCreateInstance failed with error 0x%x.\n" "Setup will not be able to create Cygwin Icons\n" "in the Start Menu or on the Desktop.", (int) res); mbox (NULL, buf, "Cygwin Setup", MB_OK); +#endif } // Init window class lib @@ -219,6 +237,10 @@ WinMain (HINSTANCE h, snprintf(locale, sizeof locale, ".%u", GetACP()); setlocale(LC_ALL, locale); +#ifdef LANG_FR /* A Bit ugly but to be debugged wrt to above 2 lines */ + SetThreadLocale(MAKELCID(MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH),SORT_DEFAULT)); +#endif + char **_argv; int argc; for (argc = 0, _argv = __argv; *_argv; _argv++) @@ -253,10 +275,17 @@ WinMain (HINSTANCE h, else { char buff[80 + ((string) Arch).size ()]; +#ifdef LANG_FR + sprintf (buff, "Option invalide pour --arch : « %s »", + ((string) Arch).c_str ()); + fprintf (stderr, "*** %s\n", buff); + mbox (NULL, buff, "Option invalide", MB_ICONEXCLAMATION | MB_OK); +#else sprintf (buff, "Invalid option for --arch: \"%s\"", ((string) Arch).c_str ()); fprintf (stderr, "*** %s\n", buff); mbox (NULL, buff, "Invalid option", MB_ICONEXCLAMATION | MB_OK); +#endif exit (1); } @@ -317,8 +346,13 @@ WinMain (HINSTANCE h, /* Check if Cygwin works on this Windows version */ if (!UnsupportedOption && (OSMajorVersion () < 6)) { +#ifdef LANG_FR + mbox (NULL, "Cygwin n'est pas supporté pour cette version de Windows", + "Assistant Cygwin", MB_ICONEXCLAMATION | MB_OK); +#else mbox (NULL, "Cygwin is not supported on this Windows version", "Cygwin Setup", MB_ICONEXCLAMATION | MB_OK); +#endif Logger ().exit (1, false); } diff --git a/mount.cc b/mount.cc index f261ce0..a552586 100644 --- a/mount.cc +++ b/mount.cc @@ -132,9 +132,15 @@ create_install_root () } while (rv == ERROR_ACCESS_DENIED); if (rv != ERROR_SUCCESS) +#ifdef LANG_FR + mbox (NULL, "Impossible de créer la clé de registre\n" + "pour enregistrer le chemin d'installation", + "Assistant Cygwin", MB_OK | MB_ICONWARNING); +#else mbox (NULL, "Couldn't create registry key\n" "to store installation path", "Cygwin Setup", MB_OK | MB_ICONWARNING); +#endif RegCloseKey (key); // The mount table is already in the right shape at this point. diff --git a/msg.cc b/msg.cc index 403e78a..356916e 100644 --- a/msg.cc +++ b/msg.cc @@ -55,7 +55,11 @@ mbox (HWND owner, const char *buf, const char *name, int type) return 0; } } +#ifdef LANG_FR + return MessageBox (owner, buf, "Assistant Cygwin", type); +#else return MessageBox (owner, buf, "Cygwin Setup", type); +#endif } static int diff --git a/net.cc b/net.cc index ad497ca..c73eb62 100644 --- a/net.cc +++ b/net.cc @@ -35,7 +35,11 @@ #include "ConnectionSetting.h" extern ThreeBarProgressPage Progress; +#ifdef LANG_FR +static StringOption ProxyOption ("", 'p', "proxy", "Proxy HTTP/FTP (serveur:port)", false); +#else static StringOption ProxyOption ("", 'p', "proxy", "HTTP/FTP proxy (host:port)", false); +#endif static int rb[] = { IDC_NET_PRECONFIG, IDC_NET_DIRECT, IDC_NET_PROXY, 0 }; static bool doing_loading = false; diff --git a/nio-ie5.cc b/nio-ie5.cc index 6fada0f..2762449 100644 --- a/nio-ie5.cc +++ b/nio-ie5.cc @@ -31,7 +31,11 @@ #include "getopt++/StringOption.h" #include +#ifdef LANG_FR +static StringOption UserAgent ("", '\0', "user-agent", "User agent pour les requêtes HTTP"); +#else static StringOption UserAgent ("", '\0', "user-agent", "User agent string for HTTP requests"); +#endif const std::string & determine_default_useragent(void) @@ -192,7 +196,11 @@ try_again: char buf[2000]; DWORD e, l = sizeof (buf); InternetGetLastResponseInfo (&e, buf, &l); +#ifdef LANG_FR + mbox (0, buf, "Erreur internet", MB_OK); +#else mbox (0, buf, "Internet Error", MB_OK); +#endif } else { diff --git a/package_message.h b/package_message.h index 7ff7d15..b11982c 100644 --- a/package_message.h +++ b/package_message.h @@ -33,7 +33,12 @@ public: { if (unattended_mode || !id.length () || UserSettings::instance().get (id.c_str ())) /* No message or already seen */; + +#ifdef LANG_FR + else if (MessageBox (NULL, message.c_str (), "Alerte Assistant Cygwin", +#else else if (MessageBox (NULL, message.c_str (), "Setup Alert", +#endif MB_OKCANCEL | MB_ICONSTOP | MB_SETFOREGROUND | MB_TOPMOST) != IDCANCEL) UserSettings::instance().set (id.c_str (), "1"); diff --git a/package_meta.cc b/package_meta.cc index 7f8110d..dd7a2d7 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -46,10 +46,17 @@ using namespace std; using namespace std; +#ifdef LANG_FR +static StringArrayOption DeletePackageOption ('x', "remove-packages", "Spécifie les paquests à désinstaller"); +static StringArrayOption DeleteCategoryOption ('c', "remove-categories", "Spécifie les catégories à désinstaller"); +static StringArrayOption PackageOption ('P', "packages", "Spécifie les paquets à installer"); +static StringArrayOption CategoryOption ('C', "categories", "Spécifie les categories à installer"); +#else static StringArrayOption DeletePackageOption ('x', "remove-packages", "Specify packages to uninstall"); static StringArrayOption DeleteCategoryOption ('c', "remove-categories", "Specify categories to uninstall"); static StringArrayOption PackageOption ('P', "packages", "Specify packages to install"); static StringArrayOption CategoryOption ('C', "categories", "Specify entire categories to install"); +#endif bool hasManualSelections = 0; /*****************/ @@ -73,13 +80,29 @@ packagemeta::_actions::caption () switch (_value) { case 0: +#ifndef LANG_FR return "Default"; +#else + return "Défaut"; +#endif case 1: +#ifndef LANG_FR return "Install"; +#else + return "Installe"; +#endif case 2: +#ifndef LANG_FR return "Reinstall"; +#else + return "Réinstalle"; +#endif case 3: +#ifndef LANG_FR return "Uninstall"; +#else + return "Désinstalle"; +#endif } // Pacify GCC: (all case options are checked above) return 0; @@ -388,16 +411,32 @@ std::string packagemeta::action_caption () const { if (!desired && installed) +#ifdef LANG_FR + return "Désinstalle"; +#else return "Uninstall"; +#endif else if (!desired) +#ifdef LANG_FR + return "Passe"; +#else return "Skip"; +#endif else if (desired == installed && picked()) +#ifdef LANG_FR + return packagedb::task == PackageDB_Install ? "Réinstalle" : "Récupère"; +#else return packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve"; +#endif else if (desired == installed && desired.sourcePackage() && srcpicked()) /* FIXME: Redo source should come up if the tarball is already present locally */ return "Source"; else if (desired == installed) /* and neither src nor bin */ +#ifdef LANG_FR + return "Garde"; +#else return "Keep"; +#endif else return desired.Canonical_version (); } diff --git a/package_source.cc b/package_source.cc index dca1945..85dd016 100644 --- a/package_source.cc +++ b/package_source.cc @@ -111,9 +111,13 @@ packagesource::check_sha512 (const std::string fullname) const SHA512Init (&ctx); Log (LOG_BABBLE) << "Checking SHA512 for " << fullname << endLog; - +#ifdef LANG_FR + Progress.SetText1 (("Vérification SHA512 pour " + shortname).c_str ()); + Progress.SetText4 ("Avancement :"); +#else Progress.SetText1 (("Checking SHA512 for " + shortname).c_str ()); Progress.SetText4 ("Progress:"); +#endif Progress.SetBar1 (0); unsigned char buffer[64 * 1024]; @@ -161,8 +165,13 @@ packagesource::check_md5 (const std::string fullname) const Log (LOG_BABBLE) << "Checking MD5 for " << fullname << endLog; +#ifdef LANG_FR + Progress.SetText1 (("Vérification MD5 pour " + shortname).c_str ()); + Progress.SetText4 ("Avancement :"); +#else Progress.SetText1 (("Checking MD5 for " + shortname).c_str ()); Progress.SetText4 ("Progress:"); +#endif Progress.SetBar1 (0); unsigned char buffer[64 * 1024]; diff --git a/postinstall.cc b/postinstall.cc index 3cd6ff0..d13bc2a 100644 --- a/postinstall.cc +++ b/postinstall.cc @@ -147,7 +147,11 @@ private: static std::string do_postinstall_thread (HINSTANCE h, HWND owner) { +#ifndef LANG_FR Progress.SetText1 ("Running..."); +#else + Progress.SetText1 ("Exécution ..."); +#endif Progress.SetText2 (""); Progress.SetText3 (""); Progress.SetBar1 (0, 1); diff --git a/prereq.cc b/prereq.cc index 033f654..0cb0f22 100644 --- a/prereq.cc +++ b/prereq.cc @@ -32,7 +32,11 @@ static ControlAdjuster::ControlInfo PrereqControlsInfo[] = { }; extern ThreeBarProgressPage Progress; +#ifdef LANG_FR +BoolOption IncludeSource (false, 'I', "include-source", "Ajouter automatiquement les sources de chaque paquet installé"); +#else BoolOption IncludeSource (false, 'I', "include-source", "Automatically install source for every package installed"); +#endif // --------------------------------------------------------------------------- // implements class PrereqPage @@ -85,10 +89,17 @@ PrereqPage::OnNext () { // breakage imminent! danger, danger int res = MessageBox (h, +#ifdef LANG_FR + "Certains paquets ne fonctionneront pas correctement si vous continuez." + "\r\n\r\n" + "Voulez vous continuer (NON RECOMMANDÉ) ?", + "ATTENTION - Problèmes non résolus", +#else "Some packages may not work properly if you continue." "\r\n\r\n" "Are you sure you want to proceed (NOT RECOMMENDED)?", "WARNING - Unsolved Problems", +#endif MB_YESNO | MB_ICONEXCLAMATION | MB_DEFBUTTON2); if (res == IDNO) return -1; @@ -155,7 +166,11 @@ PrereqChecker::isMet () { packagedb db; +#ifdef LANG_FR + Progress.SetText1 ("Résolution des dépendences..."); +#else Progress.SetText1 ("Solving dependencies..."); +#endif Progress.SetText2 (""); Progress.SetText3 (""); diff --git a/propsheet.cc b/propsheet.cc index 9328281..a9fa708 100644 --- a/propsheet.cc +++ b/propsheet.cc @@ -161,8 +161,13 @@ static LRESULT CALLBACK PropSheetWndProc (HWND hwnd, UINT uMsg, break; areyousure: if (MessageBox(hwnd, +#ifdef LANG_FR + "Voulez-vous vraiment quitter l'assistant ? Les téléchargements ou installations en cours seront annulés.", + "Quitter l'assistant Cygwin ?", MB_YESNO) == IDNO) +#else "Are you sure you want to exit setup? Any current download or installation will be aborted.", "Exit Cygwin Setup?", MB_YESNO) == IDNO) +#endif return 0; break; case WM_SIZE: diff --git a/res.rc b/res.rc index 921ef03..0bb99a5 100644 --- a/res.rc +++ b/res.rc @@ -14,6 +14,12 @@ #define SETUP_HEADICON_X (SETUP_STANDARD_DIALOG_W - 27) +#ifndef LANG_FR +///////////////////////////////////////////////////////////////////////////// +// +// English (en_US) resources +// + LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US ///////////////////////////////////////////////////////////////////////////// @@ -327,7 +333,7 @@ END #define SETUP_SEARCHTEXT_X (SETUP_SEARCH_X + SETUP_SEARCH_W + 2) #define SETUP_SEARCHTEXT_W (60) #define SETUP_CLEAR_X (SETUP_SEARCHTEXT_X + SETUP_SEARCHTEXT_W + 2) -#define SETUP_CLEAR_W (22) +#define SETUP_CLEAR_W (30) IDD_CHOOSE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | @@ -497,17 +503,6 @@ BEGIN PUSHBUTTON "&Continue",IDCONTINUE,177,112,55,15 END -///////////////////////////////////////////////////////////////////////////// -// -// Manifest -// - -#ifdef __x86_64__ -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup64.exe.manifest" -#else -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup.exe.manifest" -#endif - ///////////////////////////////////////////////////////////////////////////// // // Icon @@ -618,3 +613,604 @@ BEGIN IDS_ELEVATED "Hand installation over to elevated child process." IDS_INSTALLEDB_VERSION "Unknown INSTALLED.DB version" END + +#else + +///////////////////////////////////////////////////////////////////////////// +// +// French (fr_FR) resources +// + +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_SOURCE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Choisissez le type d'installation" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Installer depuis Internet\n(les fichiers téléchargés seront gardés pour une réutilisation ultérieure)", + IDC_SOURCE_NETINST, "Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP | BS_MULTILINE + | BS_TOP, + 71, 60, 200, 30 + CONTROL "&Télécharger sans installer", + IDC_SOURCE_DOWNLOAD, "Button", + BS_AUTORADIOBUTTON | WS_TABSTOP, + 71, 90, 200, 10 + CONTROL "Installer depuis un dossier &local",IDC_SOURCE_LOCALDIR,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP, + 71,120,200,10 + ICON IDI_CYGWIN, IDC_HEADICON, SETUP_HEADICON_X, 0, 21, 20 + CONTROL "", IDC_HEADSEPARATOR, "Static", SS_BLACKFRAME | SS_SUNKEN, + 0, 28, SETUP_STANDARD_DIALOG_W, 1 + LTEXT "Choisissez la source du téléchargement",IDC_STATIC_HEADER_TITLE, + 7, 0, 258, 8, NOT WS_GROUP + LTEXT "Choisissez si vous installez ou téléchargez depuis Internet, ou installez des fichiers depuis un dossier local.", + IDC_SOURCE_SUBTEXT, + 21, 9, 239, 16, NOT WS_GROUP +END + +IDD_VIRUS DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Inhiber l'Anti-Virus ?" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Inhiber l'anti-virus",IDC_DISABLE_AV,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,101,69,115,10 + CONTROL "&Laisser l'anti-virus tranquille",IDC_LEAVE_AV,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,101,84,115,10 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Choisissez si vous inhibez votre anti-virus pendant l'installation.",IDC_STATIC_HEADER_TITLE,7,0, + 258,8,NOT WS_GROUP + LTEXT "Certains anti-virus, notamment McAfee, génèrent un écran bleu sur Windows XP lors de l'installation de Cygwin.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Un anti-virus problématique a été détecté. L'assistant Cygwin peut l'inhiber pendant le processus d'installation, et le revalider à la fin de l'installation.", + IDC_STATIC,21,32,239,24,NOT WS_GROUP +END + +IDD_LOCAL_DIR DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection du dossier local des paquets" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Sélection du dossier local des paquets",IDC_STATIC_HEADER_TITLE, + 7,0,258,8,NOT WS_GROUP + LTEXT "",IDC_LOCAL_DIR_DESC,21,9,248,16,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + GROUPBOX "Dossier local des paquets",IDC_LOCALDIR_GRP,5,35,330,35 + EDITTEXT IDC_LOCAL_DIR,13,47,270,14,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "Par&courir...",IDC_LOCAL_DIR_BROWSE,285,47,44,14,WS_TABSTOP +END + +IDD_ROOT DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Choix du dossier d'installation" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Sélection du dossier racine", IDC_STATIC_HEADER_TITLE, + 7,0,258,8,NOT WS_GROUP + LTEXT "Sélectionnez le dossier où installer Cygwin. " + "Choisissez également des paramètres d'installation.", + IDC_ROOTDIR_SUBTEXT,21,9,239,16,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + + GROUPBOX "Dossier racine", IDC_ROOTDIR_GRP,5,35,330,35 + EDITTEXT IDC_ROOT_DIR,15,47,270,14,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "Pa&rcourir...",IDC_ROOT_BROWSE,285,47,44,14,WS_TABSTOP + + GROUPBOX "Installer pour",IDC_INSTALLFOR_GRP,5,76,330,101 + CONTROL "&Tout le monde (RECOMMANDÉ)",IDC_ROOT_SYSTEM,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP,13,89,130,8 + CONTROL "Juste &Moi",IDC_ROOT_USER,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,13,130,130,8 + LTEXT "Cygwin sera disponible pour tous les utilisateurs", + IDC_ALLUSERS_TEXT,25,101,300,28 + LTEXT "Cygwin sera disponible pour tous les utilisateurs " + "mais les icones et les menus uniquement pour l'utilisateur " + "en cours. Ne sélectionner que si vous n'avez pas les droits " + "administrateur ou en cas de besoin spécifique.", + IDC_JUSTME_TEXT,25,140,300,32 +END + +IDD_SITE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "Assistant Cygwin - Choix site(s) de téléchargement" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LISTBOX IDC_URL_LIST,66,45,185,110,LBS_NOINTEGRALHEIGHT | + LBS_EXTENDEDSEL | WS_VSCROLL | WS_HSCROLL | WS_GROUP | + WS_TABSTOP + LTEXT "Sites disponibles :",IDC_STATIC,66,34,183,8,NOT + WS_GROUP + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Choisissez un site dans cette liste, ou ajoutez vos propres sites à la liste.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Choisissez un site de téléchargement",IDC_STATIC_HEADER_TITLE,7,0,258, + 8,NOT WS_GROUP + EDITTEXT IDC_EDIT_USER_URL,65,160,185,14,ES_AUTOHSCROLL | WS_GROUP + LTEXT "URL perso :",IDC_SITE_USERURL,15,162,45,8,NOT WS_GROUP + PUSHBUTTON "Ajouter",IDC_BUTTON_ADD_URL,255,160,50,14 +END + +IDD_NET DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection du type de connexion" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Utiliser les paramètres proxy &Système",IDC_NET_PRECONFIG,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,60,55,185,10 + CONTROL "Connexion &directe",IDC_NET_DIRECT,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,60,70,73,10 + CONTROL "Utiliser le &proxy HTTP/FTP :",IDC_NET_PROXY,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,60,85,110,10 + EDITTEXT IDC_PROXY_HOST,120,105,120,12,ES_AUTOHSCROLL | + WS_DISABLED | WS_GROUP + EDITTEXT IDC_PROXY_PORT,120,125,30,12,ES_AUTOHSCROLL | + WS_DISABLED + GROUPBOX "",IDC_STATIC,60,95,185,50 + RTEXT "&Serveur proxy",IDC_STATIC,65,105,50,12,SS_CENTERIMAGE | + NOT WS_GROUP + RTEXT "Por&t",IDC_STATIC,85,125,30,12,SS_CENTERIMAGE | NOT + WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "L'assistant a besoin de savoir comment vous désirez le connecter à Internet. Choisissez un paramètre approprié ci-dessous.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Sélectionnez votre connexion Internet", + IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP +END + +IDD_INSTATUS DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Installation...",IDC_INS_ACTION,45,55,205,8,SS_ENDELLIPSIS + LTEXT "(PAQUET)",IDC_INS_PKG,45,70,205,8,SS_ENDELLIPSIS + LTEXT "(FICHIER)",IDC_INS_FILE,45,85,205,10,SS_ENDELLIPSIS + CONTROL "Progress1",IDC_INS_DISKFULL,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,130,155,10 + CONTROL "Progress1",IDC_INS_IPROGRESS,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,115,155,10 + CONTROL "Progress1",IDC_INS_PPROGRESS,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,100,155,10 + LTEXT "Paquet :",IDC_INS_BL_PACKAGE,45,100,50,8,NOT WS_GROUP + LTEXT "Total  :",IDC_INS_BL_TOTAL,45,115,50,8,NOT WS_GROUP + LTEXT "Disque :",IDC_INS_BL_DISK,45,130,50,8,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Cette page affiche l'avancement du téléchargement ou de l'installation.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Avancement",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP +END + +IDD_PROXY_AUTH DIALOG DISCARDABLE 0, 0, SETUP_SMALL_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification proxy requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "ID &Utilisateur",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification proxy requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +IDD_NET_AUTH DIALOG DISCARDABLE 0, 0, SETUP_SMALL_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification serveur requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "&Identifiant",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification serveur requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +IDD_SPLASH DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin" +FONT 8, "MS Shell Dlg" +BEGIN +// CONTROL "",IDC_STATIC,"Static",SS_WHITERECT,0,0,95,178 + LTEXT "Programme Assistant Cygwin-FR", + IDC_STATIC_WELCOME_TITLE,115,1,195,24 + LTEXT "Cet assistant est utilisé pour l'installation initiale " + "de l'environnement Cygwin ainsi que pour ses mises à jour." + " Pensez à vous rappeler où vous l'avez enregistré.\r\n\r\n" + "Les pages suivantes vont vous guider durant l'installation. " + "Notez que Cygwin inclus un grand nombre de paquets " + "destinés à de multiples usages. Nous ne pourrons installer " + "par défaut qu'un jeu de paquets de base. Vous pourrez toujours " + "redémarrer ce programme ultérieurement pour ajouter, enlever ou " + "mettre à jour des paquets.",IDC_SPLASH_TEXT,115,25,195,90 + ICON IDI_CYGWIN,IDC_SPLASH_ICON,4,6,0,0,SS_ICON | SS_REALSIZEIMAGE + LTEXT "Version (inconnue)",IDC_VERSION,115,117,195,10 + LTEXT "Copyright 2000-2018",IDC_SPLASH_COPYR,115,130,195,8 + LTEXT "http://www.cygwin.com/",IDC_SPLASH_URL,115,142,90,8 + LTEXT "Version française ®2004-2018 E. Lassauge ",IDC_SPLASH_FR_COPYR,115,154,195,8 + LTEXT "http://lassauge.free.fr/cygwin/",IDC_SPLASH_FR_URL,115,166,195,8 +END + +IDD_DESKTOP DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - État de l'installation et création des icônes" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Créer une icône sur le &bureau",IDC_ROOT_DESKTOP,"Button", + BS_AUTOCHECKBOX,108,78,110,8 + CONTROL "Ajouter une icône au menu &Démarrer",IDC_ROOT_MENU,"Button", + BS_AUTOCHECKBOX,108,93,140,8 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Indiquez à l'assistant si vous voulez créer des icônes pour un accès aisé à Cygwin.", + IDC_STATIC_HEADER,21,9,239,16,NOT WS_GROUP + LTEXT "Création des icônes",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT + WS_GROUP + CONTROL "",IDC_DESKTOP_SEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,155,SETUP_STANDARD_DIALOG_W,1 + LTEXT "État de l'installation",IDC_STATUS_HEADER,7,160,258,8,NOT WS_GROUP + LTEXT "Installation de Cygwin terminée avec succès.",IDC_STATUS, + 21,169,239,16,NOT WS_GROUP +END + +IDD_FTP_AUTH DIALOG DISCARDABLE 0, 0, SETUP_SMALL_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification FTP requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "ID &Utilisateur",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification FTP requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +// Width for Keep/Prev/Curr/Exp buttons. +#define SETUP_KPCE_W (35) + +// Right-aligned controls. +#define SETUP_EXP_X (SETUP_STANDARD_DIALOG_W - SETUP_KPCE_W - 7) +#define SETUP_SYNC_X (SETUP_EXP_X - SETUP_KPCE_W - 5) +#define SETUP_BEST_X (SETUP_SYNC_X - SETUP_KPCE_W - 5) +#define SETUP_KEEP_X (SETUP_BEST_X - SETUP_KPCE_W - 5) + +// Left-aligned controls. +#define SETUP_VIEW_X (7) +#define SETUP_VIEW_W (20) +#define SETUP_VIEWLIST_X (SETUP_VIEW_X + SETUP_VIEW_W + 2) +#define SETUP_VIEWLIST_W (60) +#define SETUP_SEARCH_X (SETUP_VIEWLIST_X + SETUP_VIEWLIST_W + 2) +#define SETUP_SEARCH_W (32) +#define SETUP_SEARCHTEXT_X (SETUP_SEARCH_X + SETUP_SEARCH_W + 2) +#define SETUP_SEARCHTEXT_W (60) +#define SETUP_CLEAR_X (SETUP_SEARCHTEXT_X + SETUP_SEARCHTEXT_W + 2) +#define SETUP_CLEAR_W (30) + + +IDD_CHOOSE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection des paquets" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Voir", IDC_CHOOSE_VIEWCAPTION, SETUP_VIEW_X, 33, + SETUP_VIEW_W, 10 + COMBOBOX IDC_CHOOSE_VIEW, SETUP_VIEWLIST_X, 30, SETUP_VIEWLIST_W, 84, + CBS_DROPDOWNLIST | WS_TABSTOP + RTEXT "&Chercher", IDC_STATIC, SETUP_SEARCH_X, 33, SETUP_SEARCH_W, + 10, SS_CENTERIMAGE, WS_EX_RIGHT + CONTROL "Chercher ", IDC_CHOOSE_DO_SEARCH, "Button", BS_PUSHBUTTON | NOT + WS_VISIBLE, SETUP_SEARCH_X, 33, SETUP_SEARCH_W, 14 + EDITTEXT IDC_CHOOSE_SEARCH_EDIT, SETUP_SEARCHTEXT_X, 30, + SETUP_SEARCHTEXT_W, 14, ES_AUTOHSCROLL + PUSHBUTTON "&Efface", IDC_CHOOSE_CLEAR_SEARCH, SETUP_CLEAR_X, 30, + SETUP_CLEAR_W, 14 + CONTROL "&Garde",IDC_CHOOSE_KEEP,"Button",BS_AUTORADIOBUTTON + | WS_GROUP | WS_TABSTOP, SETUP_KEEP_X, 30, SETUP_KPCE_W, 14 + CONTROL "&Mieux", IDC_CHOOSE_BEST, "Button", BS_AUTORADIOBUTTON, + SETUP_BEST_X, 30, SETUP_KPCE_W, 14 + CONTROL "&Sync", IDC_CHOOSE_SYNC, "Button", BS_AUTORADIOBUTTON, + SETUP_SYNC_X, 30, SETUP_KPCE_W, 14 + CONTROL "&Test", IDC_CHOOSE_EXP, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + SETUP_EXP_X, 30, SETUP_KPCE_W, 14 + CONTROL "", IDC_HEADSEPARATOR, "Static", SS_BLACKFRAME | SS_SUNKEN, + 0, 28, SETUP_STANDARD_DIALOG_W, 1 + CONTROL "", IDC_LISTVIEW_POS, "Static", SS_BLACKFRAME | NOT + WS_VISIBLE, 7, 45, SETUP_STANDARD_DIALOG_W - 14, 122 + CONTROL "&Cache les paquets obsolètes", IDC_CHOOSE_HIDE, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 167, 160, 14 + ICON IDI_CYGWIN, IDC_HEADICON, SETUP_HEADICON_X, 0, 21, 20 + LTEXT "Sélectionnez les paquets que vous voulez installer.", + IDC_CHOOSE_INST_TEXT, 21, 9, 239, 16, NOT WS_GROUP + LTEXT "Sélection des paquets",IDC_STATIC_HEADER_TITLE,7,0,258,8, + NOT WS_GROUP +END + +IDD_PREREQ DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin - Résolution des dépendances" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,28,SETUP_STANDARD_DIALOG_W,1 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LTEXT "Résolution des dépendances",IDC_STATIC_HEADER_TITLE + ,7,0,258,8,NOT WS_GROUP + LTEXT "Les problèmes suivants apparaissent lors de la résolution " + "des dépendances",IDC_STATIC,21,9,239,16,NOT WS_GROUP + CONTROL "&Accepter la solution par défaut" + ,IDC_PREREQ_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 7,167,225,14 + EDITTEXT IDC_PREREQ_EDIT,7,41,303,124,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL + +END + +IDD_CONFIRM DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin - Revoir et confirmer les changements" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,28,SETUP_STANDARD_DIALOG_W,1 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LTEXT "Revoir et confirmer les changements",IDC_STATIC_HEADER_TITLE + ,7,0,258,8,NOT WS_GROUP + EDITTEXT IDC_CONFIRM_EDIT,7,41,325,131,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL +END + +IDD_DROPPED DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_W, 142 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Utiliser les sites miroirs éliminés ?" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Attention :",IDC_STATIC,7,8,40,8 + LTEXT "Un ou plusieurs miroirs sélectionnés ne sont plus " + "dans la liste officielle des miroirs Cygwin. " + "Certains paquets peuvent manquer ou ne pas être à jour.\n" + "Ceci concerne le(s) miroir(s) suivant(s) :", + IDC_STATIC,47,8,263,32 + EDITTEXT IDC_DROP_MIRRORS,7,40,303,40,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL + LTEXT "Si vous avez des problèmes à l'installation pensez à " + "n'utiliser que les miroirs officiels.\n\n" + "Voulez-vous continuer avec ce(s) miroir(s) ?", + IDC_STATIC,7,88,303,24 + CONTROL "&Ne plus me prévenir pour ce(s) miroir(s)", + IDC_DROP_NOWARN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 7,120,213,15 + PUSHBUTTON "&Oui",IDYES,220,120,45,15 + DEFPUSHBUTTON "&Non",IDNO,265,120,45,15 + +END + +IDD_DOWNLOAD_ERROR DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION +CAPTION "Téléchargement Incomplet" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_WARNING,IDC_HEADICON,10,10 + LTEXT "Les paquets suivants ont eu des erreurs de téléchargement :", + IDC_STATIC,7,8,320,16 + EDITTEXT IDC_DOWNLOAD_EDIT,7,24,320,88,WS_VSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | + ES_AUTOVSCROLL + LTEXT "Choisissez 'Recommencer' pour relancer le téléchargement, " + "'Précédent' pour revenir à la page de selection des paquets, " + "'Continuer' pour forcer la suite (NON RECOMMANDÉ), ou " + "'Annuler' pour quitter.", + IDC_STATIC,7,120,320,24 + DEFPUSHBUTTON "&Recommencer",IDRETRY,45,150,50,15 + PUSHBUTTON "&Précédent",IDC_BACK,110,150,50,15 + PUSHBUTTON "&Continuer",IDIGNORE,175,150,50,15 + PUSHBUTTON "Annuler",IDABORT,240,150,50,15 +END + +IDD_POSTINSTALL DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_W, 142 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Lancement des scripts post-installation" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,28,SETUP_STANDARD_DIALOG_W,1 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LTEXT "Erreurs dans les scripts",IDC_STATIC_HEADER_TITLE + ,7,0,258,8,NOT WS_GROUP + LTEXT "Ceci n'indique pas forcément que les paquets concernés" + "ne fonctionneront pas, mais consultez " + "/var/log/setup.log.full avant de reporter un problème.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + EDITTEXT IDC_POSTINSTALL_EDIT,7,41,303,112,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL +END + +IDD_FILE_INUSE DIALOG DISCARDABLE 0, 0, SETUP_MEDIUM_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION +CAPTION "Détection d'un fichier en cours d'utilisation" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_WARNING,IDC_HEADICON,10,10 + LTEXT "Impossible d'extraire %s", + IDC_FILE_INUSE_MSG,33,10,234,8,SS_PATHELLIPSIS + LTEXT "Ce fichier est en cours d'utilisation par : ", + IDC_STATIC,33,28,234,8 + EDITTEXT IDC_FILE_INUSE_EDIT,33,40,234,32,WS_VSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | + ES_AUTOVSCROLL | NOT WS_TABSTOP + LTEXT "Choisir 'Recommencer' pour recommencer, " + "Choisir 'Stop' pour arrêter les process et recommencer, ou " + "Choisir 'Continuer' pour procéder (un reboot sera nécessaire).", + IDC_FILE_INUSE_HELP,33,80,234,24,NOT WS_GROUP + PUSHBUTTON "&Recommencer",IDIGNORE,45,112,55,15 + DEFPUSHBUTTON "&Stop",IDRETRY,111,112,55,1 + PUSHBUTTON "&Continuer",IDCONTINUE,177,112,55,15 +END + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_CYGWIN_SETUP ICON DISCARDABLE "cygwin-setup_fr.ico" +IDI_CYGWIN ICON DISCARDABLE "cygwin_fr.ico" +IDI_CYGWIN_TERMINAL ICON DISCARDABLE "cygwin-terminal_fr.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// FILE +// + +CYGWIN-SETUP.ICON FILE DISCARDABLE "cygwin-setup_fr.ico" +CYGWIN.ICON FILE DISCARDABLE "cygwin_fr.ico" +CYGWIN-TERMINAL.ICON FILE DISCARDABLE "cygwin-terminal_fr.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_SPIN BITMAP DISCARDABLE "choose-spin.bmp" +IDB_CHECK_YES BITMAP DISCARDABLE "check-yes.bmp" +IDB_CHECK_NO BITMAP DISCARDABLE "check-no.bmp" +IDB_CHECK_NA BITMAP DISCARDABLE "check-nd.bmp" +IDB_TREE_PLUS BITMAP DISCARDABLE "tree-plus.bmp" +IDB_TREE_MINUS BITMAP DISCARDABLE "tree-minus.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ROOT_SLASH "Attention : nous recommandons de ne PAS utiliser la racine du disque dur comme racine de Cygwin pour éviter des conflits avec d'autres programmes. Continuer quand même ?" + IDS_ROOT_SPACE "Vous ne devriez pas utiliser un chemin racine qui inclus des espaces dans les noms de dossiers. Continuer quand même ?" + IDS_MIRROR_LST "http://cygwin.com/mirrors.lst" + IDS_ERR_OPEN_WRITE "Impossible d'ouvrir %s en écriture : %s" + IDS_SETUPINI_MISSING "Impossible de récupérer %s depuis « %s »" + IDS_OLD_SETUPINI "Ce fichier setup.ini est plus ancien que celui utilisé lors de la dernière installation de Cygwin. Continuer quand même ?" + IDS_NOTHING_INSTALLED "Rien à installer" + IDS_INSTALL_COMPLETE "Installation terminée" + IDS_REBOOT_REQUIRED "Les fichiers en cours d'utilisation ont été remplacés. Vous devriez redémarrer dès que possible pour activer ces versions. Cygwin pourrait fonctionner de façon incorrecte jusqu'au redémarrage." + IDS_ERR_OPEN_READ "Impossible d'ouvrir %s en lecture : %s" + IDS_ROOT_ABSOLUTE "Le dossier d'installation doit être absolu, avec à la fois un identificateur de lecteur et une barre oblique au début : C:\\Cygwin" + IDS_DOWNLOAD_COMPLETE "Téléchargement terminé" + IDS_NOLOGFILE "Impossible d'ouvrir le fichier de trace %s en écriture" + IDS_UNINSTALL_COMPLETE "Désinstallation terminée" + IDS_ERR_CHDIR "Impossible de changer le dossier vers %s : %s [%.8x]" + IDS_OLD_SETUP_VERSION "Cet assistant est en version %s, mais setup.ini indique que la version %s est disponible.\nVous devriez le mettre à jour pour avoir les dernière fonctionnalitées et corrections de bogues." + IDS_DOWNLOAD_INCOMPLETE "Téléchargement incomplet. Recommencer ?" + IDS_DOWNLOAD_INCOMPLETE_EXIT "Téléchargement incomplet. Vérifiez %s pour avoir des détails" + IDS_INSTALL_ERROR "Erreur d'installation (%s), Continuer avec les autres paquets ?" + IDS_INSTALL_INCOMPLETE "Installation incomplète. Vérifiez %s pour les détails" + IDS_CORRUPT_PACKAGE "Le fichier du paquet %s a une copie locale altérée, supprimez la et recommencez." + IDS_QUERY_CORRUPT "Le fichier %s est corrompu. Effacer et re-télécharger ?" + IDS_SKIP_PACKAGE "%s\nVoulez-vous passer ce paquet ?" + IDS_UNCAUGHT_EXCEPTION "Erreur Fatale  : Exception non traitée\nThread: %s\nType: %s\nMessage: %s" + IDS_UNCAUGHT_EXCEPTION_WITH_ERRNO "Erreur Fatale  : Exception non traitée\nThread: %s\nType: %s\nMessage: %s\nAppErrNo: %d" + IDS_TRUSTKEEP_TOOLTIP "Garde tous les paquets à la version installée. " + "Ceci est équivalent à demander à l'assistant de ne faire aucun changement " + "aux paquets." + IDS_TRUSTCURR_TOOLTIP "Sélectionne globalement la version qui est actuellement " + "considérée comme la meilleure (RECOMMANDÉ)." + IDS_TRUSTSYNC_TOOLTIP "Sélectionne globalement la version qui est disponible " + "dans le site, éventuellement une version plus ancienne" + IDS_TRUSTEXP_TOOLTIP "Autoriser les versions de test" + IDS_VIEWBUTTON_TOOLTIP "Itérer les différentes vues des paquets. Ceci détermine" + " quels paquets seront montrés dans la vue ci-dessous.\r\n" + "\r\n" + "Catégorie : regroupe par catégorie de paquets. Cliquez sur '+' pour étendre.\r\n" + "\r\n" + "Tout : montre tous les paquets.\r\n" + "\r\n" + "En attente : montre uniquement les paquets à ajouter, enlever ou mettre à jour. " + "Ceci montre ce que l'assistant est sur le point de modifier " + "lors de l'appui sur 'Suivant'.\r\n" + "\r\n" + "À jour : montre les paquets installés qui ne nécessitent pas d'action.\r\n" + "\r\n" + "Non installé : montre les paquets non installés ou qui ne sont pas " + "sélectionnés pour installation.\r\n" + "\r\n" + "Choisi : montre les paquets installés qui ont été sélectionnés, et non installés " + "pour résoudre une dépendance." + IDS_HIDEOBS_TOOLTIP "L'assistant cachera les paquets des catégories dont " + "le nom commence par '_'. Ces paquets sont vides et sont des emplacements " + "pour des paquets éliminés ou renommés, ou encore des paquets " + "d'infrastructure gérés automatiquement." + IDS_SIG_INVALID "Erreur pour le miroir : la signature de Setup.ini %s de %s est impossible à vérifier.\nLe miroir est peut-être corrompu ? Setup.ini rejeté." + IDS_CRYPTO_ERROR "Erreur interne : librairie gcrypt erreur %d %s" + IDS_SEARCH_TOOLTIP "Chercher cette valeur dans les noms des paquets." + IDS_LOCAL_DIR_DOWNLOAD "Choisir un dossier pour enregistrer les fichiers " + "téléchargés. Ce dossier sera créé s'il n'existe pas." + IDS_LOCAL_DIR_INSTALL "Choisir un dossier où l'assistant ira chercher les " + "fichiers téléchargés." + IDS_MAYBE_MKDIR "Dossier %s absent, voulez-cous le créer ?" + IDS_CANT_MKDIR "Impossible de créer le dossier %s, désolé. (Disque plein ou uniquement en lecture ?)" + IDS_NO_LOCALDIR "Dossier local des paquets %s absent.\nVoulez-vous que setup-FR-%s.exe efface les paquets\n" + "Mais il n'y aura rien à installer\n\nChoisir OK si c'est ce que vous voulez\nou Annuler pour choisir un autre dossier." + IDS_ELEVATED "Passer l'installation au process Administrateur." + IDS_INSTALLEDB_VERSION "Version de INSTALLED.DB inconnue" +END + +#endif // French (fr_FR) resources + +///////////////////////////////////////////////////////////////////////////// +// +// Manifest +// + +#ifdef __x86_64__ +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup64.exe.manifest" +#else +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup.exe.manifest" +#endif diff --git a/resource.h b/resource.h index 04a68fd..520f05e 100644 --- a/resource.h +++ b/resource.h @@ -182,3 +182,7 @@ #define IDC_CHOOSE_DO_SEARCH 595 #define IDC_CHOOSE_SYNC 596 #define IDC_CONFIRM_EDIT 597 +#ifdef LANG_FR +#define IDC_SPLASH_FR_URL 700 +#define IDC_SPLASH_FR_COPYR 701 +#endif diff --git a/root.cc b/root.cc index e339d89..324a24c 100644 --- a/root.cc +++ b/root.cc @@ -40,7 +40,11 @@ using namespace std; +#ifdef LANG_FR +StringOption RootOption ("", 'R', "root", "Dossier racine de l'installation", false); +#else StringOption RootOption ("", 'R', "root", "Root installation directory", false); +#endif static ControlAdjuster::ControlInfo RootControlsInfo[] = { { IDC_ROOTDIR_GRP, CP_STRETCH, CP_TOP }, @@ -107,7 +111,11 @@ browse (HWND h) memset (&bi, 0, sizeof (bi)); bi.hwndOwner = h; bi.pszDisplayName = name; +#ifdef LANG_FR + bi.lpszTitle = "Choisissez le dossier racine de l'installation"; +#else bi.lpszTitle = "Select an installation root directory"; +#endif bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = browse_cb; pidl = SHBrowseForFolder (&bi); @@ -213,6 +221,19 @@ directory_contains_wrong_version (HWND h) /* Forestall mixing. */ const char *setup_ver = is_64bit ? "64" : "32"; const char *inst_ver = is_64bit ? "32" : "64"; +#ifdef LANG_FR + snprintf (text, sizeof text, + "Vous essayez d'installer une version %s bits de Cygwin dans un dossier\n" + "qui contient une version %s bits de Cygwin. Si vous insistez, vous aller\n" + "casser l'installation existante.\n\n" + "Utilisez http://lassauge.free.fr/cygwin/setup-FR-%s.exe pour mettre à jour \n" + "votre installation %s bits de Cygwin, ou choisissez un autre dossier\n" + "pour votre installation %s bits.", + setup_ver, inst_ver, + is_64bit ? "x86" : "x86_64", + inst_ver, setup_ver); + mbox (h, text, "Erreur CPU cible", MB_OK); +#else snprintf (text, sizeof text, "You're trying to install a %s bit version of Cygwin into a directory\n" "containing a %s bit version of Cygwin. Continuing to do so would\n" @@ -224,6 +245,7 @@ directory_contains_wrong_version (HWND h) is_64bit ? "x86" : "x86_64", inst_ver, setup_ver); mbox (h, text, "Target CPU mismatch", MB_OK); +#endif return 1; } diff --git a/sec-pubkey.h b/sec-pubkey.h new file mode 100644 index 0000000..d48f526 --- /dev/null +++ b/sec-pubkey.h @@ -0,0 +1,14 @@ + +/* Autogenerated from: lassauge.pub + * by: ./gpg-key-to-s-expr.sh + * at: Fri Oct 24 13:58:21 2008 */ + +"(public-key " + "(dsa " + "(p #00b6007883a3a60cae36b7ba6577607ecc44e37a07592185cf33e2c2b3336cdf5f6bb8825d29f03de775c0c1b8776667f23a7817220b883ca88f02a308f9b285d558f56606cef41b1775578f2fd740987fe4e171e2575aebecbd3f6d2ff7cf1d6f1f2c456d5a4c09a16c22a4c0abdc1bd34bd0e14f85a06636f29f36db168d46d7#) " + "(q #00b3ae2ff5143522fe501b8a68f30dfde44a91644d#) " + "(g #08bfa4c476695c78d7398b7526fe21df0b64f2a7472c838d21aca009cd11e7d1ddb41af9823c54693c778fa1863eaadddf7daf030e928865f2474873514aad335839c68c7835fa3c1ad0d3e2a7728ac440e58371177f2c438b1ff577004260eb7e7d3055018eee85c6c163890c461c3e2d71a45d4df32850bcaa44903aba17a4#) " + "(y #2252acc47600644271b4bcf93d9b98161b95008c91a906af65011ee771a706c211604aec354df4486aa942cc5366e2a71c83eca84de86fd8345e1b16e3386d923ad9c26534046c442ccae2c56ba7bc595b6ad69a8dd07b8fb037e637c9fb1ec8196dfa510233b7d0b617a93352f0dc1b13a9edeb43b935fa80d27ce800612d9d#)" + ")" +")" + diff --git a/site.cc b/site.cc index b609ecf..b5da8bf 100644 --- a/site.cc +++ b/site.cc @@ -94,9 +94,15 @@ SiteList cached_site_list; /* Stale selected sites to warn about and add to cache */ SiteList dropped_site_list; +#ifdef LANG_FR +StringArrayOption SiteOption('s', "site", "URL du site de téléchargement"); + +BoolOption OnlySiteOption(false, 'O', "only-site", "Ignorer tous les sites sauf ceux spécifiés par -s."); +#else StringArrayOption SiteOption('s', "site", "Download site URL"); BoolOption OnlySiteOption(false, 'O', "only-site", "Do not download mirror list. Only use sites specified with -s."); +#endif extern BoolOption UnsupportedOption; SiteSetting::SiteSetting (): saved (false) @@ -430,8 +436,13 @@ do_download_site_info_thread (void *p) { // Error: Couldn't download the site info. // Go back to the Net setup page. +#ifdef LANG_FR + mbox (h, TEXT ("Impossible d'avoir la liste des sites de téléchargement.\n") + TEXT("Vérifiez que vos paramètres réseau sont corrects et réessayez."), +#else mbox (h, TEXT ("Can't get list of download sites.\n") TEXT("Make sure your network settings are correct and try again."), +#endif NULL, MB_OK); // Tell the progress page that we're done downloading diff --git a/source.cc b/source.cc index 10298db..7c97b06 100644 --- a/source.cc +++ b/source.cc @@ -33,8 +33,13 @@ #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption DownloadOption (false, 'D', "download", "Télécharger seulement depuis internet"); +static BoolOption LocalOption (false, 'L', "local-install", "Installer seulement depuis un répertoire local"); +#else static BoolOption DownloadOption (false, 'D', "download", "Download packages from internet only"); static BoolOption LocalOption (false, 'L', "local-install", "Install packages from local directory only"); +#endif static int rb[] = { IDC_SOURCE_NETINST, IDC_SOURCE_DOWNLOAD, IDC_SOURCE_LOCALDIR, 0 }; diff --git a/splash.cc b/splash.cc index 8f24d2f..1acc81e 100644 --- a/splash.cc +++ b/splash.cc @@ -25,8 +25,13 @@ static ControlAdjuster::ControlInfo SplashControlsInfo[] = { { IDC_SPLASH_TEXT, CP_STRETCH, CP_STRETCH }, { IDC_SPLASH_ICON, CP_LEFT, CP_BOTTOM }, { IDC_VERSION, CP_LEFT, CP_BOTTOM }, +#ifndef LANG_FR { IDC_SPLASH_COPYR, CP_LEFT, CP_BOTTOM }, { IDC_SPLASH_URL, CP_LEFT, CP_BOTTOM }, +#else + { IDC_SPLASH_FR_COPYR, CP_LEFT, CP_BOTTOM }, + { IDC_SPLASH_FR_URL, CP_LEFT, CP_BOTTOM }, +#endif {0, CP_LEFT, CP_TOP} }; @@ -45,9 +50,19 @@ void SplashPage::OnInit () { std::string ver = "Setup version "; +#ifdef LANG_FR + ver += (setup_version[0] ? setup_version : "[inconnue]"); +#else ver += (setup_version[0] ? setup_version : "[unknown]"); +#endif ver += is_64bit ? " (64 bit)" : " (32 bit)"; SetDlgItemFont(IDC_VERSION, "Arial", 10, FW_BOLD); ::SetWindowText (GetDlgItem (IDC_VERSION), ver.c_str()); makeClickable (IDC_SPLASH_URL, "http://www.cygwin.com"); +#ifdef LANG_FR + std::string url = "http://lassauge.free.fr/cygwin/"; + url += is_64bit ? "x86_64" : "x86"; + url += "/release"; + makeClickable (IDC_SPLASH_FR_URL, url); +#endif } diff --git a/threebar.cc b/threebar.cc index cadf3e7..9aea964 100644 --- a/threebar.cc +++ b/threebar.cc @@ -111,8 +111,15 @@ ThreeBarProgressPage::SetBar2 (long long progress, long long max) { int percent = (int) (100.0 * ((double) progress) / (double) max); SendMessage (ins_iprogress, PBM_SETPOS, (WPARAM) percent, 0); +#ifdef LANG_FR + std::string sp = stringify(percent); + std::string s="Assistant Cygwin - "; + s += sp; + s += "%"; +#else std::string s = stringify(percent); s += "% - Cygwin Setup"; +#endif GetOwner ()->SetWindowText (s.c_str()); } @@ -197,7 +204,11 @@ ThreeBarProgressPage::OnMessageApp (UINT uMsg, WPARAM wParam, LPARAM lParam) } else { +#ifdef LANG_FR + fatal("Sortie non attendue du thread de téléchargement", NO_ERROR); +#else fatal("Unexpected fallthrough from the download thread", NO_ERROR); +#endif } break; } -- 2.17.0 From 40017d67cb5a7888895bb9cabb4adf34f4b664a7 Mon Sep 17 00:00:00 2001 From: Eric LASSAUGE Date: Fri, 1 Jun 2018 18:44:12 +0200 Subject: [PATCH] VersionOption for FR --- main.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/main.cc b/main.cc index 6a126cd..6f68779 100644 --- a/main.cc +++ b/main.cc @@ -96,6 +96,7 @@ static BoolOption NoAdminOption (false, 'B', "no-admin", "Ne pas v static BoolOption WaitOption (false, 'W', "wait", "Attendre le process fils en mode élévation"); static BoolOption HelpOption (false, 'h', "help", "Affiche l'aide"); static StringOption SetupBaseNameOpt ("setup", 'i', "ini-basename", "Utiliser un nom de base différent, p.ex. «toto», au lieu de «setup»", false); +static BoolOption VersionOption (false, 'V', "version", "Montrer la version"); BoolOption UnsupportedOption (false, '\0', "allow-unsupported-windows", "Autoriser les vieilles versions de Windows"); #else static StringOption Arch ("", 'a', "arch", "Architecture to install (x86_64 or x86)", false); -- 2.17.0