From 640a21e50c8b289f394627294b40a1e72a2c7a25 Mon Sep 17 00:00:00 2001 From: Eric Lassauge Date: Wed, 28 Oct 2020 10:13:17 +0100 Subject: [PATCH] release_2.905-FR --- AntiVirus.cc | 4 + IniDBBuilderPackage.cc | 5 + LogFile.cc | 5 + Makefile.am | 20 +- PickView.cc | 20 ++ bootstrap.sh | 8 +- choose.cc | 39 +++ confirm.cc | 24 ++ crypto.cc | 47 ++++ 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 | 25 ++ install.cc | 104 +++++++ localdir.cc | 4 + main.cc | 35 +++ mount.cc | 6 + msg.cc | 4 + net.cc | 4 + nio-ie5.cc | 8 + package_message.h | 5 + package_meta.cc | 37 +++ package_source.cc | 11 +- postinstall.cc | 4 + prereq.cc | 15 ++ propsheet.cc | 5 + res.rc | 598 ++++++++++++++++++++++++++++++++++++++++- resource.h | 4 + root.cc | 22 ++ sec-pubkey.h | 14 + setup_fr.exe.manifest | 47 ++++ site.cc | 11 + source.cc | 5 + splash.cc | 16 ++ threebar.cc | 11 + 38 files changed, 1197 insertions(+), 14 deletions(-) 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 create mode 100755 setup_fr.exe.manifest 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 96517e9..f194b30 100644 --- a/IniDBBuilderPackage.cc +++ b/IniDBBuilderPackage.cc @@ -82,8 +82,13 @@ IniDBBuilderPackage::buildMinimumVersion (const std::string& minimum) { char min_vers[256]; snprintf (min_vers, sizeof(min_vers), +#ifdef LANG_FR + "Ce fichier ini nécessite au moins la version %s de setup-FR.\n" + "Téléchargez une version plus récente depuis http://lassauge.free.fr/cygwin/setup-FR-%s.exe", +#else "The current ini file requires at least version %s of setup.\n" "Please download a newer version from https://cygwin.com/setup-%s.exe", +#endif minimum.c_str(), is_64bit ? "x86_64" : "x86"); return min_vers; diff --git a/LogFile.cc b/LogFile.cc index 6b9e971..e52f54a 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 /* private helper class */ class filedef diff --git a/Makefile.am b/Makefile.am index b316764..aaf2456 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,7 +11,8 @@ # A copy of the GNU General Public License can be found at # http://www.gnu.org/ # -# Makefile for Cygwin installer +# Makefile for Cygwin installer LANG_FR updated +SETUP_LANG = -DLANG_FR SUBDIRS := @subdirs@ tests @@ -28,7 +29,7 @@ AM_CFLAGS = $(BASECXXFLAGS) -Wmissing-declarations -Winline \ AM_YFLAGS = -d AM_LFLAGS = -8 WINDRES = @WINDRES@ -AM_CPPFLAGS = -DLZMA_API_STATIC -I$(srcdir)/libgetopt++/include \ +AM_CPPFLAGS = -DLZMA_API_STATIC -I$(srcdir)/libgetopt++/include $(SETUP_LANG) \ $(ZLIB_CFLAGS) $(LZMA_CFLAGS) $(ZSTD_CFLAGS) $(LIBCRYPT_CFLAGS) $(LIBSOLV_CFLAGS) inilex_CXXFLAGS:=-Wno-sign-compare @@ -43,7 +44,11 @@ EXTRA_DIST = \ cygwin.ico \ cygwin-setup.ico \ cygwin-terminal.ico \ + cygwin_fr.ico \ + cygwin-setup_fr.ico \ + cygwin-terminal_fr.ico \ setup.exe.manifest \ + setup_fr.exe.manifest \ tree-minus.ico \ tree-plus.ico @@ -125,6 +130,7 @@ inilint_SOURCES = \ crypto.cc \ crypto.h \ cyg-pubkey.h \ + sec-pubkey.h \ desktop.cc \ desktop.h \ dialog.cc \ @@ -259,7 +265,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@ @@ -271,10 +277,10 @@ setup_version.c : Makefile mv version.tmp setup_version.c # setup.exe.manifest is included in res.rc -res.o: setup.exe.manifest +res.o: setup_fr.exe.manifest .rc.o: - $(AM_V_GEN)$(WINDRES) --include-dir $(srcdir) -o $@ $< + $(AM_V_GEN)$(WINDRES) $(SETUP_LANG) --include-dir $(srcdir) -o $@ $< setup-src: @ver=setup-$(VER);\ @@ -294,14 +300,14 @@ CLEANFILES += setup.dbg upx: strip @if [ -e `which upx` ]; then\ - upx --best --lzma setup$(EXEEXT) ;\ + upx --best --lzma setup$(EXEEXT) --color -osetup-FR$(EXEEXT) ;\ else \ echo "UPX doesn't seem to be installed, cannot compress setup$(EXEEXT)." ;\ fi release: upx cp setup.dbg setup-${VER}.${ARCH}.dbg - cp setup${EXEEXT} setup-${VER}.${ARCH}${EXEEXT} + cp setup-FR${EXEEXT} setup-FR-${VER}.${ARCH}${EXEEXT} UPLOAD_HOST=cygwin-admin@cygwin.com UPLOAD_PATH=/www/sourceware/htdocs/cygwin/setup diff --git a/PickView.cc b/PickView.cc index 6d7d83d..8eaa58e 100644 --- a/PickView.cc +++ b/PickView.cc @@ -101,6 +101,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: @@ -113,6 +127,7 @@ PickView::mode_caption (views mode) return "Picked"; case views::Category: return "Category"; +#endif default: return ""; } @@ -296,8 +311,13 @@ PickView::init_headers (void) } // 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++) listview->noteColumnWidth (cat_col, captions[i]); diff --git a/bootstrap.sh b/bootstrap.sh index 6dcd0ed..6bd9143 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -61,11 +61,11 @@ if test -n "$NOCONFIGURE"; then exit 0 fi -cd "$builddir" +#cd "$builddir" -build=`$srcdir/cfgaux/config.guess` +#build=`$srcdir/cfgaux/config.guess` -echo "running configure" -$srcdir/configure -C --build=$build --host=$host "$@" +#echo "running configure" +#$srcdir/configure -C --build=$build --host=$host "$@" exit $? diff --git a/choose.cc b/choose.cc index 4fa0c74..e975bd8 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", "Purger 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 extern ThreeBarProgressPage Progress; @@ -130,6 +137,15 @@ ChooserPage::~ChooserPage () } static ListView::Header pkg_headers[] = { +#ifdef LANG_FR + {"Paquet", LVCFMT_LEFT, ListView::ControlType::text}, + {"Actuel", LVCFMT_LEFT, ListView::ControlType::text}, + {"Nouveau", LVCFMT_LEFT, ListView::ControlType::popup}, + {"Src?", LVCFMT_LEFT, ListView::ControlType::checkbox}, + {"Catégories", LVCFMT_LEFT, ListView::ControlType::text}, + {"Taille", LVCFMT_RIGHT, ListView::ControlType::text}, + {"Description", LVCFMT_LEFT, ListView::ControlType::text}, +#else {"Package", LVCFMT_LEFT, ListView::ControlType::text}, {"Current", LVCFMT_LEFT, ListView::ControlType::text}, {"New", LVCFMT_LEFT, ListView::ControlType::popup}, @@ -137,6 +153,7 @@ static ListView::Header pkg_headers[] = { {"Categories", LVCFMT_LEFT, ListView::ControlType::text}, {"Size", LVCFMT_RIGHT, ListView::ControlType::text}, {"Description", LVCFMT_LEFT, ListView::ControlType::text}, +#endif {0} }; @@ -262,9 +279,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 (); @@ -334,11 +359,25 @@ ChooserPage::OnActivate() packagedb::categoriesType::iterator it = db.categories.find("All"); if (it == db.categories.end ()) +#ifdef LANG_FR + /* Ugly LANG_FR case: file must be ISO-8859 for most of the strings except the following + where the special characters are to be defined as 16-bit Unicode character inline */ + listview->setEmptyText("Pas de paquet trouv\u00E9."); +#else listview->setEmptyText("No packages found."); +#endif if (source == IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + listview->setEmptyText("Rien \u00E0 t\u00E9l\u00E9charger."); +#else listview->setEmptyText("Nothing to download."); +#endif else +#ifdef LANG_FR + listview->setEmptyText("Rien \u00E0 installer ou mettre \u00E0 jour."); +#else listview->setEmptyText("Nothing to install or update."); +#endif chooser->build_category_tree(); chooser->init_headers(); diff --git a/confirm.cc b/confirm.cc index d0a8420..7778c71 100644 --- a/confirm.cc +++ b/confirm.cc @@ -73,12 +73,20 @@ ConfirmPage::OnActivate() packageversion pv = i->version; packagemeta *pkg = db.findBinary (PackageSpecification (pv.Name ())); +#ifdef LANG_FR + line += "Désinstalle "; +#else line += "Uninstall "; +#endif line += i->version.Name(); line += " "; line += i->version.Canonical_version(); if (pkg && pkg->desired) +#ifdef LANG_FR + line += " (ajouté automatiquement)"; +#else line += " (automatically added)"; +#endif line += "\r\n"; erase.push_back (line); } @@ -101,16 +109,28 @@ ConfirmPage::OnActivate() { std::string line; if (source != IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + line += "Installe "; +#else line += "Install "; +#endif else +#ifdef LANG_FR + line += "Télécharge "; +#else line += "Download "; +#endif line += i->version.Name(); line += " "; line += i->version.Canonical_version(); if (i->version.Type() == package_source) line += " (source)"; else if (pkg && pkg->desired != pv) +#ifdef LANG_FR + line += " (ajouté automatiquement)"; +#else line += " (automatically added)"; +#endif line += "\r\n"; install.push_back (line); } @@ -122,7 +142,11 @@ ConfirmPage::OnActivate() // 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 88ced38..ee7cfb7 100644 --- a/crypto.cc +++ b/crypto.cc @@ -34,6 +34,10 @@ #define CRYPTODEBUGGING (0) #endif +#ifndef SECONDKEY +#define SECONDKEY (1) +#endif + #define ERRKIND note #if CRYPTODEBUGGING #define MESSAGE LogBabblePrintf @@ -42,6 +46,21 @@ #endif /* 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"); +static BoolOption EnableOldKeysOption (false, '\0', "old-keys", + "Utiliser les anciennes clés de cygwin.com", + BoolOption::BoolOptionType::pairedAble); +#else static StringArrayOption ExtraKeyOption ('K', "pubkey", "URL or absolute path of extra public key file (RFC4880 format)"); @@ -55,12 +74,20 @@ static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", static BoolOption EnableOldKeysOption (false, '\0', "old-keys", "Enable old cygwin.com keys", BoolOption::BoolOptionType::pairedAble); +#endif /* Embedded public half of Cygwin 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 + static const char *cygwin_old_pubkey_sexpr = #include "cyg-old-pubkey.h" ; @@ -707,6 +734,26 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) LogBabblePrintf ("key:%d\n'%s'", n, sexprbuf); #endif /* CRYPTODEBUGGING */ +#if SECONDKEY + /* Next build the second built-in key. */ + gcry_sexp_t dsa_key_second; + 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."); + } + else + { + keys_to_try.push_back (key_info("cygwin", true, dsa_key_second)); + } + + #if CRYPTODEBUGGING + char sexprbuf_second[GPG_KEY_SEXPR_BUF_SIZE]; + n = gcry_sexp_sprint (dsa_key_second, GCRYSEXP_FMT_ADVANCED, sexprbuf_second, GPG_KEY_SEXPR_BUF_SIZE); + LogBabblePrintf ("key:%d\n'%s'", n, sexprbuf_second); + #endif /* CRYPTODEBUGGING */ +#endif + /* If not disabled, also try the old built-in key */ gcry_sexp_t cygwin_old_key; if (EnableOldKeysOption) 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 29dbf63..b4d5184 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: @@ -172,7 +178,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); @@ -200,8 +210,13 @@ save_icon (std::string &iconpath, const char *resource_name) #define TARGET "/bin/mintty" #define DEFAULTICON "/Cygwin.ico" #define TERMINALICON "/Cygwin-Terminal.ico" +#ifndef LANG_FR #define TERMINALTITLE (is_64bit ? "Cygwin64 Terminal" \ : "Cygwin Terminal") +#else +#define TERMINALTITLE (is_64bit ? "Terminal Cygwin64" \ + : "Terminal Cygwin") +#endif static void do_desktop_setup () @@ -257,8 +272,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 e1512b4..9d0ea1e 100644 --- a/download.cc +++ b/download.cc @@ -278,7 +278,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 78b7ce7..038b3a8 100644 --- a/geturl.cc +++ b/geturl.cc @@ -62,10 +62,17 @@ init_dialog (const std::string &url, int length) std::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 (); } @@ -91,14 +98,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); } @@ -221,7 +237,11 @@ get_url_to_file (const std::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 ee9c648..cf173e4 100644 --- a/ini.cc +++ b/ini.cc @@ -61,8 +61,13 @@ 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"); +static BoolOption NoVersionCheckOption (false, '\0', "no-version-check", "Ne pas vérifier si une version plus récente de setup est disponible"); +#else static BoolOption NoVerifyOption (false, 'X', "no-verify", "Don't verify setup.ini signatures"); static BoolOption NoVersionCheckOption (false, '\0', "no-version-check", "Suppress checking if a newer version of setup is available"); +#endif class GuiParseFeedback : public IniParseFeedback { @@ -71,7 +76,11 @@ public: { Progress.SetText2 (""); Progress.SetText3 (""); +#ifdef LANG_FR + Progress.SetText4 ("Avancement :"); +#else Progress.SetText4 ("Progress:"); +#endif yyerror_count = 0; yyerror_messages.clear (); @@ -98,7 +107,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 (""); filename = name; @@ -109,7 +122,11 @@ 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 note_error(int lineno, const std::string &error) { @@ -130,11 +147,19 @@ public: } virtual void show_errors () const { +#ifdef LANG_FR + mbox (Progress.GetHWND(), yyerror_messages.c_str (), "Erreurs d'analyse", 0); +#else mbox (Progress.GetHWND(), yyerror_messages.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 d1fb2dd..86235b4 100644 --- a/install.cc +++ b/install.cc @@ -66,9 +66,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; @@ -148,7 +155,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; @@ -163,7 +174,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; @@ -271,7 +286,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); @@ -322,20 +341,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 @@ -427,14 +462,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; } @@ -442,7 +485,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; } @@ -486,7 +533,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; @@ -498,7 +549,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; } @@ -601,7 +656,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; @@ -616,6 +675,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" @@ -624,6 +692,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); } } @@ -686,7 +755,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, @@ -697,7 +770,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); } @@ -752,21 +829,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: @@ -818,7 +912,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) { @@ -941,8 +1040,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 b3854a8..b426cb7 100644 --- a/main.cc +++ b/main.cc @@ -86,6 +86,17 @@ std::string SetupIniDir; 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); +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); static BoolOption UnattendedOption (false, 'q', "quiet-mode", "Unattended setup mode"); static BoolOption PackageManagerOption (false, 'M', "package-manager", "Semi-attended chooser-only mode"); @@ -95,6 +106,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 @@ -157,10 +169,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 @@ -217,6 +236,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++) @@ -251,10 +274,17 @@ WinMain (HINSTANCE h, else { char buff[80 + ((std::string) Arch).size ()]; +#ifdef LANG_FR + sprintf (buff, "Option invalide pour --arch: « %s »", + ((std::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\"", ((std::string) Arch).c_str ()); fprintf (stderr, "*** %s\n", buff); mbox (NULL, buff, "Invalid option", MB_ICONEXCLAMATION | MB_OK); +#endif exit (1); } @@ -315,8 +345,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 fe61b77..1c4cb18 100644 --- a/nio-ie5.cc +++ b/nio-ie5.cc @@ -35,7 +35,11 @@ #define IMAGE_FILE_MACHINE_ARM64 0xAA64 #endif +#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) @@ -211,7 +215,11 @@ try_again: // show errors apart from file-not-found (e doesn't contain the // response code so we have to resort to looking at the message) if (strncmp("550", buf, 3) != 0) +#ifdef LANG_FR + mbox (0, buf, "Erreur Internet", MB_OK); +#else mbox (0, buf, "Internet Error", MB_OK); +#endif for (unsigned int i = 0; i < l; i++) if (buf[i] == '\n' or buf[i] == '\r') 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 61b7620..50fe2b7 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -43,10 +43,17 @@ #include "Exception.h" #include "resource.h" +#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; /*****************/ @@ -429,20 +436,40 @@ packagemeta::action_caption () const switch (_action) { case Uninstall_action: +#ifdef LANG_FR + return "Désinstalle"; +#else return "Uninstall"; +#endif case NoChange_action: if (!desired) +#ifdef LANG_FR + return "Passe"; +#else return "Skip"; +#endif if (desired.sourcePackage() && srcpicked()) /* FIXME: Redo source should come up if the tarball is already present locally */ return "Source"; +#ifdef LANG_FR + return "Garde"; +#else return "Keep"; +#endif case Reinstall_action: +#ifdef LANG_FR + return packagedb::task == PackageDB_Install ? "Réinstalle" : "Récupère"; +#else return packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve"; +#endif case Install_action: return desired.Canonical_version (); } +#ifdef LANG_FR + return "Inconnu"; +#else return "Unknown"; +#endif } void @@ -493,16 +520,26 @@ packagemeta::list_actions(trusts const trust) // build the list of possible actions ActionList *al = new ActionList(); +#ifdef LANG_FR + al->add("Désinstalle", (int)Uninstall_action, (_action == Uninstall_action), bool(installed)); + al->add("Passe", (int)NoChange_action, (_action == NoChange_action) && !installed, !installed); +#else al->add("Uninstall", (int)Uninstall_action, (_action == Uninstall_action), bool(installed)); al->add("Skip", (int)NoChange_action, (_action == NoChange_action) && !installed, !installed); +#endif std::set::iterator i; for (i = versions.begin (); i != versions.end (); ++i) { if (*i == installed) { +#ifdef LANG_FR + al->add("Garde", (int)NoChange_action, (_action == NoChange_action), TRUE); + al->add(packagedb::task == PackageDB_Install ? "Réinstalle" : "Récupère", +#else al->add("Keep", (int)NoChange_action, (_action == NoChange_action), TRUE); al->add(packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve", +#endif (int)Reinstall_action, (_action == Reinstall_action), TRUE); } else 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 b4e0981..dfd159b 100644 --- a/postinstall.cc +++ b/postinstall.cc @@ -145,7 +145,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 a9aab21..6272b9c 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 @@ -93,10 +97,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; @@ -163,7 +174,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 2165545..4712892 100644 --- a/res.rc +++ b/res.rc @@ -15,6 +15,12 @@ #define SETUP_HEADICON_X (SETUP_STANDARD_DIALOG_W - 27) +#ifndef LANG_FR +///////////////////////////////////////////////////////////////////////////// +// +// English (en_US) resources +// + LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US ///////////////////////////////////////////////////////////////////////////// @@ -330,7 +336,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 | @@ -504,7 +510,6 @@ END // // Manifest // - CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup.exe.manifest" ///////////////////////////////////////////////////////////////////////////// @@ -608,3 +613,592 @@ BEGIN IDS_INSTALLEDB_VERSION "Unknown INSTALLED.DB version" IDS_NO_MIRROR_LST "Could not download mirror sites list" 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 + 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." + "Les pages suivantes vont vous guider durant l'installation. " + "\r\n\r\n" + "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." + "\r\n\r\n" + "Redémarrez ce programme ultérieurement pour ajouter, enlever ou " + "mettre à jour des paquets si nécessaire.",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-2020",IDC_SPLASH_COPYR,115,130,195,8 + LTEXT "http://www.cygwin.com/",IDC_SPLASH_URL,115,142,90,8 + LTEXT "Version française ®2004-2020 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_CHOOSE_LIST, WC_LISTVIEW, LVS_NOSORTHEADER | LVS_REPORT | LVS_SINGLESEL | WS_TABSTOP, + 7, 47, SETUP_STANDARD_DIALOG_W - 14, 120, WS_EX_CLIENTEDGE + 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,15 + PUSHBUTTON "&Continuer",IDCONTINUE,177,112,55,15 +END + +///////////////////////////////////////////////////////////////////////////// +// +// Manifest +// +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup_fr.exe.manifest" + +///////////////////////////////////////////////////////////////////////////// +// +// 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" +IDI_TREE_PLUS ICON DISCARDABLE "tree-plus.ico" +IDI_TREE_MINUS ICON DISCARDABLE "tree-minus.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" + +///////////////////////////////////////////////////////////////////////////// +// +// 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és 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 : erreur %d %s de la librairie gcrypt" + 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-vous 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" + IDS_NO_MIRROR_LST "Impossible de télécharger la liste des sites miroirs" +END + +#endif // French (fr_FR) resources + diff --git a/resource.h b/resource.h index a98924c..59fa24f 100644 --- a/resource.h +++ b/resource.h @@ -173,3 +173,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 cf2bc32..8920f16 100644 --- a/root.cc +++ b/root.cc @@ -38,7 +38,11 @@ #include "getopt++/StringOption.h" +#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 }, @@ -105,7 +109,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); @@ -211,6 +219,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" @@ -222,6 +243,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/setup_fr.exe.manifest b/setup_fr.exe.manifest new file mode 100755 index 0000000..67ca3d7 --- /dev/null +++ b/setup_fr.exe.manifest @@ -0,0 +1,47 @@ + + + + Outil installation Cygwin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + diff --git a/site.cc b/site.cc index d5cd1e0..43570b1 100644 --- a/site.cc +++ b/site.cc @@ -89,9 +89,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) @@ -461,8 +467,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 73cdd9c..9646496 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_TOP }, { 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,20 @@ 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()); +#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); +#else makeClickable (IDC_SPLASH_URL, "https://cygwin.com"); +#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.29.0